Вот как работают самописные графики у меня.
Есть плагин, которое возвращает строку типа "
OK - load average is normal (0.03)|'la'=0.03;1.5;1".
Определён он так:
define service{
hostgroup_name linux-servers
use local-service
service_description CPU load average
check_command check_load_by_ssh!1.5!1!5
}
График вот:
define ngraph{
service_name CPU load average
graph_perf_regex la=*([0-9\.,]+)
graph_value La
graph_units %
graph_legend CPULoad
rrd_plottype AREA
rrd_color c0c0ff
}
Самое главное тут — service_name и graph_perf_regex. graph_perf_regex — регэксп, по которому мы будем искать данные в perfdata, т. е. после "|" (в "
'la'=0.03;1.5;1"). Если мы хотим искать до "|" (в "
OK - load average is normal (0.03)"), то нужно вместо этой использовать директиву "graph_log_regex".
Работоспособность регэкспов я проверяю с помощью egrep:
# cat /var/log/nagiosgrapher/ngraph.log | grep "CPU load average" | grep PIPE -m1 | egrep la=*([0-9\.,]+) -o
la=0.05
В результате в логах вижу:
# cat /var/log/nagiosgrapher/ngraph.log | grep "CPU load average" -A 7 | grep PIPE -m 1 -A 7
2012-03-29 14:09:07 PIPE: s-08193 CPU load average OK - load average is normal (0.06) la=0.06;1.5;1 1332990532
2012-03-29 14:09:07 REGEX: 1 blocks for 'CPU load average' found.
2012-03-29 14:09:07 REGEX: graph_value=La
2012-03-29 14:09:07 REGEX: output=perfdata
2012-03-29 14:09:07 REGEX: regex=m/la=*([0-9\.,]+)/i
2012-03-29 14:09:07 REGEX: perfdata=la=0.06;1.5;1
2012-03-29 14:09:07 REGEX: match=0.06
2012-03-29 14:09:07 VALUES: [s-08193][CPU load average]: La=0.06
Вторая строка (1 blocks for 'CPU load average' found) показывает, что для сервиса найден график с подходящим service_name. После этого по регэкспу из этого графика в строке ищется числовое значение.
Я тебе советую убрать всё лишнее из описания графика, сделай в базовом варианте, потом уже будешь плюшки прикручивать.
PS Да, с документацией плохо. И что значит "
даже на английском", на английском — это здорово, обсуждения на немецком в основном
