先月GrafanaでDockerの監視をする記事を投稿しましたが、そもそもGrafanaってなんですのという方もいるかと思われます。
投稿の順番があべこべにはなりますが、今回はGrafanaの基本的な役割、Grafanaに何ができるのか、なぜGrafanaが良いのかということを書いていこうと思います。
Grafanaって何❓
Grafanaを一言で表すと「統合運用監視ソフトウェア」です。有名どころだとZabbixが競合として挙げられます。
蓄積された時系列データを集計し、グラフとして可視化する、或いはそうしたグラフを集約してダッシュボードを構築するというのが主要な利用方法の一つです。
データ可視化(ダッシュボード構築)📈
時系列データであれば何でもよく、CPU使用率からリクエスト数、エラー出力数、果ては1日の売上金など、時刻と値の組み合わせであれば何でもOKです。
CPU使用率なら単純にその値を取ったりしますが、例えばリクエスト数であれば、ログデータから単位時間毎のカウント数を計算するといった使い方になります。
可視化の方法も折れ線グラフやゲージ、ヒートマップ、テーブル形式など多様な見せ方ができます。
以前の記事で紹介したダッシュボードもその一例です。
注意点として、ZabbixのようにCPU使用率などの負荷測定をするエージェントは付属していません。
時系列データがまとめられたデータソースが別途用意されている環境の下で役割を発揮するソフトとなります。
アラート発報🔔
Grafanaは運用監視に必要不可欠であるアラート機能も有しています。
ダッシュボード構築において収集したデータについて条件を指定し、アラートを発報させます。
アラートの通知先は結構広くカバーしており、EメールはもちろんTeamsやSlackにも対応しています。またWebhookにも対応しており、自前の通知機構を利用できます。
通知ルールにおいても、1回閾値超えたらアラートとする他にも、直近5分間のうちに3回超過でアラートというように、自前で作ろうとすると面倒な機構も簡単に用意できます。(1年前に知りたかった。本当に面倒だったんですよね…)
稼働環境について🖥
GrafanaはGrafana Cloudという名称でSaaSとして提供されています。
一方、Grafana OSSとしてオンプレミスで動作するソフトウェアも提供されています。
用途に合わせて適切な方を選ぶと良いと思います。筆者の場合、社内からシステム監視する業務ではGrafana OSSを導入していました。
Grafanaを使う利点
他の運用監視ツールを差し置いて使う理由ですね。
ダッシュボードの柔軟性が高い
Grafanaは「可視化」の機能にこだわっているようで、複数パネルを好きなレイアウトで配置できます。ドラッグで大きさ変えたり、凡例の場所変えたり色々。
グラフに注釈を付けて共有できる
例えば特定の時間のピークに何か原因があるとわかった時、グラフの該当部分をクリックして注釈(annotation)を残すことができます。
また、特定の期間のスナップショットを残すこともできます。あまりに古い時系列データはDBから削除または退避させられることがありますが、スナップショットを残せばDBの制約なく保存できます。
何でも(強引に)データ変換できちゃう
例えば直近30分の最大値を表示させるとか、サービス毎に最新のステータスを表示するとか、複数クエリのデータをマージして処理するとか、etc…
運用監視にありがち(?)な無茶振りクエリですが、Grafanaはある程度手伝ってくれます。
取得した元データに対しクエリ変換(Transformation)の機能を使って、所謂”GROUP BY”で集約したり、余計なフィールドを切り落としたり、リネームしたり、多彩な変換が可能です。
これらの変換は1つのパネル内で連続適用でき、必要なデータだけ抜き出して綺麗に見せるといった使い方ができます。
多機能な反面、ユーザが混乱しやすい部分でもあり、パズル的な試行錯誤が必要となります(経験談)。
が、使いこなせるとGrafana面白い!と感じると思います。多分。
最後に
可視化のところばかり褒めてますが、アラートも十分使える機能です。
自前のシステムがないので今回はテキスト主体の記事となりましたが、公式サイトの中程からあるダッシュボードの構築例をぜひ見てみてください。何ができるかのイメージが沸くと思います。