grafanaでESXiホストの温度とファンの回転数を監視する

【概要】
CentOS7でシェルスクリプトをcronで定期的に動かし、ESXiホストの温度・ファン情報を抜き出してDBに記録し、記録したデータをgrafanaで取得、表示し視覚化(グラフ表示)します。
※仕事では視覚化のことを「見える化」って言うのですが、視覚化じゃ駄目でしょうか。まるで「夕立(驟雨?にわか雨?)」と「ゲリラ豪雨」くらいの違和感があります。
【元となる情報】
vsphereclient.jpg
定期的に取得して視覚化したいデータは、vSphereClientで接続した際に確認出来る「温度情報」と、「ファンの回転数」です(画像でファンのところ、展開するの忘れてました)。
【使うもの】
・ESXiが載った物理サーバ
・CentOS7(ここにスクリプトやgrafanaを入れます)
・mariaDB(MySQLでもpostgresqlでも良い)
・grafana
【手順】
■ESXiの情報を取得する
① ESXiにSSH接続して「vim-cmd hostsvc/hostsummary」コマンドでDDR Ambient TempとかSYS Ambient TempとかCPU FANの値が見れることを確認する
② DBにテーブルを作って、取れた値を格納するカラムを作成する(値が入るとこんな感じになります)

MariaDB [(none)]> use esxi
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
MariaDB [esxi]> show tables;
+—————-+
| Tables_in_esxi |
+—————-+
| esxi_env |
+—————-+
1 row in set (0.00 sec)
MariaDB [esxi]>
MariaDB [esxi]>
MariaDB [esxi]> select * from esxi_env;
—-+———————+———+———+———+———+—————+————–+
| id | date | pci_tmp | ddr_tmp | cpu_tmp | sys_tmp | rearfan_speed | cpufan_speed |
+—–+———————+———+———+———+———+—————+————–+
| 1 | 2017-11-27 19:35:36 | 34 | 43 | 62 | 16 | 1508 | 2694 |
| 2 | 2017-11-27 21:34:01 | 30 | 41 | 41 | 14 | 1508 | 1830 |
| 3 | 2017-11-27 21:34:12 | 30 | 41 | 41 | 14 | 1508 | 1830 |
| 4 | 2017-11-27 21:39:18 | 30 | 41 | 41 | 14 | 1508 | 1844 |
| 5 | 2017-11-27 21:45:05 | 30 | 40 | 40 | 14 | 1498 | 1844 |
| 6 | 2017-11-27 21:50:05 | 30 | 39 | 41 | 14 | 1508 | 1830 |
| 7 | 2017-11-27 21:55:05 | 30 | 39 | 41 | 15 | 1508 | 1844 |
| 8 | 2017-11-27 22:00:05 | 30 | 40 | 40 | 14 | 1508 | 1844 |
| 9 | 2017-11-27 22:05:04 | 30 | 40 | 40 | 14 | 1498 | 1830 |
| 10 | 2017-11-27 22:10:05 | 30 | 40 | 40 | 14 | 1508 | 1844 |
| 11 | 2017-11-27 22:15:05 | 30 | 39 | 40 | 14 | 1508 | 1830 |
| 12 | 2017-11-27 22:20:05 | 30 | 40 | 40 | 14 | 1508 | 1844 |
###### 以下省略 #######

③ シェルスクリプト(bash)で①の値を取得するスクリプトを作成する
④ 値が取れることを確認したら、シェルスクリプト内でDBにデータを突っ込む
⑤ cronで5分毎とかでスクリプトを動かす。
■grafanaにデータを反映させる
① grafanaをCentOS7に入れる
② 「Data Sources」でDB(今回の場合はTypeがMySQL)を選択する
③ ダッシュボードを新しく作成し、新規グラフを作成する。
④ グラフのデータソースはDB名(今回はesxi)にして、SQL文を叩いて値を取得してくる(以下に例を表示)

SELECT
UNIX_TIMESTAMP(date) as time_sec,
pci_tmp as value,
‘pci_tmp’ as metric
FROM esxi_env
WHERE $__timeFilter(date)
ORDER BY date ASC

⑤Axesのタブで単位をCelsiusにする
【結果】
grafana.jpg
今回はESXiホストである物理サーバの値をグラフ化しました。年間を通して記録すると夏と冬で差がありそうですね。
USB接続の温度センサなんてのもあるようで、それを使えば室内気温や外気温も測定可能なので、それらについても値が取得出来ればグラフ化できそうです。
手順の説明がかなりざっくりで申し訳ないですが、細かく説明する時間が無く・・・。よく分からない点があったら聞いて下さい。Twitterの@yekra22です。
grafanaかっこいいです、中二心をくすぐります。
以上、お疲れ様でした。