鱧技術

hamo_daisukiの技術メモ

grafana と influxDB で作る、ping 生死確認ダッシュボード 2

前回の流れ

監視対象のサーバーや機器に、定期的に ping を実行して返り値を記録してトラブル対処に使っていたのですが、他の人も利用できるように grafana で見える化することにしました。grafana と influxDB の動く環境を作り influxDB へ stat というデータベースをに pinger という measurement を作成し、データを insert するところまでが前回のあらすじとなります。

grafana でデータソースを設定しよう

grafana でデータベースまでの情報、データソースの設定をします。公式では

Using InfluxDB in Grafana | Grafana Documentation となるわけですが、

f:id:hamo_daisuki:20190806162021p:plain

データソース設定画面

こんな感じで設定します。ほぼデフォルトです。下の [test & save]ボタンで上手くつながると設定を保存できます。はまったのは、前回書いたように InfluxDB と grafana を別鯖(コンテナ)で動かした時に Access が browser でしか接続が上手くいかず、動作不良を起こしました。同じ鯖内であれば、ほぼデフォルトの状態で問題なく動きました。

ダッシュボードを作ろう

まずは文字を表示するパネルから

初回は my first dashboard から案内されるかもしれませんが、私はそういうのぶっちぎっていたので田マークを押して dashboards メニューを出して Manage を選択し、画面を切り替えました。

f:id:hamo_daisuki:20190806163105p:plain

dashboardsメニュー

画面上部右側に New Dashboard ボタンがあるのでそれを押します。

f:id:hamo_daisuki:20190806163646p:plain

newdashboardボタン

そうすると、まっさらなダッシュボードとパネルの元が表示されます。

f:id:hamo_daisuki:20190806163937p:plain

まっさらなダッシュボード

まずは、データベースとは連結しない文字表示を作ってみます。

 Choose Visualization を選択してください。

f:id:hamo_daisuki:20190806164343p:plain

visualization設定画面

これ見ると、manage の画面もパネルで作ったのがわかりますね。

今回は赤丸で囲った Text を選んでください。

f:id:hamo_daisuki:20190806164645p:plain

Text設定画面

マークダウンやhtmlで文字修飾された文書の表示ができます。

左の歯車マークをクリックし、General 設定画面に移ってから Title にある"Panel Title" を削除し空白にすると、文字表示パネルらしい感じになります。

f:id:hamo_daisuki:20190806165008p:plain

general 設定画面

最後に画面右上のフロッピーアイコンを押して保存します。
フロッピー、若者は現物を知らなかったりするんですよね。CDで音楽を聞いていたってことすら知っているのか怪しいし。

f:id:hamo_daisuki:20190806165424p:plain

右上のフロッピーアイコンを押して保存

それからダッシュボードに戻ります。左上の矢印(go back)かESCキーを押します。

f:id:hamo_daisuki:20190806170048p:plain

パネルの位置やサイズを調整します。

パネルの位置やサイズを調整します。微妙な調整はできないので(グリッドに調整されます)ざっくり合わせることになります。

f:id:hamo_daisuki:20190806165604p:plain

go back ボタン(左矢印)か ESC キーでダッシュボードに戻ります

データを表示させるパネルを作る

次に、データベースのデータとリンクしているパネルを作ります。
基本的には文字だけのパネルと同様に作成するのですが、クエリが加わります。
下記の画面で Add Query します。

f:id:hamo_daisuki:20190806163937p:plain

パネルを作成する画面

Query の部分で先ほど作成したデータソースを選択します。
From の 2つめは measurement 名なので pinger を選択。
Where句ははじめに site を入力して、他の部分をマウスでクリックすると "=" が表示されて、その右側の入力部分にサーバーなどの機器名やIPアドレスなどを入力します。
Select句はfieldに rtt を選択し、rtt の値を拾うようにします。
ほかはデフォルトです。

f:id:hamo_daisuki:20190807084748p:plain

クエリ

Visualization は singlestat を選択します。
Current値を見るようにし、"接続速度"と前置しています。後置は"ms"。背景は0〜24は緑、それ以上は橙色、9999になると赤になります。
set value mapping で 9999 をひろうと"接続不能"の文字が表示されるように設定しました。

f:id:hamo_daisuki:20190807085453p:plain

見た目の設定

この後、設定画面でタイトルをサーバー名やIPアドレスに変えて保存すると、状況表示用のパネルが1毎出来上がります。仕上げにサイズを調整します。あとはサイトごとにパネルを増やしていくだけです。(コピペできるので、クエリを書き換えるだけで増やしていけます)

使用感

一度動き始めてしまうと「これがあるのが当たり前」の状態になってしまい、あまり評価はされませんでした。個人的には、トラブル報告が楽になると同時に機材購入の材料が増えたのでメンテが楽になりました。

展開として、計測器などのデータの閲覧に使用したり、会社のオーダーデータ(日別・週締め)グラフ化に使ったりしています。Excel などと比べ、使用者がグラフの範囲をいじれたり、ポインタを当てるとデータが表示されるなど今っぽい表示になるのが良いようです。が、あんまり評価されないので、作るときもサラッと雛形を流用して作るのが良いような気がします。

データのインサートは、自分は awk で整形し curl でぶち込んでいますが他の方法のほうが速いんじゃないかと思ってます。バッチで1日1回データが上がってくる計測器などデータが大量になるため、何か工夫したいと思ってます(夜中で処理が終わるので、結果オーライなんですが)