Nagios - "рихтуем" систему под себя. Создание команд проверки.

  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:8329c29d0b4f63b5130205287041bb33' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p class=\"rtecenter\"><img alt=\"Nagios логотип\" src=\"http://muff.kiev.ua/files/nagios-logo.png\" style=\"height:38px; width:140px\" /></p>\n<p class=\"rtejustify\">&nbsp;</p>\n<p class=\"rtejustify\"><a href=\"http://muff.kiev.ua/content/nastroika-sistemy-monitoringa-nagios-3x-i-utility-konfigurirovaniya-nconf\">Nagios настроен</a> и работает... Теперь&nbsp;попробуем описать ситуации,&nbsp;когда пришлось поработать &quot;напильником&quot;.</p>\n<hr />\n<p class=\"rtejustify\"><strong>&quot;Длинный пинг&quot;. </strong></p>\n<p class=\"rtejustify\">Мониторится корпоративная сеть, к тому же офисы регионально и техплощадки регионально разбросаны. В&nbsp;результате имеем пинг&nbsp;к некоторым&nbsp;хостам в удаленном офисе - &nbsp;400 милисекунд (да,&nbsp;я не опечатался,&nbsp;как никак 8 тыс. км и 22 хопа по traceroute). <strong>Nagios</strong> &quot;возмущается&quot; на такое дело, и сообщает,&nbsp;что &quot;PING CRITICAL - Packet loss = 0%, RTA = 403.51 ms&quot;.</p>\n<p class=\"rtejustify\">Решение оказалось несложным. Просматриваем сервисы, назначенные этому хосту и жмем кнопку редактирования команды &quot;<strong>check_ping</strong>&quot;. Изменяем параметры &quot;<strong>ARG1</strong>&quot; и &quot;<strong>ARG2</strong>&quot; на подходящие значения, где &quot;<strong>ARG1</strong>&quot; - Warning level, а &quot;<strong>ARG2</strong>&quot; - Critical Level.</p>\n<p class=\"rtejustify\">Генерируем конфигурацию и идем пить пиво...</p>\n<p class=\"rtejustify\"><strong>Результат:</strong> PING OK - Packet loss = 0%, RTA = 407.56 ms</p>\n<hr />\n<p class=\"rtejustify\"><strong>&quot;check_dns&quot;</strong></p>\n<p class=\"rtejustify\">Необходимо проверять,&nbsp;обрабатывает <strong>DNS</strong>-сервер запросы,&nbsp;или нет. Поможет в этом плагин &quot;<strong>check_dns</strong>&quot;. Необходимое условие - <strong>DNS</strong>-сервер должен обрабатывать запросы с сервера,&nbsp;на котором установлен <strong>Nagios</strong>.</p>\n<p class=\"rtejustify\">Создаем новую &quot;<strong>Checkcommand</strong>&quot; - &quot;<strong>check_dns</strong>&quot;<strong>.</strong></p>\n<p class=\"rtejustify\">Для этого в меню &quot;<strong>Additional Items</strong>&quot;, пункт &quot;<strong>Checkcommands</strong>&quot; жмем кнопку &quot;<strong>Add</strong>&quot; и заполняем форму следующим образом:</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td class=\"rteleft\"><strong>check command name</strong></td>\n<td class=\"rteleft\">check_dns</td>\n</tr>\n<tr>\n<td class=\"rteleft\"><strong>default service name</strong></td>\n<td class=\"rteleft\">&nbsp;</td>\n</tr>\n<tr>\n<td class=\"rteleft\"><strong>check command line</strong></td>\n<td class=\"rteleft\">$USER1$/check_dns -H <a href=\"http://www.yahoo.com\" title=\"www.yahoo.com\">www.yahoo.com</a> -s $HOSTADDRESS$</td>\n</tr>\n<tr>\n<td class=\"rteleft\"><strong>command description</strong></td>\n<td class=\"rteleft\">ARG1=Multiple options</td>\n</tr>\n<tr>\n<td class=\"rteleft\"><strong>default command params</strong></td>\n<td>!</td>\n</tr>\n<tr>\n<td><strong>amount of params</strong></td>\n<td>1</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Результат:</strong> DNS OK: 0.233 seconds response time. <a href=\"http://www.yahoo.com\" title=\"www.yahoo.com\">www.yahoo.com</a> returns 87.248.122.122</p>\n<hr />\n<p>&nbsp;<strong>&quot;check_telnet&quot;</strong></p>\n<p class=\"rtejustify\">Необходимо проверять возможность подключения к хосту по <strong>Telnet</strong>.&nbsp;Стандартного плагина нету,&nbsp;но мы знаем, что телнет запущен на 23 порту,&nbsp;протокол TCP. Поэтому воспользуемся&nbsp;возможностями&nbsp;&quot;<strong>check_tcp</strong>&quot;.</p>\n<p class=\"rtejustify\">Создаем новую &quot;<strong>Checkcommand</strong>&quot; - &quot;<strong>check_telnet</strong>&quot;:</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td class=\"rteleft\"><strong>check command name</strong></td>\n<td class=\"rteleft\">check_telnet</td>\n</tr>\n<tr>\n<td class=\"rteleft\"><strong>default service name</strong></td>\n<td class=\"rteleft\">&nbsp;</td>\n</tr>\n<tr>\n<td class=\"rteleft\"><strong>check command line</strong></td>\n<td class=\"rteleft\">$USER1$/check_tcp -H $HOSTADDRESS$ -p 23</td>\n</tr>\n<tr>\n<td class=\"rteleft\"><strong>command description</strong></td>\n<td class=\"rteleft\">ARG1=Multiple options</td>\n</tr>\n<tr>\n<td class=\"rteleft\"><strong>default command params</strong></td>\n<td>!</td>\n</tr>\n<tr>\n<td><strong>amount of params</strong></td>\n<td>1</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Результат:</strong> TCP OK - 0.001 second response time on port 23|time=0.001366s;;;0.000000;10.000000</p>\n<hr />\n<p><strong>&quot;check_vpn&quot;</strong></p>\n<p class=\"rtejustify\">Необходимо проверять возможность подключения по VPN-у.&nbsp;Стандартного плагина нету,&nbsp;а&nbsp;VPN&nbsp;работает на порту 1723,&nbsp;протокол TCP. Поэтому воспользуемся&nbsp;возможностями&nbsp;&quot;<strong>check_tcp</strong>&quot;.</p>\n<p class=\"rtejustify\">Создаем новую &quot;<strong>Checkcommand</strong>&quot; - &quot;<strong>check_vpn</strong>&quot;:</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td class=\"rteleft\"><strong>check command name</strong></td>\n<td class=\"rteleft\">check_vpn</td>\n</tr>\n<tr>\n<td class=\"rteleft\"><strong>default service name</strong></td>\n<td class=\"rteleft\">&nbsp;</td>\n</tr>\n<tr>\n<td class=\"rteleft\"><strong>check command line</strong></td>\n<td class=\"rteleft\">$USER1$/check_tcp -H $HOSTADDRESS$ -p 1723</td>\n</tr>\n<tr>\n<td class=\"rteleft\"><strong>command description</strong></td>\n<td class=\"rteleft\">ARG1=Multiple options</td>\n</tr>\n<tr>\n<td class=\"rteleft\"><strong>default command params</strong></td>\n<td>!</td>\n</tr>\n<tr>\n<td><strong>amount of params</strong></td>\n<td>1</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Результат:</strong> TCP OK - 0.001 second response time on port 1723|time=0.000582s;;;0.000000;10.000000</p>\n<hr />\n<p><strong>&quot;check_mysql&quot;</strong></p>\n<p class=\"rtejustify\">Необходимо проверять возможность подключения к БД MySQL. Воспользуемся&nbsp;возможностями&nbsp;плагина &quot;<strong>check_mysql</strong>&quot;.</p>\n<p class=\"rtejustify\">Создаем новую &quot;<strong>Checkcommand</strong>&quot; - &quot;<strong>check_mysql</strong>&quot;:</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td class=\"rteleft\"><strong>check command name</strong></td>\n<td class=\"rteleft\">check_mysql</td>\n</tr>\n<tr>\n<td class=\"rteleft\"><strong>default service name</strong></td>\n<td class=\"rteleft\">&nbsp;</td>\n</tr>\n<tr>\n<td class=\"rteleft\"><strong>check command line</strong></td>\n<td class=\"rteleft\">$USER1$/check_mysql -H $HOSTADDRESS$ -u $ARG1$ -p $ARG2$</td>\n</tr>\n<tr>\n<td class=\"rteleft\"><strong>command description</strong></td>\n<td class=\"rteleft\">ARG1=Multiple options,ARG2=Multiple options</td>\n</tr>\n<tr>\n<td class=\"rteleft\"><strong>default command params</strong></td>\n<td>!nagios!nagios_pass</td>\n</tr>\n<tr>\n<td><strong>amount of params</strong></td>\n<td>2</td>\n</tr>\n</tbody>\n</table>\n<p>Не забываем на проверяемом хосте добавить пользователя MySQL:</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td>\n<p><strong># mysql -u muff -p</strong><br />\n Enter password:</p>\n<p><strong>mysql&gt; CREATE USER &#39;nagios&#39;@&#39;<span style=\"color:#ff0000\">ip_nagios_server_here</span>&#39; IDENTIFIED BY &#39;<span style=\"color:#ff0000\">nagios-pass</span>&#39;;</strong><br />\n Query OK, 0 rows affected (0.00 sec)</p>\n</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Результат:</strong>&nbsp;&nbsp;Uptime: 613210 Threads: 4 Questions: 2573878 Slow queries: 0 Opens: 67 Flush tables: 1 Open tables: 59 Queries per second avg: 4.197</p>\n<hr />\n<p>&nbsp;<strong>&quot;check_ntp&quot;</strong></p>\n<p class=\"rtejustify\">Будем проверять, работает ли сервер времени на хосте.&nbsp;Воспользуемся возможностями плагина &quot;<strong>check_ntp</strong>&quot;.</p>\n<p class=\"rtejustify\">Создаем новую &quot;<strong>Checkcommand</strong>&quot; - &quot;<strong>check_ntp</strong>&quot;:</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td class=\"rteleft\"><strong>check command name</strong></td>\n<td class=\"rteleft\">check_ntp</td>\n</tr>\n<tr>\n<td class=\"rteleft\"><strong>default service name</strong></td>\n<td class=\"rteleft\">&nbsp;</td>\n</tr>\n<tr>\n<td class=\"rteleft\"><strong>check command line</strong></td>\n<td class=\"rteleft\">$USER1$/check_ntp -H $HOSTADDRESS$ -w $ARG1$&nbsp;-c $ARG2$</td>\n</tr>\n<tr>\n<td class=\"rteleft\"><strong>command description</strong></td>\n<td class=\"rteleft\">ARG1=Warn level,ARG2=Critical Level</td>\n</tr>\n<tr>\n<td class=\"rteleft\"><strong>default command params</strong></td>\n<td>!0.4!0.9</td>\n</tr>\n<tr>\n<td><strong>amount of params</strong></td>\n<td>2</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Результат:</strong> NTP OK: Offset 0.005161 secs</p>\n<hr />\n<p>Пока все... Нестандартные проверки будут добавляться по мере необходимости...</p>\n<p>Кстати. Доступные команды проверки можно найти в каталоге&nbsp; <strong>/usr/local/libexec/nagios</strong>.</p>\n', created = 1767623902, expire = 1767710302, headers = '', serialized = 0 WHERE cid = '2:8329c29d0b4f63b5130205287041bb33' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:07243fc0252056071eaa62af8c18d662' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p class=\"rtecenter\"><a class=\"thickbox\" href=\"/files/imagepicker/1/wake_up_ua.png\"><img alt=\"Вставай, Україно!\" class=\"imgp_img\" src=\"/files/imagepicker/1/thumbs/wake_up_ua.png\" style=\"height:200px; width:150px\" /></a></p>\n', created = 1767623902, expire = 1767710302, headers = '', serialized = 0 WHERE cid = '2:07243fc0252056071eaa62af8c18d662' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '3:cc913d232116f0426090404133377d88' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:d9a86123bfcbc57878743027b584400b' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p class=\"rtecenter\"><a href=\"http://muff.kiev.ua/rss.xml\"><img alt=\"RSS\" width=\"160\" height=\"60\" src=\"http://muff.kiev.ua/files/muf-rss.png\" /></a></p>\n', created = 1767623902, expire = 1767710302, headers = '', serialized = 0 WHERE cid = '2:d9a86123bfcbc57878743027b584400b' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '3:39649256b636e3d5ded656bc52bd8c01' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
