kubernetes上でprometheusとgrafanaとblackbox-exporterを動かす

スポンサーリンク

はじめに

今回はblackbox exporterを使ってping監視をしてみます。

これもprometheusのexporterでping(ICMP)監視などに使うことができます。

ping監視以外にもHTTP, HTTPS, DNS, TCPなどの監視ができるようです。

何より名前が良いですね。ブラックロックシューターを思い出しますねー

参考サイト

こちらのサイト様を参考にさせていただきました。

公式はこちら

使用した環境について

各versionはこちら

Ubuntu 16.04.4 LTS

docker:17.03.2-ce

kubectl:v1.10.1

prometheus:v2.2.1

blackbox-exporter:v0.XX.0

grafana:5.1.3

各種ファイルについて

grafanaは前回までとまったく同様です。

前回のsnmp-exporterのpart2で紹介したfile_sd_configsを使用した方法で書いています。

こっちのほうがprometheusのpodを再作成させなくて済むので。

prometheusに一部変更とblackbox-exporter.ymlを追加してます。

各ファイル変更箇所だけ簡単に補足します。

prometheus.yml

volumeMountsとvolumes箇所をblackbox用に変更しています。

icmp-targetは後述のblackbox-exporter.ymlで定義しています。

scrape_intervalもevaluation_intervalも60秒としています。

scrape_intervalは情報を取得する頻度=pingの間隔になります。

evaluation_intervalは設定を書き換えて(ここではblackboxのconfigmap)読み込んでくれるまでの間隔のはずです。

実はscrape_intervalとevaluation_intervalの関係がよくわかっていなかったので

実際のblackbox-exporterのping間隔をtcpdumpして確認してみました。(sudo tcpdump -i eth0 icmp)

結果pingの間隔はこんな感じ
scrape_interval:60
evaluation_interval:60
60秒ごとにping

scrape_interval:15
evaluation_interval:60
15秒ごとにping

scrape_interval:60
evaluation_interval:15
60秒ごとにping

evaluation_intervalを15秒にしてblackbox-exporter.ymlのconfigmap:icmp-targetからtcpdumpしているipを消すと15秒くらいで消えました。

blackbox-exporter.yml

・kind: Service

外部からアクセスする必要がないのでClusterIPにしています。

・kind: Deployment

configMapでblackbox.yml-dataを読み込みblackbox.ymlを用意しています。

・kind: ConfigMap:blackbox.yml-data

上記Deployment内で定義しているコンテナ内で使う設定ファイル(blackbox.yml)を用意しています。

・kind: ConfiMap:icmp-target
prometheus.ymlで使用するicmp-target.ymlを用意してます。こちらがpingの宛先リストになります。

grafana.yml

snmp-exporterで使ったものと全く同じです。

k8sへ適応(デプロイ)

設定時のログはこちらです。前回までと同じようにkubectl apply -f XXXX.ymlでデプロイしています。

具体的には以下コマンドです。

kubectl apply -f prometheus.yml

kubectl apply -f grafana.yml

kubectl apply -f blackbox-exporter.yml

実際のログはこちらです。

動作確認

prometheusにアクセスし、targetsを確認します。

http://192.168.0.14:30090/targets

うまく動作しているとこちらのような画面になります。

http://192.168.0.14:30090/graph

グラフはこんな感じです。

pingが成功していると「probe_success」が1になり、pingが失敗していると0になります。

このときは192.168.0.14、192.168.0.15、192.168.0.16が起動しているのですべて1となっています。

今回は少しgrafanaもさわってみます。初期設定などは過去投稿を参考にどうぞ。

http://192.168.0.14:30300

ダッシュボードもちょっと頑張ればこれくらい作れます。

※この画像取得時は192.168.0.16を落としております。ping失敗時を載せたかったので。

一番上のグラフは「Graph」で作成しており、残りの緑と赤のカラフルなボックスのようなものは「Singlestat」で作成しています。

Graphはmetricタブからにprobe_successと入力し、Generalタブでグラフtitleをallとしただけです。

Singlestatは少し設定がいります。192.168.0.14を例に箇条書きにすると

・Generalタブからグラフtitleで192.168.0.14と入力

・MetricタブからAに「probe_success{instance="192.168.0.14"}」と入力

・OptionsタブからValue項目のStatをcurrent、Coloring項目のBackgroundにチェックを入れてThresholdsを「0,1」としてColorsの一番左は無視、真ん中を赤、一番右を緑色にします

・Value MappingsタブからSet value mappings項目で「1」→「OK」と「0」→「NG」と入力します。※これをやると下のOK、NG表示になり、やらなければ上の1,0表示になります。

この程度の設定でも結構見栄えの良いダッシュボードが出来るのでgrafanaは楽しいですね!

Githubについて

全ファイルこちらにまとめております。上記で載せている設定のyamlは抜粋したものですので、何かしらで使われる場合はGithubのものを使ってください。

最後に

これでprometheusでping監視ができるようになります。

インフラ、バックグラウンドエンジニアさんには受けが悪い印象がありますが、ネットワークエンジニアさんには受けがいいと信じたいblackbox-exporter!

みなさんも使ってみてはいかがでしょうか?

誰もやらないでしょうけど実は前回のsnmp-exporterのtargetlistと同じあて先にpingを打つならblackbox-exporterのicmp-targetなしでも出来たりします。需要なさそうw

普通に分けたほうがわかりやすいですけどね。

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする