2014年7月9日水曜日

Nagiosgraphのタイムアウトを解決する

Bunnyrel

先日、Nagiosが取得したサーバの情報をグラフ表示するNagiosgraphというライブラリを紹介しました。

NagiosにNagiosgraphを導入して、グラフを表示する方法
http://takeshiyako.blogspot.jp/2014/06/nagiosnagiosgraph.html

しかし、監視項目が多くなると、Nagiosgraphページがタイムアウトするようになりました。以下、httpdのエラーログです。
-----------------------
[Wed Jul 09 12:00:02 2014] [error] [client 100.100.100.100] Script timed out before returning headers: show.cgi, referer: https://200.200.200.200/nagiosgraph/cgi-bin/show.cgi?host=mysql&service=TCP%20Port%20num&period=day,week,month,year&expand_period=day,week,month,year
[Wed Jul 09 12:01:02 2014] [warn] [client 100.100.100.100] Timeout waiting for output from CGI script /usr/local/nagiosgraph/cgi/show.cgi, referer: https://200.200.200.200/nagiosgraph/cgi-bin/show.cgi?host=mysql&service=TCP%20Port%20num&period=day,week,month,year&expand_period=day,week,month,year
-----------------------

調べてみると、Nagiosgraphのプログラムでngshared.pmモジュールというものを使っているのですが、ここの一部のループが重すぎてタイムアウトを引き起こしていることがわかりました。
具体的には、この辺りです。

ここのループは、ユーザの権限によって表示するグラフを制限しているようなのですが、あまり必要ないので、コメントアウトして対処します。


最近なんか、Nagiosgraphが重いなぁ。と思っていた人は試してみてください。