首先,你應該檢查itsself通過檢查返回的perfdata - 應該像'key'=value
以下有效perfdata規格。
然後拿個主意pnp4nagios模板如何工作 - 這取決於你的版本(0.6正在積極開發的),例如看進入:[1]
模板會被他們的檢查命令名稱默認爲擡頭(所以如果你沒有創建一個自定義的檢查,有可能是使用如default.php模板)。
根據您安裝pnp4nagios的方式,可以在$prefix/share/templates.dist
下找到模板目錄 - 將您的模板放入$prefix/share/templates
以防止它們在升級過程中丟失。現在將$prefix/share/templates.dist/default.php
複製到$prefix/share/templates/<yourcheckcommandname>.php
並開始編輯(確保web服務器的用戶可以打開它)。
你會看到,這只是在PHP代碼中創建一個呼叫rrdtool
,附加串居多。關於你的問題:
當前值看着
$def[$KEY] = rrd::def ("var1", $VAL['RRDFILE'], $VAL['DS'], "AVERAGE");
$def[$KEY] .= rrd::gradient("var1", "3152A5", "BDC6DE", rrd::cut($VAL['NAME'],16), 20);
$def[$KEY] .= rrd::line1 ("var1", $_LINE);
$def[$KEY] .= rrd::gprint ("var1", array("LAST","MAX","AVERAGE"), "%3.4lf%S".$VAL['UNIT']);
在第一行中,您將var1
定義爲「AVERAGE」。如果在繪製圖表時整合效果更好,請將其設置爲「最後」。
最後一行與gprintf
如下printf
語法,其中lf
將與精度4和在前面(3.4)3號的雙[2] 更改%lf
到%d
(整數)將可能與該圖例解決該問題。
您可以更改如下,例如,
$def[$KEY] = rrd::def ("var1", $VAL['RRDFILE'], $VAL['DS'], "LAST");
$def[$KEY] .= rrd::gradient("var1", "3152A5", "BDC6DE", rrd::cut($VAL['NAME'],16), 20);
$def[$KEY] .= rrd::line1 ("var1", $_LINE);
$def[$KEY] .= rrd::gprint ("var1", array("LAST","MAX","AVERAGE"), "%d %S".$VAL['UNIT']);
甚至還有對這些模板進一步的可能性 - 就像縮放Y軸,等等 - 這只是rrdtool
語法即可。
要打印Nagios/Icinga Core如何將perfdata發送到PNP4Nagios的最新值,您還可以使用另一個技巧 - pnp存儲其他數據,這些數據不適合rrd存儲在它自己的*.xml
文件中。這些xml文件隨即由process_perfdata.pl
運行的每個正常rrd更新進行更新。 其中之一是「ACT」(檢查[1]),可以在第一個數據源上訪問,就像模板代碼中的$ACT[1]
一樣,然後作爲註釋字符串傳遞給rrdtool調用。
$def[$KEY] .= "COMMENT:\"Current $ACT[$key]\\n\" ";"
[1] http://docs.pnp4nagios.org/pnp-0.6/tpl
[2] http://www.cdf.toronto.edu/~ajr/209/notes/printf.html
您如何保存數據,以及如何將它提供給PNP4Nagios?在我看來,分隔符是問題... –