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上にホストを登録します。
ホスト登録時に、テンプレートへのリンクも追加しておきます。
リンクさせるテンプレートは「Template OS Linux by Prom」です。
Node Exporterに接続するためのポート番号などは、テンプレートのマクロに設定されているので、ホストによってポート番号を変更しているような場合は、ホストマクロに設定することで上書きして、それぞれのホストに合わせた情報での監視を行うことができるようになっているようです。
しばらくすると、「監視データ」->「最新データ」で、登録したホストを選択して表示させておくと、監視用の各アイテムの値が取得開始されます。
最後に
今回紹介したのはNode Exporterのみでしたが、今後、他のExporter用の監視テンプレートも作成できるかもしれません。
すでに他の方が作成されているかもしれませんが、私自身でも調べて作成できたらなと思ってます。
明日は、誰でしょう?
どなたかよろしくお願いします。