Версия для печатиОтправить другуPDF version

Nagios логотип

 

Nagios настроен и работает... Теперь попробуем описать ситуации, когда пришлось поработать "напильником".


"Длинный пинг".

Мониторится корпоративная сеть, к тому же офисы регионально и техплощадки регионально разбросаны. В результате имеем пинг к некоторым хостам в удаленном офисе -  400 милисекунд (да, я не опечатался, как никак 8 тыс. км и 22 хопа по traceroute). Nagios "возмущается" на такое дело, и сообщает, что "PING CRITICAL - Packet loss = 0%, RTA = 403.51 ms".

Решение оказалось несложным. Просматриваем сервисы, назначенные этому хосту и жмем кнопку редактирования команды "check_ping". Изменяем параметры "ARG1" и "ARG2" на подходящие значения, где "ARG1" - Warning level, а "ARG2" - Critical Level.

Генерируем конфигурацию и идем пить пиво...

Результат: PING OK - Packet loss = 0%, RTA = 407.56 ms


"check_dns"

Необходимо проверять, обрабатывает DNS-сервер запросы, или нет. Поможет в этом плагин "check_dns". Необходимое условие - DNS-сервер должен обрабатывать запросы с сервера, на котором установлен Nagios.

Создаем новую "Checkcommand" - "check_dns".

