Splunk から Kusto クエリ言語へのマップ

この記事の目的は、Splunk を使い慣れているユーザーが、Kusto でログ クエリを記述するための Kusto クエリ言語を学習するのを支援することです。 主な違いと類似点を強調するために、2 つの間で直接比較が行われたので、既存の知識を基に構築できます。

構造と概念

次の表は、Splunk ログと Kusto ログの概念とデータ構造を比較しています。

概念 Splunk Kusto 解説
デプロイ ユニット cluster cluster Kusto では、任意のクラスター間クエリを使用できます。 Splunk ではできません。
データ キャッシュ バケット キャッシュポリシーと保持ポリシー データの期間とキャッシュ レベルを制御します。 この設定は、クエリのパフォーマンスとデプロイのコストに直接影響します。
データの論理パーティション インデックス (index) database データの論理的な分離を可能にします。 どちらの実装でも、これらのパーティション間の和集合と結合が可能です。
構造化イベント メタデータ 該当なし table Splunk では、イベント メタデータの概念が検索言語に公開されるのではありません。 Kusto ログには、列を含むテーブルの概念があります。 各イベント インスタンスは行にマップされます。
データ レコード イベント 用語の変更のみです。
データ レコード属性 フィールド column Kusto では、この設定はテーブル構造の一部として事前に定義されています。 Splunk では、イベントごとに固有のフィールドのセットがあります。
types データ型 データ型 Kusto データ型は列に設定されているので、より明示的です。 どちらも、データ型と、JSON のサポートを含む、およそ同等のデータ型のセットを動的に使用できます。
クエリと検索 検索 query 概念は基本的に、Kusto と Splunk の間で同じです。
イベント インジェスト時間 システム時刻 ingestion_time() Splunk では、各イベントは、イベントのインデックスが作成された時刻のシステム タイムスタンプを取得します。 Kusto では 、ingestion_time() 関数を介して参照できるシステム列を公開する ingestion_time というポリシー を定義 できます。

関数

次の表では、Splunk 関数と同等の Kusto の関数を指定します。

Splunk Kusto 解説
strcat strcat() (1)
split split() (1)
if iff() (1)
tonumber todouble()
tolong()
toint()
(1)
upper
lower
toupper()
tolower()
(1)
replace replace() (1)
また、両方の製品 replace() で 3 つのパラメーターを受け取りますが、パラメーターは異なっています。
substr substring() (1)
Splunk では 1 から始まるインデックスを使用することにも注意してください。 Kusto では、0 から始るインデックスがメモされます。
tolower tolower() (1)
toupper toupper() (1)
match matches regex (2)
regex matches regex Splunk では、regex は演算子です。 Kusto では、リレーショナル演算子です。
searchmatch == Splunk の searchmatch では、厳密な文字列を検索できます。
random rand()
rand(n)
Splunk の 関数は、0 ~ 231-1 の数値を返します。 Kusto の は、0.0 から 1.0 の間、またはパラメーターが指定されている場合は 0 から n-1 の間の数値を返します。
now now() (1)
relative_time totimespan() (1)
Kusto では、Splunk の と同等の は relative_time(datetimeVal, offsetVal) です datetimeVal + totimespan(offsetVal)
たとえば、 は search | eval n=relative_time(now(), "-1d@d") になります ... | extend myTime = now() - totimespan("1d")

(1) Splunk では、 演算子を使用して関数が呼び出 eval されます。 Kusto では、 または の一部として使用 extend されます project
(2) Splunk では、 演算子を使用して関数が呼び出 eval されます。 Kusto では、 演算子と一緒に使用 where できます。

オペレーター

次のセクションでは、Splunk と Kusto でさまざまな演算子を使用する方法の例を示します。

注意

次の例では、Splunk フィールドは Kusto のテーブルにマップされ、Splunk の既定のタイムスタンプは rule Logs Analytics 列にマップ ingestion_time() されます。

Splunk では、search キーワードを省略し、引用符なしの文字列を指定することができます。 Kusto では、各クエリを で開始する必要があります。引用符で囲まれた文字列は列名であり、参照値は引用符で囲まれた find 文字列である必要があります。

製品 演算子
Splunk search search Session.Id="c8894ffd-e684-43c9-9125-42adc25cd3fc" earliest=-24h
Kusto find find Session.Id=="c8894ffd-e684-43c9-9125-42adc25cd3fc" and ingestion_time()> ago(24h)

Assert

Kusto ログ クエリは、適用される表形式の結果セットから filter 開始されます。 Splunk では、フィルター処理は現在のインデックスに対する既定の操作です。 whereSplunk で 演算子を使用できますが、お勧めしません。

