前回の記事で Raspberry Pi に Fluentd + Elasticsearch + Kibana の環境ができたので、練習として Raspberry Pi の CPU 温度、電圧、クロック数をグラフ化してみる。
各数値を Fluentd で Elastisearch に送る
参考サイトのスクリプトを参考に、各数値を Fluentd で Elastisearch に送るスクリプトを書く。
$ vi temp_volt_freq.sh
#!/bin/bash
temp=`vcgencmd measure_temp | sed -e "s/temp=//" -e "s/'C//"`
volt=`vcgencmd measure_volts |sed -e "s/volt=//" -e "s/V//"`
freq=`vcgencmd measure_clock arm | sed -e "s/frequency(45)=//"`
json={\"rasp_temp\":$temp,\"rasp_volt\":$volt,\"rasp_freq\":$freq}
echo $json | /home/pi/.anyenv/envs/rbenv/shims/fluent-cat log.temp_volt_freq
下記コマンドで実行権限を追加して、
$ chmod +x temp_volt_freq.sh
cron で 5 分ごとに実行する。
$ crontab -e
# 下記行を追加
*/5 * * * * ./temp_volt_freq.sh
参考
Kibana でグラフを作る
Index Pattern を作る
まずは、 Index Pattern を作る。
Kibana のトップページ右下の「Index Patterns」をクリックして、

「Index Pattern」には「*」を入力して、続いて「Nex step」をクリックして、

「Time Filter field name」には「@timestamp」を入力して、続いて「Create index pattern」をクリックする。

「Filter」に「rasp」と入力して、「rasp_temp」「rasp_volt」「rasp_freq」が取れていることを確認する。

グラフを作る
続いて、まずは CPU 温度をグラフ化する。
サイドバーの「visualize」をクリックして、コンテンツエリアの「Create a visualization」をクリックして、

グラフは「Line」を選択して、

「From a New Search, Select Index」は先ほど作った「*」を選択して、

「Y-Axis」はそれぞれ下記のように設定して、
- Aggregation: Max
 - Field: rasp_temp
 
その下の「Buckets」から「X-Axis」を選択して、それぞれ下記のように設定して、
- Aggregation: Date Histogram
 - Field: @timestamp
 - Interval: Auto
 
「Metrics」の上の「再生ボタン」をクリックすると、グラフができあがる。

このグラフは保存しておきたいので、画面最上部の「Save」をクリックして、適当に名前をつけて「Save」をクリックとグラフが保存される。

ダッシュボードを作る
続いてダッシュボードを作る。
上記のグラフ化の手順で電圧、クロック数をグラフ化しておいて、
サイドバーの「Dashboard」をクリックして、コンテンツエリアの「Create a dashboard」をクリックして、

コンテンツエリアの「Add」をクリックして、

グラフ化で作った3つのグラフを追加する。

このダッシュボードを保存しておきたいので、画面最上部の「Save」をクリックして、適当な名前をつけて保存する。

これでグラフをダッシュボードに保存するところまでできました。
いい感じです。