В последнее время на моей установке nagios 3.2.3 (CentOS5, мониторинг ~ 300 хостов, 1150 сервисов) sdtarted иногда сообщал о высокой потере пакетов на 50-60 хостах за раз. Проблема в том, что это подделка. Выполнение команды ping вручную (или собственного бинарного файла check_ping) не обнаруживает ошибок ни на одном из затронутых хостов. Единственные возможные лекарства, которые я нашел до сих пор:
Я подозреваю (но у меня нет особой причины, кроме успешных одиночных перепланированных проверок), что проблема может заключаться в том, что все проверки массово планируются вместе - в этом случае может помочь внесение некоторого дрожания в планирование (как?). Или это может быть что-то совсем другое.
Идеи, кто-нибудь?
Редактировать:
Для людей, заинтересованных в конструктивной дискуссии (а не в подсчете очков). Я не пытаюсь измерить потерю пакетов. В данном случае меня не интересует производительность сети, и если бы это было так, это было бы исследовано с помощью соответствующих инструментов. NAGIOS (для неосторожных) в основном используется для проверки работоспособности служб хоста и для генерации предупреждений. Поэтому когда он начинает генерировать большое количество рыбных предупреждений, это очень раздражает. Я на 99,9% уверен, что проблема связана либо с:
возможно, вызвано пачкой запросов, отправленных планировщиком nagios. Все потери пакетов превышают 50% - если бы они были реальными, наши телефоны таяли бы. Пока у меня нет доказательств в пользу (2), поэтому я ищу «предшествующий уровень техники» в (1). Я вполне могу ошибаться в своем убеждении, но, если мне нужно обратиться к wirehark или аналогичному, я буду очень признателен за предложение о том, что искать.
После того, как вы проверили потерю пакетов с помощью различных инструментов, прежде всего вам нужно выяснить, какой плагин на самом деле проверяет потерю пакетов. Найдите этот плагин и вручную запустите его через интервал, определенный в nagios, и проверьте его вывод, если это может дать вам подсказку. Проблема не в том, что происходит потеря пакетов, а в том, что это ошибка плагина. как только вы проверите вывод плагина, сравните его с выводом других инструментов (чтобы увидеть, показывает ли он потерю пакетов, а другие нет). Обычно это плагин check_ping.
У меня была аналогичная проблема при первой попытке с Nagios. Пытаясь решить проблему, я обнаружил этот сообщение в блоге, в котором говорится, что проблема может возникнуть, если вы пытаетесь выполнить ping на сервере IPV6 без адреса IPV6 на вашем сервере.
Итак, решение состоит в том, чтобы переписать команду "check_ping" в ваших объектных файлах конфигурации Nagios. В один из наших файлов .cfg я добавил следующее:
define command {
command_name check_ping_ipv4
command_line $USER1$/check_ping -4 -H $HOSTADDRESS$ -w 3000.0,80% -c 5000.0,100% -p 5
}
Обратите внимание на параметр "-4" после check_ping
команда. Это заставит ping использовать только IPV4. После определения приведенной выше команды я мог бы использовать ее в определении службы. Например:
define service {
service_description PING
host_name MYHOST
check_command check_ping_ipv4!100.0,20%!500.0,60%
use generic-service
}
Выполнение команды ping вручную (или собственного бинарного файла check_ping) не обнаруживает ошибок ни на одном из затронутых хостов
Это действительно глупый способ проверить потерю пакетов. Вы должны сравнивать повторные передачи, регистрируемые для сетевого адаптера через определенные промежутки времени (netstat -r), или собирать трафик с помощью таких инструментов, как pastmon или wirehark. Поскольку:
1) вы уже сказали, что потеря пакетов происходит пачками - как узнать, что вы выполняли эхо-запрос на пути во время потери пакетов?
2) небольшие потери пакетов могут иметь большое влияние на пропускную способность - поэтому мы отслеживаем их - если вы хотите подтвердить потерю пакетов на 1%, тогда вам нужно будет отправить не менее 200 пакетов по пути - сколько ты отправил?
3) Однако преобладающий WTF здесь заключается в том, что TCP и, в меньшей степени, UDP, ведут себя очень иначе, чем ICMP - последний гораздо меньше подвержен проблемам с перегрузкой (даже при условии постоянного MTU 1500).
т.е. вы не предоставили достоверных доказательств того, что потеря пакетов является подделкой. Однако вы предоставили доказательства того, что не совсем понимаете, что пытались измерить.
но другие хосты в тех же сетях не имеют такой же потери
Как вы думаете, потеря пакетов происходит только между хостами? Это неправильно.