LoginSignup
4
3

More than 3 years have passed since last update.

ZabbixでNode Exporter(Prometheus)の値を監視

Posted at

Zabbix AdcentCalendar 2019の15日目の記事です。

Zabbixエージェントを使用しなくても、PrometheusのNode ExporterがインストールされているサーバーならZabbixで監視できるよというお話です。

追加されてきた機能

Zabbixでは、4.0以降でいくつかの機能が追加されていて、より多様な監視をZabbix標準の機能で実施することができるようになっています。

例えば、「HTTPエージェント」というタイプのアイテム(監視設定)を使用することで、HTTPリクエストを投げて、その結果をアイテムの値とすることができます。これによって、Webサービスなどを呼び出し、その結果内の文字列や値を取り出すことで、正常かどうかやメトリクスを取得することができるわけです。

また、Webサービスなどでは、レスポンスがJSON形式であるため、そこからより柔軟に値を取り出すための機能も強化されています。保存前処理と呼んでいますが、取得した値を加工してからアイテムの値として保存する機能です。
保存前処理の機能は、数値の計算や文字列の変換、先ほど挙げたJSONを加工するためのJSONPathという機能にも対応したため、Webサービスから受け取った値から柔軟に必要な値のみ取り出して、数値だけであったり特定のアトリビュートの文字列の値を監視することができます。

他にも、Zabbix 4.4では、保存前処理にJavaScriptを使用できるようになったり、Prometheus用の機能拡張が行われています。

それらを活用することで、PrometheusのNode Expoterから情報を受け取って、それを通常のZabbixエージェントと同様に、サーバーの状態を監視することにも使うことができます。

監視設定してみよう

Zabbix 4.4では、PrometheusのNode Expoterに対応した監視テンプレートが用意されているので、それを使って監視してみます。

導入する環境

今回は、CentOS 8上にNode Exporterをインストールすることとします。
説明を簡単にするため、SELinuxはdisabledにしていますが、適切なポリシーを設定することを検討してください。

Node Exporterのインストール

Node Exporterの実行ファイルをダウンロードして、/opt/node_exporterディレクトリ以下に配置します。

# wget https://github.com/prometheus/node_exporter/releases/download/v0.18.1/node_exporter-0.18.1.linux-amd64.tar.gz
# tar zxvf node_exporter-0.18.1.linux-amd64.tar.gz
# mv node_exporter-0.18.1.linux-amd64/ /opt/node_exporter
# ls /opt/node_exporter/
LICENSE  NOTICE  node_exporter
#

起動するユーザーを「prometheus」ユーザーにするため、ユーザーを作成します。

# useradd prometheus

ユーザーを作成したら、Node Exporterの実行ファイルの所有者をprometheusにしておきます。

# chown -R prometheus:prometheus /opt/node_exporter/

自動起動の設定も行います。

# vi /usr/lib/systemd/system/node_exporter.service
# systemctl daemon-reload
# systemctl start node_exporter

/usr/lib/systemd/system/node_exporter.serviceの内容は以下のような内容にしてみました。

[Unit]
Description=Node Exporter for Prometheus
Wants=network-online.target
After=network-online.target

[Service]
User=prometheus
ExecStart=/opt/node_exporter/node_exporter

[Install]
WantedBy=multi-user.target

デフォルトでは、node_exporterは、ポート番号9100で要求を受け付けているので、firewalldの設定でアクセス可能に設定します。

# firewall-cmd --add-port=9100/tcp --zone=public --permanent
# firewall-cmd --reload

ホストの登録と監視用テンプレートのリンク

Zabbix上にホストを登録します。

add-host.png

ホスト登録時に、テンプレートへのリンクも追加しておきます。
リンクさせるテンプレートは「Template OS Linux by Prom」です。

add-host-temp.png

Node Exporterに接続するためのポート番号などは、テンプレートのマクロに設定されているので、ホストによってポート番号を変更しているような場合は、ホストマクロに設定することで上書きして、それぞれのホストに合わせた情報での監視を行うことができるようになっているようです。

しばらくすると、「監視データ」->「最新データ」で、登録したホストを選択して表示させておくと、監視用の各アイテムの値が取得開始されます。

item-data.png

最後に

今回紹介したのはNode Exporterのみでしたが、今後、他のExporter用の監視テンプレートも作成できるかもしれません。
すでに他の方が作成されているかもしれませんが、私自身でも調べて作成できたらなと思ってます。

明日は、誰でしょう?
どなたかよろしくお願いします。

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3