適用対象: ✅Microsoft Fabric✅Azure データ エクスプローラー✅Azure Monitor✅Microsoft 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) |
upperlower |
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() 列にマップされます。
Search
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 |
関連コンテンツ
- Kusto クエリ言語のチュートリアルについて説明します。