0

custom вывод в nagios

Достался мне наследство nagios вместе с не родным status.cgi, в котором в таблице отображения проблем сервисов помимо прочего отображался адрес устройства.

Какое то время я таскал этот загадочный status.cgi от версии к версии. В один прекрасный день решил разобраться с этим файлом, т.к. не люблю я всякие непонятности в управляемой мной системе.

Итак задача: Взять свежий nagios и повторить тот функционал, что есть сейчас в status.cgi. Система FreeBSD.

Nagios у меня уже установлен, поэтому я спокойно разархивирую исходники в домашнюю директорию.
# tar -xzf /usr/ports/distfiles/nagios-3.5.0.tar.gz
# cd nagios

Теперь внимательно изучаю структуру. Судя по всему, меня интересует cgi/status.c. Вот его то я и буду править. Не буду описывать муки поиска нужного фрагмента кода, попытки его раскурить, ошибки полученные в процессе. Однако, если все вышеперечисленное есть желание испытать самим, достаточно дальше не читать, а начать копать с cgi/status.c

Если путь экспериментов и получения в процессе экспириенса нe Ваш, то предлагаю решение.

Поиском в файле нахожу вхождения «Host »
Следующей строкой добавляю

printf("Address ");

Поиском в файле нахожу второе вхождениe «/* grab macros */»

/* grab macros */
grab_service_macros_r(mac, temp_service);

Перед этими строками добавляю:

/* extor address colunm */
printf("", status_bg_class);
printf(temp_host->notes);
printf("");

поиском в файле нахожу второе вхождение «/* the rest of the columns… */»

/* the rest of the columns... */
printf("%s\n", status_class, status);

После этой строки добавляю

/* extor address column */
printf("%s\n", status_class,temp_host->notes);

Теперь нужно все скомпилировать и подсунуть cgi/status.cgi в /usr/local/www/nagios/cgi-bin/
# ./configure
# make all
# cp ~/nagios/cgi/status.cgi /usr/local/wwwnagios/cgi-bin/

./configure нужно делать с параметрами в зависимости от системы, на которой будет проходить копиляция, т.к. как минимум, пути в Linux и FreeBSD отличаются.

Теперь, если все прошло без ошибок при наличии в конфигурационном файле хоста строки

notes Address test

в разделах host probles и services problems будет колонка Address с соответствующим значением из конфигурационного файла.

Alexey Egorychev

Alexey Egorychev

FreeBSD and Linux sysadmin. Know many systems like mailsystems, DB, WWW stack. Automation with salt, ansible. Monitoring with nagios, zabbix.