Для этого в меню "Additional Items", пункт "Checkcommands" жмем кнопку "Add" и заполняем форму следующим образом:

check command name check_dns
default service name  
check command line $USER1$/check_dns -H www.yahoo.com -s $HOSTADDRESS$
command description ARG1=Multiple options
default command params !
amount of params 1

Результат: DNS OK: 0.233 seconds response time. www.yahoo.com returns 87.248.122.122


 "check_telnet"

Необходимо проверять возможность подключения к хосту по Telnet. Стандартного плагина нету, но мы знаем, что телнет запущен на 23 порту, протокол TCP. Поэтому воспользуемся возможностями "check_tcp".

Создаем новую "Checkcommand" - "check_telnet":

check command name check_telnet
default service name  
check command line $USER1$/check_tcp -H $HOSTADDRESS$ -p 23
command description ARG1=Multiple options
default command params !
amount of params 1

Результат: TCP OK - 0.001 second response time on port 23|time=0.001366s;;;0.000000;10.000000


"check_vpn"

Необходимо проверять возможность подключения по VPN-у. Стандартного плагина нету, а VPN работает на порту 1723, протокол TCP. Поэтому воспользуемся возможностями "check_tcp".

Создаем новую "Checkcommand" - "check_vpn":

check command name check_vpn
default service name  
check command line $USER1$/check_tcp -H $HOSTADDRESS$ -p 1723
command description ARG1=Multiple options
default command params !
amount of params 1

