PING

Назначение, приципы работы и особенности

Плагин ping написан Андреем Павловым. Плагин предназначен для проверки достижимости хостов на уровне сети. Плагин формирует и отсылаем ICMP сообщения типа 8 (ping запросы) и ожидает в ответ на них ICMP сообщения типа 0 (ping отклик). Поскольку плагин сам формирует ICMP запросы, то для их посылка требуется RAW socket. А следовательно либо исполняемый файл плагина имеет setuid флаг, либо плагин запускается через sudo. При запуске плагин пытается получить IP адреса всех интересующих его серверов и затем быстро отсылает им ping запросы. Быстро в данном случае означает то, что плагин не делает отдельного ребенка на каждый запрос, а наоборот все выполняет сам. Затем плагин некоторое время ждет и затем читает из сокета пришедшие ответы. Для определения своих пар запрос-ответ плагин прописывает в запросы (и конечно же получает в ответах) свой PID. Ответы не пришедшие в течении определенного времени отбрасывабтся. Причем время прихода ответа сравнивается с временем отправления ответ, которое как и PID процесса путешествует по сети внутри ICMP пакета. Такая схема хорошо зарекомендовала себя при попытке замены ей SMTP мониторинга RELCOM'а. Одновременно проверялось более 120 хостов. Кроме того, посылка PID внутри ICMP запроса позволяет работать нескольким экземплярам плагина, причем не обязательно в пределах одной системы мониторинга.

Параметры сервиса

Параметры сервиса в карточке объекта черезвычайно просты:

Параметры плагина

Параметры плагина немногочисленны и смысл их очевиден.


eye=# select * from parametrs where nameofcfg = 'ping1';
 nameofcfg |   parametr   | value 
-----------+--------------+-------
 ping1     | StartCounter | 600
 ping1     | SendTime     | 50
(2 rows)

eye=# 

Поскольку плагин не делится на детей, то достаточно лишь обеспечить StartCounter>SendTime для правильной работы плагина. В противном случае даже при достижимых хостах будут наблюдаться периоды времени в течении которых мониторинг будет сигнализировать о недоступности всех хостов.

Применение

Возможные состояния сервиса:
Up [_]Хост достижим. На посланный запрос возврашается ответ в пределах допустимого времени.
Down[_]Хост не достижим. В ответ на запрос ничего не поступило.
Not stated[_]Не используется
Not stated[_]Не используется
Error in resolve[_]Не найден IP адрес для данного хоста. Поскольку IP адреса хостов определяются только один раз (при старте плагина), то данный хост не будет в дальнейшем опрашиваться.
Destination host unreacheble[_]Хост не достижим. В ответ на запрос пришло сообщение о недостижимости данного хоста.