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

Posted on 2018/02/25

ToC

Grafanaとは

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

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

/method/data-analysis/img/grafana-datasource_hu8c984b087630c44f8dc91ad1fbcddfb6_481103_600x0_resize_lanczos_3.png

インストール

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 のようです。

/method/data-analysis/img/grafana-login_hu77045940b83dc0095e6475a393f90fdc_111781_600x0_resize_lanczos_3.png

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

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

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

/method/data-analysis/img/grafana-lambda_hu1d3502d8b6960cc6c432479f225cb0d3_246408_600x0_resize_lanczos_3.png

バックアップとリストア

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

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

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

Enjoy

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


参照

Grafana Labs Grafana Labs - Lambda Dashboard


[amazon_link asins=‘477419218X,4774165433,B0793JRHYC,4774164240’ template=‘ProductCarousel’ store=‘lunalab-22’ marketplace=‘JP’ link_id=‘c14df4bb-0f4d-11e8-af3f-9dfe05a9ec6a’]