このブログを検索

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


2023年11月30日木曜日

Prometheus で k8s 環境の監視に挑戦してみる 第2回 監視対象を追加

今回はPrometheusに監視を追加してみたいと思います。
Prometheus の構成ファイル(prometheus.yml)に対象を追加する方法を行います。

Prometheus.yml の中身を見てみましょう。
global、alerting、rule_files、scrape_configs の4つのセクションがあり、それぞれ以下の役割を持っています。

・global 全体の設定
・alerting アラートに関する設定
・rule_files ルールファイルに関する設定
・scrape_configs 監視ターゲットに関する設定

監視対象を追加するには scrape_configs の部分を編集することになるようです。
今回は、dev-nfs-01 というサーバーを監視対象として追加したいと思います。
編集する前に、prometheus.yml のコピーを取ってどこかに保存しておいてください。
なお、Prometheus のUIで監視対象を確認するには Status から Targets を表示することで可能です。

scrape_configs に監視対象を追加する際の記述は以下のように、job_name で表示名を設定し、targets で監視対象のIPアドレスかホスト名と必要に合わせてport番号を設定します。
  - job_name: "dev-nfs-01"
    static_configs:
      - targets: ["dev-nfs-01:9100"]

一度 Prometheus をCtrl + C で停止して再度起動して、Targets を見てみましょう。
赤く表示され正常に監視はできていませんが、対象が追加されたことがわかります。
監視対象としては追加できましたが、情報を収集するためのエージェントの役割を行うエクスポーターが監視対象に存在しないのでそちらの設定を行いたいと思います。
手順は以下になります。
https://prometheus.io/docs/guides/node-exporter/

まずは、使用する node-exporter のバージョンを確認してみましょう
https://github.com/prometheus/node_exporter/releases

1.6.1が最新のようですのでそちらを使っていきます。
監視対象とするサーバーへログインして node-exporter をダウンロードします。
# wget https://github.com/prometheus/node_exporter/releases/download/v1.6.1/node_exporter-1.6.1.linux-amd64.tar.gz
ダウンロードしたものを展開します。
# tar zxvf node_exporter-1.6.1.linux-amd64.tar.gz
展開したディレクトリに移動します。
# cd node_exporter-1.6.1.linux-amd64
node-exporter を起動します。
# ./node_exporter
バックグラウンドで実行する場合は以下です。
# nohup ./node_exporter > /dev/null 2>&1 &
起動すると最後に address=[::]:9100 と表示されますがこれは 9100番port で待ち受けているためです。
先ほど prometheus.yml を編集した際に 9100番port を設定していたのは、このエクスポーターが待ち受けている 9100番port へ情報を取りに行くようにするためです。
設定をしないと 80番port へ情報を取りに行ってしまいます。
各エクスポーターがどのport番号を使用するかはエクスポーターによるようですので使用するエクスポーターのport番号は忘れずに確認しましょう。

ブラウザで Prometheus のUIを更新してみてください。
エクスポーターと通信が行えるようになったため表示が正常になっていると思います。
これで監視対象として追加することができました。
次回はこのサーバーに対して情報を取ってくるとどんな形で見ることができるのかなどを調べていこうと思います。
--------
参考情報
Prometheus実践ガイド クラウドネイティブな監視システムの構築(書籍)
公式ドキュメン(トhttps://prometheus.io/docs/introduction/overview/)