前回はHeartbeatで収集した情報をElasticsearchに送信し、そのデータを利用できるようにKibanaでインデックスパターンを登録するところまでやった。
今回はKibanaでその収集した情報をわかりやすく可視化したいと思う。
まず、Heartbeatが収集したデータを見てみる。
安物のなんちゃって管理機能付きL2SWをhttpで死活確認(稼働中) { "@timestamp": "2018-04-19T00:52:11.281Z", "@metadata": { "beat": "heartbeat", "type": "doc", "version": "6.2.3" }, "beat": { "hostname": "es.example.com", "version": "6.2.3", "name": "es.example.com" }, "tcp": { "port": 80, "rtt": { "connect": { "us": 1718 } } }, "http": { "response": { "status": 200 }, "rtt": { "write_request": { "us": 67 }, "response_header": { "us": 3393 }, "validate": { "us": 3432 }, "content": { "us": 39 }, "total": { "us": 5236 } }, "url": "http://192.168.0.250" }, "monitor": { "name": "http", "type": "http", "ip": "192.168.0.250", "duration": { "us": 5320 }, "status": "up", "scheme": "http", "id": "http@http://192.168.0.250" }, "type": "monitor" } IP電話機をicmpで死活確認(稼働中) { "@timestamp": "2018-04-19T00:52:11.281Z", "@metadata": { "beat": "heartbeat", "type": "doc", "version": "6.2.3" }, "type": "monitor", "beat": { "hostname": "es.example.com", "version": "6.2.3", "name": "es.example.com" }, "icmp": { "requests": 1, "rtt": { "us": 201992 } }, "monitor": { "name": "icmp", "type": "icmp", "ip": "192.168.6.145", "duration": { "us": 202085 }, "status": "up", "id": "icmp-icmp-ip@192.168.6.145" } } IP電話機をicmpで死活確認(電源OFF) { "@timestamp": "2018-04-19T00:52:11.281Z", "@metadata": { "beat": "heartbeat", "type": "doc", "version": "6.2.3" }, "beat": { "name": "es.example.com", "hostname": "es.example.com", "version": "6.2.3" }, "icmp": { "requests": 0 }, "monitor": { "id": "icmp-icmp-ip@192.168.6.159", "name": "icmp", "type": "icmp", "ip": "192.168.6.159", "duration": { "us": 5001197 }, "status": "down" }, "error": { "type": "io", "message": "write ip4 0.0.0.0-\u003e192.168.6.159: sendto: host is down" }, "type": "monitor" }
icmp(ping)で収集した場合とhttpで収集した場合でデータが別物な部分があるが、monitor.ip(監視対象ホストのIPアドレス)やmonitor.status(死活状態)は共通で、最低限の死活監視であればそれらとタイムスタンプだけ見れば良いのかも。
Kibana左列のVisualizeを開き、(新規作成)をクリック。
ヒートマップを使って時間別の死活状態を表示
ヒートマップを作成する場合は上の画像の赤枠の1つHeart Mapを使用する。
今回は前回作成したインデックスから作成するので heartbeat-* をクリック。
Metricsの側は1以上の値が入るなら何でも良いと思う。今回はAggregationにSum、フィールドにmonitor.duration.usを指定した。
バケツの指定
X軸(X-Axis)はAggregationに Date Histogram を指定。フィールドは @timestamp。
Y軸(Y-Axis)はSub Aggregationに Terms を指定。ファールドはmonitor.ip.keyword (監視対象ホストIP)、SizeにはHeartbeatでの監視対象台数以上を指定。
左上のAdd a filter でフィルターを追加する。条件は[monitor.status] [is] [up]でステータスがup(稼働中)のみ表示とする。
左上の黒塗りのheartbeat-*の下Optionsでオプション画面を開き、Numbers of colorsを2にするとヒートマップの表示色数が2色に減る。2色を指定しても実際には白・薄色・濃色の3色での表示だが。
(グラフ描画)をクリックしてヒートマップが表示されること。(上の画像では真っ白が「停止」、薄色・濃色が「稼働」を示す)
気に入ったら[Save]で保存する。
リスト表示で死活状態を表示
死活リストを作成する場合は上の画像の赤枠の1つData Tableを使用する。
今回は前回作成したインデックスから作成するので heartbeat-* をクリック。
Metricsの指定
AggregationにはTop Hitを指定する。フィールドは@timestampとする。 OrderはDescending(降順)、Sizeには1を指定し、最新の1つのレコードのみ表示とする。
バケツの指定
Split RowsでAggregationをTermにする。フィールドはmonitor.ip.keywordとする。SizeにはHeartbeatでの監視対象台数以上を指定。
これに死活状態を追加で表示するが、好みでSplit RowsにしてもSplit Tableにしても良いかと思う。今回はステータスがup(稼働)とdown(停止)を完全に分けて表示したかったのでSplit Tableを指定した。
Sub AggregationはTermを選択、フィールドはminitor.status.keyword、Sizeはupとdownの2種類なので2を指定。
Dashboardを作成
ダッシュボードに上で作成した2つのVisualizeを貼り付けて保存する。
ヒートマップは表示期間を広げても狭めても問題ないが、死活リストは表示期間を広げるとUpとDownの両方に同一の監視対象機材が表示されることがある。死活リストはUp, Downそれぞれで表示対象期間内のステータス変更最新日時を求めるものなので表示期間を例えば24時間とするとその期間にステータスが変わるとそれがそれぞれUp, Downに入るのは当然。どうしても現在のステータスだけを表示したいということなら表示する対象期間を直近の15分とか5分とかにすればその「直近」にステータスが変わっていなければ監視対象IPはUpまたはDownのどちらかだけに表示されることになる。ステータス変更日時を見れば理屈は解る筈。
関連記事:
- Elastic Stackでシステム監視 Heartbeatで収集した死活情報をKibanaで可視化
- Elastic Stackでシステム監視 Heartbeatを使う準備
- Elastic Stackでシステム監視 FreeBSDのportsで6.2.3に更新
- ELK Stackでシステム監視 Filebeatで収集したVolumioのログから時系列の再生曲名リストを表示
- ELK Stackでシステム監視 Rspamd 1.7系のElasticsearchモジュールを試す
- ELK Stackでシステム監視 FilebeatでNTP統計ログ取得 Logstashで加工
- ELK Stackでシステム監視 FilebeatでRaspberry Pi Zero WのVolumio楽曲再生ランキング
- ELK Stackでシステム監視 MeticbeatでRaspberry Pi Zero WのVolumioを監視
- ELK Stackでシステム監視 FilebeatでFreeBSDのCPU温度取得+Kibanaグラフ化
- ELK Stackでシステム監視 FilebeatでFail2banのBan情報+地図表示
- ELK Stackでシステム監視 MetricbeatでNginxのステータス情報を取得+グラフ化
- ELK Stackでシステム監視 FreeBSDのportsでELK Stack6系をインストール
- ELK Stackでシステム監視 FreeBSDにMetricbeatをインストールしてみる
- ELK Stackでシステム監視 elasticsearchインデックスのスキーマが勝手に変わる対処 テンプレート作成
- NanoPi NEO2(arm64)用にFilebeatをビルド
- ELK Stackでシステム監視 kibanaでDNSサーバの情報表示
- ELK Stackでシステム監視 kibanaのTimelion,Timeseriesでグラフ作成
- ELK Stackでシステム監視 collectdでDNSサーバの情報収集
- ELK Stackでシステム監視 kibanaでVisualizeとDashboard作成のキホンのキ
- ELK Stackでシステム監視 collectdでNTPサーバの情報収集
- ELK Stackでシステム監視 KibanaのSearchで抽出条件を作成する
- ELK Stackでシステム監視 kibana最初の一歩
- ELK Stackでシステム監視 collectdで監視対象ホストからデータ収集
- ELK Stackのインストール