このブログを検索

この記事の内容は、個人の見解、検証の範囲のものであり、誤りがある可能性があります。
個人の責任において情報活用をお願いします。


2024年3月29日金曜日

Prometheus で k8s 環境の監視に挑戦してみる 第6回 コントロールプレーンとノードを監視する。

Prometheus で k8s 環境の監視に挑戦してみる 第6回 コントロールプレーンとノードを監視する。

今回はk8sのコントロールプレーンとノードを Prometheus の監視対象として追加して Grafana で見てみたいと思います。
本当は、Kubernetes 上の Pod や Service の情報を引っ張ってきて Grafana で見て見たかったのですが、どうやら Kubernetes 上の情報を収集するには Prometheus も Grafana もその Kubernetes Cluster で動作させて内部で情報のやり取りをさせるやり方のようです。
現状の構成では、Prometheus も Grafana も Kubernetes Cluster の外部にあるため内部を見るのはちょっと難しいようです。
なので、Kubernetesで動作しているPod等の監視については環境を作り直し改めて時間を取って確認をしてみたいと思います。

では、繰り返しとなりますが、Kubernetesの外側を監視するという視点でコントロールプレーンとノードを Prometheus の監視対象として追加して Grafana で見てみたいと思います。

まずは、各ノードに 対し監視対象としての追加と node_exporter を設定します。
手順は以前作成したこちらのブログをご覧ください。
https://techblog-cidept.blogspot.com/2023/11/prometheus-k8s-2.html

次に、blackbox_exporter 設定します。
こちらも手順については以前に作成したブログをご覧ください。
https://techblog-cidept.blogspot.com/2024/01/prometheus-k8s-4.html


では、登録したものを Grafana で確認してみましょう。
以前のブログはこちら
node_exporter の方は以前導入したダッシュボードを見てみます。
ます、JobをPrometheusで登録した『Kubernetes Cluster』に切り替えます。

そのあとHostから、3台のノードから見たいホストを選択できます。
今回は、Kubernetes Cluster で動作しているアプリ等がないので動いてる感がない各種項目となっていますが、実際に使われている環境を見たりすると、スワップ使ってるのがわかったりしてありがたいんでしょうねぇ。
あとは、例えばノードが追加されたとしても、node_exporter を設定し、Prometheus の yaml に Targetとしてホスト名を設定してPrometheusの再起動で済むのでありがたい。
追加ノードの台数が多くても、ノード側の作業を Ansible で自動化しておけばどんとこいですね。


続いて ping の死活監視について確認してみましょう。
ダッシュボードを作成してみます。
データソースの指定を求められたら、以前登録したprometheusを指定します。
メトリックはprobe_successを選択します。
プレビューで5分間隔で表示してみます。
死活監視は0(失敗)か1(成功)なので問題がなければ全部1で横線状態になります。
Applyでダッシュボードとして作成してみましょう。
一つサーバーのネットワークを止めて更新すると、pingが失敗して0になったことがわかります。
ネットワークを復旧してから再度更新してみると、pingが成功するようになったので1に戻っています。
あとはこれにPrometheusの方でアラートのルールを追加すれば、X分間ping応答がなかったサーバーがいたらアラートを出すといったこともできます。
この様な形で、Kubernetes Cluster の外側といいますか、土台となっている各ノードのリソース状況やネットワーク死活監視ができます。