0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【データ収集ルール初級者向け】私が良く使うTransformKQL実装のパターン

Last updated at Posted at 2025-03-27

初めに

TransformKQLについて簡潔にまとまっているドキュメントが少ないので、ここに簡単に残しておきます。始めてAzureでデータ収集ルール(DCR)の構築をする方等の参考になれば幸いです。

目次

基本の構成パターン

taransformKQLにおける基本の構成パターンはこんな感じが使いやすいです。

基本の構成
source
| parse RawData with <ここに分割ルールを記載>
| where <ここに収集したい条件を記載>
| project TimeGenerated, RawData, Computer, FilePath, <その他列>

parse

ここで、文字列の分割ルールを記載していきます。
詳しくは以下参考ドキュメントです。

以下のように公式ドキュメントに記載のある通り、以下のように記載することで正規表現を使用することもできます。

parse句での正規表現
parse kind=regex RawData with <正規表現>

しかし、私はtransformKQLで使用するなら「simple」一択だと思っています。
parseを利用する場合はLogAnalyticsへ格納するログフォーマットの型が大方決まっています。そのため、最も厳密に制御するsimpleを使用するのが良いです。
公式ドキュメント内にサンプルがいくつかあるので、サンプルをみて勉強しましょう。

where句

Alertだけ格納したい場合や特定のEventIDのみ格納したい時に使えます。SQLのwhere句と用途は変わらないので、詳しい説明は割愛します。
詳しくは以下参考ドキュメントです。

where句の強みは検索列として「*」が使用できる点と「contains」や「has」といったあいまいな表現での検索ができます。例えば以下のように記載しておくだけで、メッセージのどこかにErrorという文言があると取得するように制御ができます。

where句
source
| where * contains "ERROR"

project句

これは私の理解ですが、project句はSQLでいうSELECT句と近いものだと理解しています。
ただし、文末に入れることが多い点はSELECT句との違いでです。
project句内に記載する列名は格納先のLog Analytics Workspaceの列名と合わせましょう。
あと、parse句で分けた列を合算いて計算して格納したい場合にはこの中で数式を記載できます。
こんな感じです。

project句
source
| parse RawData with EventID "," countA "," countB
| project EventID, Totalcount = countA + countB 

一応、こちらも公式ドキュメントを載せておきます。

最後に

私はこのパターンが基本パターンだと考えていますが、他にもsplitを使ってcsvを上手く切り分けたりextend句を利用して可変的なログを取り込んだりする設計もできます。
皆さんでいろいろと試してみて下さい。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?