次の方法で共有


Splunk から Kusto のチート シート

適用対象: ✅Microsoft FabricAzure データ エクスプローラーAzure MonitorMicrosoft Sentinel

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

構造と概念

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

概念 Splunk Kusto コメント
配備単位 クラスタ クラスタ Kusto では、任意のクロスクラスター クエリが許可されます。 Splunk ではできません。
データ キャッシュ buckets キャッシュと保持ポリシー データの期間とキャッシュ レベルを制御します。 この設定は、クエリのパフォーマンスとデプロイのコストに直接影響します。
データの論理パーティション インデックス データベース データの論理的な分離を許可します。 どちらの実装でも、これらのパーティション間でユニオンや結合を許可します。
構造化イベント メタデータ N/A テーブル Splunk では、イベント メタデータの概念は検索言語に公開されません。 Kusto ログには、列を含むテーブルの概念があります。 各イベント インスタンスは行にマップされます。
レコード イベント 用語のみが変更されます。
レコード属性 フィールド column Kusto では、この設定はテーブル構造の一部として事前に定義されています。 Splunk では、各イベントには独自のフィールド セットがあります。
datatype datatype Kusto データ型は列に設定されているため、より明示的です。 どちらも、JSON サポートを含め、データ型とほぼ同等のデータ型のセットを動的に操作できます。
クエリと検索 検索 クエリ 概念は基本的に Kusto と Splunk の間で同じです。
イベント取り込み時間 システム時刻 ingestion_time() Splunk では、各イベントは、イベントのインデックスが作成された時刻のシステム タイムスタンプを取得します。 Kusto では、ingestion_time() 関数を介して参照できるシステム列を公開する ingestion_time というポリシーを定義できます。

Functions

次の表は、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 でさまざまな演算子を使用する方法の例を示します。

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

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

Product Operator Example
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)

Filter

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

Product Operator Example
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 個の結果を返します。 Kusto では、 limit は順序付けされませんが、見つかった最初の n 行が返されます。

Product Operator Example
Splunk head Event.Rule=330009.2
| head 100
Kusto limit Office_Hub_OHubBGTaskError
| limit 100

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

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

Product Operator Example
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 演算子の両方で、スカラー関数と算術演算子のみがサポートされます。

Product Operator Example
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 演算子があります。

Product Operator Example
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 演算子 があります

Product Operator Example
Splunk table Event.Rule=330009.2
| table rule, state
Kusto project Office_Hub_OHubBGTaskError
| project exception, state

Splunk では、 fields - コマンドを使用して、結果から除外する列を選択します。 Kusto には、同じ操作を行う project-away 演算子があります。

Product Operator Example
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 には大きな制限があります。 サブクエリの結果は 10,000 件に制限されており (デプロイ構成ファイルで設定)、使用できる結合フレーバーの数は限られています。

Product Operator Example
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

ソート

既定の並べ替え順は昇順です。 降順を指定するには、フィールド名の前に負符号 (-) を追加します。 Kusto では、先頭または末尾に null を配置する場所の定義もサポートされています。

Product Operator Example
Splunk sort Event.Rule=120103
| sort -Data.Hresult
Kusto order by Office_Hub_OHubBGTaskError
| order by Data_Hresult, desc

複数値の展開

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

Product Operator Example
Splunk mvexpand mvexpand solutions
Kusto mv-expand mv-expand solutions

結果ファセット、注目フィールド

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

Product Operator Example
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() を使用して、選択したレコードの順序を逆にすることができます。

Product Operator Example
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

タイムグラフ

Kusto と Splunk はどちらも、 timechart 演算子を使用して時間の経過と共にデータを視覚化します。 Splunk では、指定された時間間隔でデータを集計し、さまざまな統計関数で使用できます。 Kusto では、これに相当するものは、 summarize 関数と bin 関数の後に レンダリング タイムチャート 演算子を使用して実現されます。

Product Operator Example
Splunk timechart index=StormEvents
| where StartTime >= "2007-01-01" AND StartTime <= "2007-12-31" AND DamageCrops > 0
| bin span=7d StartTime
| stats count as EventCount by StartTime
| timechart span=7d count as EventCount
Kusto timechart StormEvents
| where StartTime between (datetime(2007-01-01) .. datetime(2007-12-31)) and DamageCrops > 0
| summarize EventCount = count() by bin(StartTime, 7d)
| render timechart