Nagios и NagiosGraph: рисуем графики
Все знают, что директора любят таблицы, диаграммы и графики :) Это всё потому, что из за большой загруженности удобнее отследить динамику изменений на графике, получить сводные данные в таблице и их соотношение в диаграмме. Поэтому специально для них будем учить nagios строить цветастые графики по статистике наблюдаемых сервисов.
Для реализации задуманного нам потребуется плагин Nagiosgraph. При установке он за собой потащит много всего интересного, но самое для нас интересное — это RRDTool. Это есть набор утилит для работы с кольцевыми базами данных, использующихся для хранения и графического отображения динамических данных. С их помощью nagiosgraph будет собирать информацию для отображения на графике.
1 2 | cd /usr/ports/net-mgmt/nagiosgraph/ make install clean |
В /usr/local/etc/nagios/nagios.cfg раскомментировать следующие строки и привести их к аналогичному виду:
1 2 3 4 5 6 | process_performance_data=1 service_perfdata_file=/var/spool/nagios/perfdata.log service_perfdata_file_template=$LASTSERVICECHECK$||$HOSTNAME$||$SERVICEDESC$||$SERVICEOUTPUT$||$SERVICEPERFDATA$ service_perfdata_file_mode=a service_perfdata_file_processing_interval=30 service_perfdata_file_processing_command=process-service-perfdata |
Дальше идем в /usr/local/etc/nagios/objects/commands.cfg и описываем команду:
1 2 3 4 | define command{ command_name process-service-perfdata command_line /usr/bin/perl /usr/local/libexec/nagiosgraph/insert.pl } |
Ссылку на графики можно обозначить несколькими способами, например описать в шаблоне:
1 2 3 4 5 6 7 8 9 | define service{ name local-service use generic-service action_url /nagios/cgi-bin/nagiosgraph/show.cgi?host=$HOSTNAME$&service=$SERVICEDESC$&geom=450x150 max_check_attempts 4 normal_check_interval 5 retry_check_interval 1 register 0 } |
Или для каждого хоста отдельно:
1 2 3 4 5 6 | define host{ use linux-server host_name www address 192.168.0.12 action_url /nagios/cgi-bin/nagiosgraph/show.cgi?host=$HOSTNAME$&service=$SERVICEDESC$&geom=450x150 } |
Важный момент — в templates.cfg, в описании generic-service обязательно должно быть указано
1 | process_perf_data 1 |
Теперь настройки nagiosgraph.
Создаем каталог, в который будут складываться базы:
1 2 | mkdir /var/spool/nagios/rrd/ chown nagios:nagios /var/spool/nagios/rrd/ |
Создаем конфиги и логи:
1 2 3 4 5 6 | cd /usr/local/etc/nagios/nagiosgraph/ cp nagiosgraph.conf.sample nagiosgraph.conf cp map.sample map touch /var/spool/nagios/nagiosgraph.log chown nagios:www /var/spool/nagios/nagiosgraph.log chmod 664 /var/spool/nagios/nagiosgraph.log |
Лог быстро растет, поэтому зададим ротацию логов в /etc/newsyslog.conf строчкой
1 | /var/spool/nagios/nagiosgraph.log nagios:www 664 5 500 * J# |
Внимательно отслеживаем все пути нахождения файлов и приводим конфиг nagiosgraph.conf к такому виду:
1 2 3 4 5 6 7 8 9 10 11 12 13 | debug = 2 logfile = /var/spool/nagios/nagiosgraph.log rrddir = /var/spool/nagios/rrd mapfile = /usr/local/etc/nagios/nagiosgraph/map nagiosgraphcgiurl =/nagios/cgi-bin/nagiosgraph nagioscgiurl = /nagios/cgi-bin javascript = /nagios/stylesheets/nagiosgraph.js colorscheme = 3 heartbeat = 600 perflog = /var/spool/nagios/perfdata.log stylesheet = /nagios/stylesheets/nagiosgraph.css dbseparator = subdir plotas = LINE2 |
В файле map описаны примеры того, в каком виде данные будут отображаться на графике. Например ping:
1 2 3 4 |
В оригинале map-файла кавычки отсутствуют. Автором не изучено влияние кавычек на корректную работу сервиса, но на всякий случай мы их поставим :)
Прописываем в /usr/local/libexec/nagiosgraph/insert.pl правильный путь к конфигу:
1 2 | # Configuration my $configfile = '/usr/local/etc/nagios/nagiosgraph/nagiosgraph.conf'; |
И аналогичным образом в /usr/local/www/nagios/cgi-bin/nagiosgraph/show.cgi:
1 2 | # Configuration my $configfile = '/usr/local/etc/nagios/nagiosgraph/nagiosgraph.conf'; |
Теперь перезапускаем нагиос
1 | /usr/local/etc/rc.d/nagios restart |
Ждем некоторое время, пока заполнится база и любуемся графиками :)
Ну а в случае, если что то пошло не так — включаем максимальный уровень дебага, читаем логи, внимательно проверяем конфиги и права на файлы.