GrafanaにはAnnotationsという、イベントをグラフ上へ表示する機能があります。
http://grafana.org/docs/features/annotations/
Annotationsの取得元はいくつか利用可能ですが、データソースとしてGraphiteのEvent
を使う方法について解説します。
Event
GraphiteにはEventと言う情報を保存する仕組みがあります。
しかし探してみても、データを格納する方法については公式ドキュメントで見つからない。
ただ、データの取り出し方については書かれています。
http://graphite.readthedocs.org/en/stable/functions.html?highlight=event#graphite.render.functions.events
こちらのブログで登録方法が書かれているので、そちらを参考に進めます。
Eventの登録
最低限のデータで登録する場合は、以下の様にデータをPostしてあげればいいです。
curl -X POST "http://graphitehost.com/events/" -d '{"what": "fugafuga", "tags": "hoge"}'
Eventの情報が格納されるテーブルはevents_eventで、このテーブルの構造を見ると以下のように定義されてます。
CREATE TABLE "events_event" ( "id" integer NOT NULL PRIMARY KEY, "when" datetime NOT NULL, "what" varchar(255) NOT NULL, "data" text NOT NULL, "tags" varchar(255) NOT NULL );
テーブル構造から分かるように、さらにwhenとdataを指定することが可能です。
- whenは、デフォルトでシステム日付が設定されます
- dataは、デフォルトでからが設定されます
例えばこんな感じで
curl -X POST "http://graphitehost.com/events/" -d '{"what": "Deploy apps 5", "tags": "deploy", "data": "ここには長い文章が指定できます。"}'
Grafanaの設定
Graphiteに登録されているEventをグラフ上に表示するには、Dashboardの設定から登録します。
Dashboardで設定するように、グラフ単位では指定できないみたいです。
- Name: Annotationの名称
- Datasource: Graphiteのデータソース
- Graphite event tags: イベントを登録した時のtag名
先ほどのdataに指定した場合は、以下のように表示されます。
Dashboardには複数のAnnotationが登録でき、チェックボックスのON/OFFで表示非表示の切り替えができるので、デプロイ、サーバ追加と言った複数のイベントを登録して表示することで、どのような出来事がきっかけでリソースに変化があったかが一目瞭然となります。