Плагин ping написан Андреем Павловым. Плагин предназначен для проверки достижимости хостов на уровне сети. Плагин формирует и отсылаем ICMP сообщения типа 8 (ping запросы) и ожидает в ответ на них ICMP сообщения типа 0 (ping отклик). Поскольку плагин сам формирует ICMP запросы, то для их посылка требуется RAW socket. А следовательно либо исполняемый файл плагина имеет setuid флаг, либо плагин запускается через sudo. При запуске плагин пытается получить IP адреса всех интересующих его серверов и затем быстро отсылает им ping запросы. Быстро в данном случае означает то, что плагин не делает отдельного ребенка на каждый запрос, а наоборот все выполняет сам. Затем плагин некоторое время ждет и затем читает из сокета пришедшие ответы. Для определения своих пар запрос-ответ плагин прописывает в запросы (и конечно же получает в ответах) свой PID. Ответы не пришедшие в течении определенного времени отбрасывабтся. Причем время прихода ответа сравнивается с временем отправления ответ, которое как и PID процесса путешествует по сети внутри ICMP пакета. Такая схема хорошо зарекомендовала себя при попытке замены ей SMTP мониторинга RELCOM'а. Одновременно проверялось более 120 хостов. Кроме того, посылка PID внутри ICMP запроса позволяет работать нескольким экземплярам плагина, причем не обязательно в пределах одной системы мониторинга.
Параметры сервиса в карточке объекта черезвычайно просты:
Up | [_] | Хост достижим. На посланный запрос возврашается ответ в пределах допустимого времени. |
Down | [_] | Хост не достижим. В ответ на запрос ничего не поступило. |
Not stated | [_] | Не используется |
Not stated | [_] | Не используется |
Error in resolve | [_] | Не найден IP адрес для данного хоста. Поскольку IP адреса хостов определяются только один раз (при старте плагина), то данный хост не будет в дальнейшем опрашиваться. |
Destination host unreacheble | [_] | Хост не достижим. В ответ на запрос пришло сообщение о недостижимости данного хоста. |