製品 演算子
Splunk search Event.Rule="330009.2" Session.Id="c8894ffd-e684-43c9-9125-42adc25cd3fc" _indextime>-24h
Kusto where Office_Hub_OHubBGTaskError
| where Session_Id == "c8894ffd-e684-43c9-9125-42adc25cd3fc" and ingestion_time() > ago(24h)

検査 のために n つのイベントまたは行を取得する

Kusto ログ クエリでは、 のエイリアス take として もサポートされています limit 。 Splunk では、結果が順序付けされている場合、 head は最初の n 件の結果 head します。 Kusto では、 は順序付けされませんでしたが、見つかった最初の limitlimit 行が返されます。

製品 演算子
Splunk head Event.Rule=330009.2
| head 100
Kusto limit Office_Hub_OHubBGTaskError
| limit 100

フィールドまたは列で 並べ 替えされた最初の n つのイベントまたは行を取得する

下部の結果については、Splunk では を使用します tail 。 Kusto では、 を使用して順序の方向を指定できます asc

製品 演算子
Splunk head Event.Rule="330009.2"
| sort Event.Sequence
| head 20
Kusto top Office_Hub_OHubBGTaskError
| top 20 by Event_Sequence

新しいフィールドまたは列を使用して結果セットを拡張する

Splunk には eval 関数がありますが eval 、Kusto の 演算子とは比較できません。 Splunk の 演算子と Kusto の 演算子はどちらも、スカラー関数と算術演算子 evalextend のみをサポートしています。

製品 演算子
Splunk eval Event.Rule=330009.2
| eval state= if(Data.Exception = "0", "success", "error")
Kusto extend Office_Hub_OHubBGTaskError
| extend state = iif(Data_Exception == 0,"success" ,"error")

名前の変更

Kusto では、 演算子 project-rename を使用してフィールドの名前を変更します。 演算子では project-rename 、フィールドに対して事前構築されている任意のインデックスをクエリで利用できます。 Splunk には、 rename 同じ操作を行う演算子があります。

製品 演算子
Splunk rename Event.Rule=330009.2
| rename Date.Exception as execption
Kusto project-rename Office_Hub_OHubBGTaskError
| project-rename exception = Date_Exception

結果とプロジェクションの書式設定

Splunk には、 に似た演算子が表示されません project-away 。 UI を使用してフィールドをフィルター処理できます。

製品 演算子
Splunk table Event.Rule=330009.2
| table rule, state
Kusto project
project-away
Office_Hub_OHubBGTaskError
| project exception, state

集計

使用可能な 集計関数の一覧 を参照してください。

製品 演算子
Splunk stats search (Rule=120502.*)
| stats count by OSEnv, Audience
Kusto summarize Office_Hub_OHubBGTaskError
| summarize count() by App_Platform, Release_Audience

Join

join Splunk には大きな制限があります。 サブクエリには 10,000 件の結果 (デプロイ構成ファイルに設定) という制限があり、使用できる結合の種類は限られています。

製品 演算子
Splunk join Event.Rule=120103* | stats by Client.Id, Data.Alias
| join Client.Id max=0 [search earliest=-24h Event.Rule="150310.0" Data.Hresult=-2147221040]
Kusto join cluster("OAriaPPT").database("Office PowerPoint").Office_PowerPoint_PPT_Exceptions
| where Data_Hresult== -2147221040
| join kind = inner (Office_System_SystemHealthMetadata
| summarize by Client_Id, Data_Alias)on Client_Id

並べ替え

Splunk では、昇順で並べ替えるには、 演算子を使用する必要 reverse があります。 Kusto では、先頭または末尾に null を置く場所の定義もサポートしています。

製品 演算子
Splunk sort Event.Rule=120103
| sort Data.Hresult
| reverse
Kusto order by Office_Hub_OHubBGTaskError
| order by Data_Hresult, desc

複数値の展開

複数値展開演算子は、Splunk と Kusto の両方で似ています。

製品 演算子
Splunk mvexpand mvexpand solutions
Kusto mv-expand mv-expand solutions

結果ファセット、興味深いフィールド

Azure portal での Log Analytics では、最初の列のみが展開されます。 すべての列は、API を介して利用します。

製品 演算子
Splunk fields Event.Rule=330009.2
| fields App.Version, App.Platform
Kusto facets Office_Excel_BI_PivotTableCreate
| facet by App_Branch, App_Version

重複排除

Kusto では、 を使用 summarize arg_min() して、選択するレコードの順序を逆にできます。

製品 演算子
Splunk dedup Event.Rule=330009.2
| dedup device_id sortby -batterylife
Kusto summarize arg_max() Office_Excel_BI_PivotTableCreate
| summarize arg_max(batterylife, *) by device_id

次の手順