[CentOS]nginxを1.9.2にしたらmuninでnginxとphp-fpmのグラフが取れなくなったときの対処


CentOS 6と7でnginxを1.9.2にアップデートした後から、muninでnginxとphp-fpmのグラフが取得できなくなったので、対処したときのメモを残します。nginxは公式サイトのyumリポジトリ(mainline)からインストールおよびアップデートしています。

アップデート前のnginxは1.9.1でした。

アップデート後のnginxは1.9.2です。

アップデート直後のmunin-run実行結果はこんな感じで値が取得できていません。アクセスログを見ても404でした。

ただし、一部値が取得できているのもあり。

いろいろ調べているうちに、munin-runではなくcurlでURLを突ついてみたらどうなるか、切り分けてみました。

※ アップデート前

アップデート後、何もしないとこうなります。

おわかりいただけましたでしょうか。curlでアクセスするURLが127.0.0.1だとnginxはステータス200を返すのですが、localhostだと404を返すため、munin-runでも値が取得できず、muninでグラフが生成されなくなってしまうのです。

これまでは、nginxのメインのバーチャルホストのserverディレクティブに設定をしていました。

変更後はこんな感じです。

新たにserverディレクティブを作ってあげました。ポイントは以下の通りです。

  • listenはIPv4とIPv6のアドレスを書く。

  • server_name は名前とIPアドレス両方でアクセスできるように併記しておく。

  • locationのallow設定は自ホストからのみアクセスを許可し、その他のホストはdenyする。

なお、ここでのIPv6アドレスは[]で囲わないことに注意です。

最初はIPv6のアドレスを書かずに設定していたのですが、curlで確認してみると、最初にIPv6で接続を試み、接続できなければIPv4でリトライするようでしたので、無駄なリトライを避けるためにlistenでIPv6とIPv4のアドレスを併記しています。

また、locationの中で「allow ::1;」を書き忘れるとこうなります。

というわけで、localhost専用のserverディレクティブを書いてあげると、curlでこのように綺麗なアクセスができました。

それでは肝心のmunin-runで最終確認してみましょう。

バッチリ値が取得できていますね。(∩´∀`)∩ワーイ