Splunk から Kusto のチート シート

この記事の目的は、Splunk を使い慣れているユーザーが、Kusto でログ クエリを記述するための Kusto クエリ言語を学習するのを支援することです。 既存の知識を活用できるように、2 つを直接比較して、主要な相違点と類似点を明らかにします。

構造と概念

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

概念 Splunk Kusto コメント
展開単位 cluster cluster Kusto では、任意のクロスクラスター クエリが可能です。 Splunk では行われません。
データ キャッシュ バケット キャッシュおよび保有ポリシー データの期間とキャッシュ レベルを制御します。 この設定は、クエリのパフォーマンスと展開のコストに直接影響します。
データの論理パーティション インデックス (index) database データの論理的な分離を可能にします。 どちらの実装でも、これらのパーティション間の和集合と結合が可能です。
構造化されたイベント メタデータ 該当なし table Splunk では、イベント メタデータの概念が検索言語に公開されません。 Kusto ログには、列を含むテーブルの概念があります。 各イベント インスタンスは行にマップされます。
レコード (record) イベント 用語の変更のみです。
record 属性 フィールド 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_string()replace_strings() または replace_regex() (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 でさまざまな演算子を使用する方法の例を示します。

Note

次の例では、Splunk のフィールド rule が Kusto のテーブルに、Splunk の既定のタイムスタンプが Log 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)

フィルター

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

製品 演算子
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 のログ クエリでは、limit に対する別名として take もサポートされます。 Splunk では、結果が順序付けされている場合、head は最初の n 個の結果を返します。 Kusto では、limit は順序付けされませんが、見つかった最初の n 行を返します。

製品 演算子
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 関数がありますが、Kusto の eval 演算子と同等ではありません。 Splunk の eval 演算子と Kusto の extend 演算子はどちらも、スカラー関数と算術演算子のみをサポートします。

製品 演算子
Splunk eval Event.Rule=330009.2
| eval state= if(Data.Exception = "0", "success", "error")
Kusto extend Office_Hub_OHubBGTaskError
| extend state = iff(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 では、table コマンドを使って、結果に含める列を選びます。 Kusto には、同じこととそれ以上のことを行う project 演算子があります。

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

Splunk では、field - コマンドを使って、結果から除外する列を選びます。 Kusto では、同じことを行うために project-away 演算子が用意されています。

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

集計

使用できる集計関数をまとめた一覧を参照してください。

Splunk の演算子 Splunk の例 Kusto の演算子 Kusto の例
stats search (Rule=120502.*)
| stats count by OSEnv, Audience
summarize Office_Hub_OHubBGTaskError
| summarize count() by App_Platform, Release_Audience
evenstats ...
| stats count_i by time, category
| eventstats sum(count_i) AS count_total by _time_
join T2
| join kind=inner (T1) on _time
| project _time, category, count_i, count_total

Join

Splunk の join には重要な制限があります。 サブクエリには 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