このブログを検索

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


2023年12月28日木曜日

Prometheus で k8s 環境の監視に挑戦してみる 第3回 監視対象への情報取得

今回は Prometheus に監視対象として追加したサーバーへどのような情報が取得できるのかを確認していきたいと思います。
情報の取得には PromQL というクエリを発行するのですが、それをどう実行するのかというと式ブラウザという Prometheus にアクセスした際に最初に表示された画面で実行できてしまいます。

実際に以下の情報を取得してみたいと思います。

 ・CPU
 ・メモリ
 ・ディスク
 ・ネットワーク

まずは、CPUから。
指定した期間のCPU使用率を表示させる式を使って、直近10分間の情報を表示してもらいます。
式ブラウザに以下を入力します。
rate(node_cpu_seconds_total[10m])
node_cpu_seconds_total がCPUの情報を取得するメトリクスです。
rate() で指定した期間の平均値を求めることができます。
[10m] が10分間を指定しています。
結果はこちら

cpuのidle状態やiowaitについても情報を出してくれるようです。
また、以下のように特定の情報に絞ることもできます。
rate(node_cpu_seconds_total{mode="iowait"}[10m])
{mode="iowait"} でiowaitの情報だけに絞っています。
つづいてメモリの使用量を見たいと思ったんですが、node_exporterにはメモリ使用量を取得するメトリクスがないようです。
結構意外な気もしましたが、メモリの総量を取得するメトリクス(node_memory_MemTotal_bytes)と空きメモリを取得するメトリクス(node_memory_MemFree_bytes)から算出するやり方で表示するようです。
以下のような式になります。
node_memory_MemTotal_bytes - node_memory_MemFree_bytes
この様に、メトリクスを使って式を組み立てていくようなやり方で見たいものを見るというのがプロメテウスのようです。
あまりこのようなやり方をした経験がなかったので新鮮でした。
使いこなすのに時間がかかりそうですけどねw

次は、ディスクの使用量を表示させてみたいと思います。
こちらは、node_filesystem_avail_bytes メトリクスで表示できるようです。
個別のデバイスに絞って確認したいときは、デバイスを以下の形で指定します。
node_filesystem_avail_bytes{device="/dev/mapper/centos-root"}
最後にネットワークの情報を表示してみます。
10分間の送信トラフィックと受信トラフィックの量を見てみたいと思います。
複数NICを追加してるわけではないですがNICを絞って表示してみます。

式はそれぞれ、以下となります。

受信量
rate(node_network_receive_bytes_total{device="ens192"}[10m])
送信量
rate(node_network_transmit_bytes_total{device="ens192"}[10m])
式は『Add Panel』をクリックすることで追加できます。
並べて見れるようになるので便利ですね。

今回は、Node exporter を使用して監視対象の情報を表示してみました。
これはごく一部の内容だと思いますので、興味をひかれた方は調べてみてください。

では、よいお年を。

--------
参考情報
Prometheus実践ガイド クラウドネイティブな監視システムの構築(書籍)
公式ドキュメン(トhttps://prometheus.io/docs/introduction/overview/)