Достался мне наследство 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 с соответствующим значением из конфигурационного файла.