コメントありがとうございます。 残念ながら、もうSlingboxを使っていないた…
Zabbixで『nginx: Failed to fetch stub status page』が表示された時の対処法
Zabbixのダッシュボードを見ていると、
「nginx: Failed to fetch stub status page」
というエラーが表示されることがあります。
nginxテンプレートを適用した直後や、Zabbix Agent2を導入した後によく遭遇するエラーです。
今回は、このエラーの原因と解決方法をまとめます。
このエラーの原因
このエラーは、Zabbixがnginxのstatus情報を取得できない時に発生します。
主な原因は以下。
・stub_status が有効化されていない
・アクセス制限で127.0.0.1からアクセスできない
・URL設定が間違っている
・nginx側設定反映後にreloadしていない
特に多いのが、「stub_status設定を入れていない」パターンです。
stub_statusとは?
stub_status は、nginxの接続状況やリクエスト数などを表示する機能です。
例えば以下のような情報が取得できます。
Active connections: 1 server accepts handled requests 10 10 20 Reading: 0 Writing: 1 Waiting: 0
Zabbixはこの情報を取得して、nginx監視を行っています。
設定ファイルを確認する
まずは nginx.conf や conf.d 配下を確認します。
sudo nginx -T | grep stub_status
何も表示されなければ、stub_status設定が存在していません。
設定例
以下のような location を追加します。
location /basic_status {
stub_status;
allow 127.0.0.1;
deny all;
}
一般的には、
/etc/nginx/conf.d/default.conf
や、
/etc/nginx/nginx.conf
へ追加します。
設定反映を忘れずに
設定追加後は、nginx reload が必要です。
sudo nginx -t sudo systemctl reload nginx
nginx -t で構文エラー確認をしてから reload するのがおすすめです。
実際に取得できるか確認
curlで直接確認してみます。
curl http://127.0.0.1/basic_status
正常なら、以下のような内容が返ります。
Active connections: 2 server accepts handled requests
ここで403や404になる場合は、設定ミスの可能性があります。
Zabbix側URL設定も確認
Zabbix側テンプレートによっては、
http://127.0.0.1/status
を見に行っている場合もあります。
つまり、
・nginx側URL
・Zabbix側URL
が一致していないとエラーになります。
テンプレートマクロを確認しましょう。
{$NGINX.STUB_STATUS.HOST}
{$NGINX.STUB_STATUS.PORT}
{$NGINX.STUB_STATUS.PATH}
環境によっては PATH が /status になっているケースがあります。
SELinux環境にも注意
CentOSやRHEL系では、SELinuxが影響する場合もあります。
一時的に確認するなら、
getenforce
で状態確認。
Enforcing の場合は、SELinuxログも確認すると原因切り分けしやすいです。
まとめ
「nginx: Failed to fetch stub status page」は、
ほとんどの場合、
・stub_status未設定
・URL不一致
・アクセス制限
のどれかです。
特に、
curl http://127.0.0.1/basic_status
で正常取得できるかを確認すると、かなり早く原因を切り分けできます。
Zabbixテンプレート導入時は、nginx側設定とテンプレートマクロをセットで確認するのがおすすめです。
検索

コメントを残す