zabbixの情報を集計したものをGrafanaで確認する
なんでそんなことするの?
割と大きなシステムでは、リソース情報や統計情報を蓄積する際にもデータ量が膨大。
そして対策というか以下のような整理をすることになると思う。
[対策 or 整理]
1. 何もしない。(=集計クエリを投げて2時間ひたすら待つ。しかも長期間になるほど実行時間は長くなる)
2. 直近のデータだけzabbixに載せて、過去データはsplunkなどに回して確認する。
ここでシステムを運用する上で、とりあえずリソース情報だけでも以下の2点は押さえておきたい。
[要望]
1. 直近のリソースの変化(異常有無)
2. 長期のリソース傾向
要望1,2は対策1,2でそれぞれ確認することはできる。
ただし、問題1)zabbixもsplunkも大量のホストを確認するとなると最悪レベルにだるい。
すべてを一画面(スクロールはあり)で確認したくなる。
また、そのリソースが正常かを確認する方法として、「先週の同時間帯のリソースと
比較してどうか?」などが見たくなる。
このような場合、zabbixやsplunkでは、問題2)柔軟にグラフの表示を設定できない。
※もし出来るたらすみません。ただし対策2で上げたように、比較するデータは大体すでにzabbixにない
上記の問題1,2はGrafanaというツールを導入+集計データを別のデータベースにもつことで解決できる(予定)。 以下はGrafanaでの様子である。
上記ではわかりにくいが、問題1)を解決し、大量のリソースグラフを一覧で出すことができている。
※上記の図では、グラフが1つ(CPU使用率のみ)だが、ここにメモリ使用率等のグラフが並ぶイメージ
また、問題2)も、Grafanaに表示するデータはSQLで自在に指定できるので解決している。
下記では備忘録として、導入手順を記載する。
Grafana周りのトポロジー
※TODO:後で記載。AWS上でWebサーバ(Grafana)⇔RDS(mysql)の単純な構成。
導入手順
Grafanaの導入(Webサーバ:)
下記ブログの「ユーザー設定をする」まで実施
blog.serverworks.co.jp
集計用DBの準備(RDS, mysql)
mysqlにはWebサーバ上から遠隔でログイン
[ec2-user@udemy-aws-14days-web-1a ~]$ mysql -u xxxxx -p -h xxxxxxx.xxxxxxx.ap-northeast-1.rds.amazonaws. com Enter password: mysql> mysql> create database resource; : mysql> select *,from_unixtime(time_sec) from calc_resource; +------------+----------+----------+-------+-------------------------+ | time_sec | hostname | metric | value | from_unixtime(time_sec) | +------------+----------+----------+-------+-------------------------+ | 1546365600 | host1 | CPU Util | 20.00 | 2019-01-01 18:00:00 | | 1546452000 | host1 | CPU Util | 22.00 | 2019-01-02 18:00:00 | | 1546538400 | host1 | CPU Util | 25.00 | 2019-01-03 18:00:00 | | 1546624800 | host1 | CPU Util | 26.00 | 2019-01-04 18:00:00 | | 1546711200 | host1 | CPU Util | 27.00 | 2019-01-05 18:00:00 | | 1546797600 | host1 | CPU Util | 29.00 | 2019-01-06 18:00:00 | | 1546884000 | host1 | CPU Util | 25.00 | 2019-01-07 18:00:00 | | 1547056800 | host1 | CPU Util | 35.00 | 2019-01-09 18:00:00 | | 1547143200 | host1 | CPU Util | 50.00 | 2019-01-10 18:00:00 | | 1547229600 | host1 | CPU Util | 51.00 | 2019-01-11 18:00:00 | | 1547316000 | host1 | CPU Util | 52.00 | 2019-01-12 18:00:00 | | 1547402400 | host1 | CPU Util | 53.00 | 2019-01-13 18:00:00 | | 1547488800 | host1 | CPU Util | 53.00 | 2019-01-14 18:00:00 | | 1154636560 | host2 | CPU Util | 53.00 | 2006-08-03 20:22:40 | | 1546452000 | host2 | CPU Util | 53.00 | 2019-01-02 18:00:00 | | 1546538400 | host2 | CPU Util | 53.00 | 2019-01-03 18:00:00 | | 1546624800 | host2 | CPU Util | 53.00 | 2019-01-04 18:00:00 | | 1546711200 | host2 | CPU Util | 53.00 | 2019-01-05 18:00:00 | | 1546797600 | host2 | CPU Util | 53.00 | 2019-01-06 18:00:00 | | 1546884000 | host2 | CPU Util | 53.00 | 2019-01-07 18:00:00 | | 1547056800 | host2 | CPU Util | 53.00 | 2019-01-09 18:00:00 | | 1547143200 | host2 | CPU Util | 53.00 | 2019-01-10 18:00:00 | | 1547229600 | host2 | CPU Util | 53.00 | 2019-01-11 18:00:00 | | 1547316000 | host2 | CPU Util | 53.00 | 2019-01-12 18:00:00 | | 1547402400 | host2 | CPU Util | 53.00 | 2019-01-13 18:00:00 | | 1547488800 | host2 | CPU Util | 53.00 | 2019-01-14 18:00:00 | +------------+----------+----------+-------+-------------------------+ 26 rows in set (0.00 sec)
Grafanaでの連携
下記ページの「Grafanaのインストール」のインストール部分以降を参考に実施
MySQLのデータをGrafanaでグラフィカルに表示してみた | スマートスタイル TECH BLOG
下記の図の下方のようにSQLを書き連ねていけばグラフの重ね合わせもできる。
おわりに
思ったよりMySQLとの連携がよくて非常によかった。