sessionize
sessionize operator を使用すると (1 つのシステムで生成された) 1 件のログ メッセージから抽出した値を使用して、他のシステムで生成されたログ メッセージで関連する値を検索できます。sessionize を実行すると、これらの関連イベントが同じページに表示されます。繋ぎ合わされたログのスレッドは「セッション」と呼ばれます。
使用事例によっては、join operator も使用でき、こちらの方がより適切で使いやすい場合もあります。
たとえば、分散システムで入力される userRequestId の値が Service、Stream、そして Config というシステムに渡されるとします。
各システムはログ メッセージを生成するため、障害が発生したポイントを特定できます。Service マシンからのログ ファイルから userRequestID の値を取得し、serviceSessionId、streamRequestId、そして configSessionId の値も取得しています。sessionize を使用することで、これらの別々のログを繋ぎ合わせ、障害が発生した場所を特定することができます。
構文
sessionize ("<anchor pattern1>") as (<alias list1>), ("<anchor pattern2>") as (<alias list2>)
anchor pattern は、parse anchor 式と同じですが、前の式から ($variableName
を使用して) 変数を受け取ることができます。
ルール
- sessionize operator の後には、複数のアンカ式を指定します。
- 各アンカ式を使用して、一致するログから 1 つまたは複数の変数を抽出できます。
- 抽出した変数を $variableName 表記で使用することで、同じ変数を含む 2 番目のメッセージと結合することができます。
trace operator で関連セッションを検索した後で、sessionize operator を使用して結果を絞り込むことができます。
例
Windows イベントの中で次の 2 つに着目するとします。
- ユーザのログオフ
- セッションの再開
これら 2 つのイベントにより、特定の Windows マシン、ドメイン、またはログイン ID にどの程度の問題が起きているかを調べることができます。
次の例で:
_sourceCategory=OS/Windows
| sessionize "ComputerName = \"*\";\n\tEventCode = 4778;*Account Name:\t\t*\r*Account Domain:\t\t*\r*Logon ID:\t\t*\r" as (computerName,_11,userName,_u1,domain,_d1,logonID),
"ComputerName = \"$computerName\";\n\tEventCode = 4779;*Account Name:\t\t$userName\r*Account Domain:\t\t$domain\r*Logon ID:\t\t*\r" as (_event2,_u2,_d2,_21)
- ログを関連付ける検索条件を指定します。この例では、すべての Windows ログの _sourceCategory を使用します。
- 比較したいセッションに関連した情報を抽出します。この例では、Windows の切断イベントであるコード 4779 を再接続イベントの 4778 と比較し、切断されたユーザが再接続できたかどうかを確認します。
次のような結果が返されます。