Grafanaでダッシュボードの構築

運用サービスや運用環境が増えて、管理対象の数が増えてくるとどうしても「エラーではないのだけど、ちょっと調子がおかしい」という個別の状況を確認するのが難しくなってきます。
すべてを確認するのは難しいかもしれませんが、「ポイントとなる重要なメトリクスだけでも、いい感じのダッシュボードにして参照することはできないか」と考えて、 Grafana を調査をはじめました。

Grafanaとは

各種のデータを可視化することができるアプリケーションです。時系列の情報を可視化できるのが強みです。
いろいろな可視化ツールがありますが、デフォルトでデータソースとして利用可能な対象が多いのが非常に便利です。
クラウド界隈でログの見える化といえば、メジャーどころの elasiticsearch や AWS Cloudwatch といったところから、MySQL や PostgresといったRDB系も利用ができます。また、プラグイン拡張により Zabbix などもデータソースとすることが可能なようです。
また、コミュニティーで作成したダッシュボードが共有されているので、多少の設定をするだけで見た目もそこそこカッコイイダッシュボードが作成できます。

インストール

Vagrantを利用して、CentOS 7.2上で検証用の環境を作成しました。
マニュアルも非常に充実しているので、ほぼ迷うポイントはありません。
yumコマンドを利用してインストールすれば、いくつかの依存性のあるライブラリとともにインストールされます。

Vagrantで作成した環境という都合もあり、ポート番号を3000から8080に変更するひつようがあり、設定ファイル( /etc/grafana/grafana.ini )も少しだけ変更しました。
各種の設定変更もかんたんにできます。

# インストール
sudo yum install -y https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-4.6.3-1.x86_64.rpm

# 設定ファイルの書き換え
sudo sed -i -e 's/\;http_port = 3000/http_port = 8080/' /etc/grafana/grafana.ini
sudo sed -i -e 's/\;protocol = http/protocol = http/' /etc/grafana/grafana.ini

# サービスの自動起動設定と初回起動
sudo systemctl enable grafana-server
sudo systemctl start grafana-server

初期の管理者ユーザー名とパスワードは、 admin のようです。

AWS Cloudwatch ダッシュボードを設定

ログインができたので、早速ダッシュボードを作ってみます。
まずはDataSourceとしてAWS Cloudwatchを設定しました。AccessKeyとSecretを入力して接続テストをすれば良いだけです。

AWSでインスタンスを立てて実行している場合には、ServerRoleやAssumeRoleを利用した接続も大丈夫なようです。
その後、手始めにDashboardをImportすると完成です。
今回は AWS Lambda のダッシュボードをインポートしてみました。本当に数ステップでここまでできてしまうので、感動です。
もちろんDataSourceもダッシュボードもカスタマイズ自由なので、データの見える化はバリバリ進みそうですね。

バックアップとリストア

運用を考えると重要なのは、サーバーの入れ替えの際にバックアップとリストアができるかという点になります。
せっかく作ったダッシュボードが、復元できないと少し悲しいことになってしまいます。

でも、心配は不要です。
grafanaの管理情報は、デフォルトでは、/var/lib/grafana/grafana.dbsqlite3 形式で管理されます。
このファイルをバックアップして、移行先のサーバーで展開することで復元が可能になります。
追加でインストールしたpluginも /var/lib/grafana/plugin に保存されているので、リストア時に配備すると復元されます。
それだけです。

また、管理情報は sqlite3 でなく外部に配置しておくことも可能なようです。
外部のデータベースサーバー(RDSのマネージドサービスなんかもいいですね)を設定することも可能です。ロードバランサでgrafanaをスケールアウト構成とした場合には、セッション情報等も保存されるようですね。

Enjoy

インタラクティブなダッシュボードが、非常に簡単に作成できました。
わたしの一番オススメ機能は、Dashboard Playlist機能です。大型ディスプレイでDashboardが数分ごとに切り替える(そうです。アレです)ものができてしまうので、運用上のポイントとなる重要なメトリクスが知らず知らずのうちにチームメンバーが確認してくれるようになります。
その他にもアラート機能というものもあるので、もう少し機能の深掘りをしてみる必要がありそうです。


参照

Grafana Labs
Grafana Labs – Lambda Dashboard