Результат: TCP OK - 0.001 second response time on port 1723|time=0.000582s;;;0.000000;10.000000


"check_mysql"

Необходимо проверять возможность подключения к БД MySQL. Воспользуемся возможностями плагина "check_mysql".

Создаем новую "Checkcommand" - "check_mysql":

check command name check_mysql
default service name  
check command line $USER1$/check_mysql -H $HOSTADDRESS$ -u $ARG1$ -p $ARG2$
command description ARG1=Multiple options,ARG2=Multiple options
default command params !nagios!nagios_pass
amount of params 2

Не забываем на проверяемом хосте добавить пользователя MySQL:

# mysql -u muff -p
Enter password:

mysql> CREATE USER 'nagios'@'ip_nagios_server_here' IDENTIFIED BY 'nagios-pass';
Query OK, 0 rows affected (0.00 sec)

Результат:  Uptime: 613210 Threads: 4 Questions: 2573878 Slow queries: 0 Opens: 67 Flush tables: 1 Open tables: 59 Queries per second avg: 4.197


 "check_ntp"

Будем проверять, работает ли сервер времени на хосте. Воспользуемся возможностями плагина "check_ntp".

Создаем новую "Checkcommand" - "check_ntp":

check command name check_ntp
default service name  
check command line $USER1$/check_ntp -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$
command description ARG1=Warn level,ARG2=Critical Level
default command params !0.4!0.9
amount of params 2

Результат: NTP OK: Offset 0.005161 secs


Пока все... Нестандартные проверки будут добавляться по мере необходимости...

Кстати. Доступные команды проверки можно найти в каталоге  /usr/local/libexec/nagios.

Ваша оценка: Нет Средняя: 3.7 (3 голоса)

Вставай, Україно!

Литература

У вас в инструкции написано: "Hажать . Hо нигде не сказано, когда отпустить!"