Nagios и NagiosGraph: рисуем графики
Все знают, что директора любят таблицы, диаграммы и графики :) Это всё потому, что из за большой загруженности удобнее отследить динамику изменений на графике, получить сводные данные в таблице и их соотношение в диаграмме. Поэтому специально для них будем учить nagios строить цветастые графики по статистике наблюдаемых сервисов.
Для реализации задуманного нам потребуется плагин Nagiosgraph. При установке он за собой потащит много всего интересного, но самое для нас интересное — это RRDTool. Это есть набор утилит для работы с кольцевыми базами данных, использующихся для хранения и графического отображения динамических данных. С их помощью nagiosgraph будет собирать информацию для отображения на графике.
[cc lang=»bash»]cd /usr/ports/net-mgmt/nagiosgraph/
make install clean[/cc]
В /usr/local/etc/nagios/nagios.cfg раскомментировать следующие строки и привести их к аналогичному виду:
[cc lang=»perl»]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[/cc]
Дальше идем в /usr/local/etc/nagios/objects/commands.cfg и описываем команду:
[cc lang=»perl»]define command{
command_name process-service-perfdata
command_line /usr/bin/perl /usr/local/libexec/nagiosgraph/insert.pl
}[/cc]
Ссылку на графики можно обозначить несколькими способами, например описать в шаблоне:
[cc lang=»perl»]define service{
name local-service
use generic-service
action_url /nagios/cgi-bin/nagiosgraph/show.cgi?host=$HOSTNAME$&service=$SERVICEDESC$&geom=450×150
max_check_attempts 4
normal_check_interval 5
retry_check_interval 1
register 0
}[/cc]
Или для каждого хоста отдельно:
[cc lang=»perl»]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=450×150
}[/cc]
Важный момент — в templates.cfg, в описании generic-service обязательно должно быть указано
[cc lang=»perl»]process_perf_data 1 [/cc]
Теперь настройки nagiosgraph.
Создаем каталог, в который будут складываться базы:
[cc lang=»bash»]mkdir /var/spool/nagios/rrd/
chown nagios:nagios /var/spool/nagios/rrd/[/cc]
Создаем конфиги и логи:
[cc lang=»bash»]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[/cc]
Лог быстро растет, поэтому зададим ротацию логов в /etc/newsyslog.conf строчкой
[cc lang=»bash»]/var/spool/nagios/nagiosgraph.log nagios:www 664 5 500 * J# [/cc]
Внимательно отслеживаем все пути нахождения файлов и приводим конфиг nagiosgraph.conf к такому виду:
[cc lang=»perl»]
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
[/cc]
В файле map описаны примеры того, в каком виде данные будут отображаться на графике. Например ping:
[cc lang=»perl»]/output:PING.*?(\d+)%.+?([.\d]+)\sms/
and push @s, [ ‘ping’,
[ ‘losspct’, GAUGE, $1 ],
[ ‘rta’, GAUGE, $2 ] ];
[/cc]
В оригинале map-файла кавычки отсутствуют. Автором не изучено влияние кавычек на корректную работу сервиса, но на всякий случай мы их поставим :)
Прописываем в /usr/local/libexec/nagiosgraph/insert.pl правильный путь к конфигу:
[cc lang=»perl»]# Configuration
my $configfile = ‘/usr/local/etc/nagios/nagiosgraph/nagiosgraph.conf’;
[/cc]
И аналогичным образом в /usr/local/www/nagios/cgi-bin/nagiosgraph/show.cgi:
[cc lang=»perl»]# Configuration
my $configfile = ‘/usr/local/etc/nagios/nagiosgraph/nagiosgraph.conf’;[/cc]
Теперь перезапускаем нагиос
[cc lang=»bash»]/usr/local/etc/rc.d/nagios restart[/cc]
Ждем некоторое время, пока заполнится база и любуемся графиками :)
Ну а в случае, если что то пошло не так — включаем максимальный уровень дебага, читаем логи, внимательно проверяем конфиги и права на файлы.