Event annotation 機能ご存知ですか?


Splunk 7.x から追加された機能なのですが、Web UI の GUI から設定ができないというのがあり、なかなか利用されにくい機能かなと思います。
この機能は非常に便利で、例えば、リソースの利用状況が急上昇したときに、そのときに発生したイベントを時系列でグラフに表示してくれます。

例えば、Splunk の _internal インデックスには、Splunk の稼働情報が記録されています。
ログレベルが定義されており、INFO(情報)、WARM(警告)、ERROR(エラー)と言った形で、情報が記録されます。

以下の SPL で、時系列で、各ログレベルでの発生状況を視覚化します。

index=\_internal log_level=*
| timechart count by log_level

結果として、下記のようなチャートを描けます。(エリアチャートを利用)
このチャートを、”Splunk Internal Log” という名前で保存します。

これだと、ERROR が発生している場合、発生した時刻等が分かりづらいですよね。
こんなときに、Event Annotation の機能を使います。

今回は、log_level が ERROR のものをグラフ上に表示させたいので、それらの情報を抽出する SPL を定義します。

index=\_internal log_level="ERROR" 
| eval annotation_label = event_message 
| table _time annotation_label

ここでのミソは、annotaion_label を定義することです。
期待どおりに、イベントがテーブル形式で出力されたら、OK です。この SPL を作成したダッシュボードに追記していきます。

”Splunk Internal Log” を編集モードで開きます。
既定では、ユーザーインターフェースボタンがアクティブになっているので、ソースボタンをクリックします。
ダッシュボードのソースとして、XMLが表示されます。
今回作成済の<chart>タグ配下に、以下のタグを追記します。

<search type="annotation">
    <query>
        index=_internal log_level="ERROR" | eval annotation_label = event_message | table _time annotation_label 
    </query>
    <earliest>-24h@h</earliest>
    <latest>now</latest>
</search>

※ <earliest> タグと <latest> タグの値は、ベースとなるSPLで定義している値と同じものにします。

設定例:四角で囲ってあるところが追記した箇所

エラーも特にでないようであれば、保存します。
結果として、このような形で表示できます。
Annotation されている箇所にマウスカーソル合わせると、その時のイベントメッセージが表示されます。

最後に:
Splunkbase にある、Dashboard Example(https://splunkbase.splunk.com/app/1603/) にもサンプルがあるので、こちらも確認することをおすすめします。

Happy Splunking!