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での様子である。

f:id:ddtkra:20190131010210p:plain
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を書き連ねていけばグラフの重ね合わせもできる。

f:id:ddtkra:20190131012141p:plain
Grafana上でのグラフの重ね合わせの設定

おわりに

思ったよりMySQLとの連携がよくて非常によかった。