schedule2021-01-29

ZabbixでNginxを監視する設定

ZabbixでNginxを監視する設定のテンプレートを追加しました。 その備忘録です。

環境

  • CentOS 7
  • Zabbix : v5.0
  • nginx : v1.19.6

導入方法

https://www.zabbix.com/integrations/nginx

ZabbixがNginxを監視するための導入手順は3つあります。

上2つはZabbixエージェントがサーバの中か外かの違いだけで。 どちらもNginxのステータスを返すエンドポイントを設定します。

モジュールの確認とNginxの設定

ngx_http_stub_status_module

Nginx Module ngx_http_stub_status_module

ngx_http_stub_status_moduleモジュールは、基本的なステータス情報へのアクセスを提供します。 Zabbixエージェントはこれをメトリクスとして収集します。

▼ のコマンドでngx_http_stub_status_moduleモジュールが利用可能か確認します。

$ nginx -V 2>&1 | grep -o with-http_stub_status_module
with-http_stub_status_module

▼次のステータス情報が提供されています。

ステータス 概要
Active connections 接続待ちを含むアクティブなクライアント接続の現在の数。
accepts 受け入れられたクライアント接続の総数。
handled 処理されたコネクションの総数。一般的にリソースの制限 (たとえば worker_connections の制限) に達していない限りパラメータの値は accepts と同じになります。
requests クライアント要求の総数。
Reading nginxがリクエストヘッダーを読み取っている現在の接続数。
Writing nginxがクライアントに応答を書き戻している現在の接続数。
Waiting 要求を待機しているアイドル状態のクライアント接続の現在の数。

▼レスポンスの例

$ curl http://localhost/basic_status
Active connections: 11
server accepts handled requests
 47 47 160
Reading: 0 Writing: 1 Waiting: 10

Nginxの設定

メトリックを収集するためのHTTPの設定をNginxのconfに追加します。

/etc/nginx/conf.d/default.conf
server {
  listen   80;
  server_name  localhost;

  location / {
    root /var/www/public;
    index  index.html index.htm;
  }

  # 追加したパス
  location /basic_status {
    stub_status;
    allow 127.0.0.1;
    allow ::1;
    deny all;
  }

  省略
}

ローカルホストから80ポートのアクセスに対してのみステータスを返します。 127.0.0.1::1はどちらもローカルホストです。 どちらか片方を消しても同じです。

別のサーバからアクセスする場合は、allow <IP of your Zabbix server/proxy>;と変えてください。

▼ローカルからのアクセスはOK。

$ curl http://localhost/basic_status
Active connections: 11
server accepts handled requests
 47 47 160
Reading: 0 Writing: 1 Waiting: 10

▼外からのアクセスは403になることを確認しました。
403

テンプレートについて

テンプレートの追加と項目について。

テンプレートの追加

Zabbixの「設定」→「ホスト」からNginxのホストに対してテンプレートを追加します。 「新規テンプレートをリンク」からテンプレートを探して更新をする。

template