Является ли icmp ping надежным способом мониторинга работы хоста в EC2?
Мы используем icmp ping для определения состояния хоста вверх / вниз от icinga2 в нашей среде AWS EC2. Это хорошо работает, но у нас было несколько проблем, когда хост не сможет пропинговать, но его сервисы все еще в порядке.
У моего коллеги сложилось впечатление, что Amazon иногда ограничивает трафик icmp и что это является причиной наших ложных предупреждений.
Итак, два вопроса:
Это правда? Амазонка иногда душит icmp?
Есть ли лучшая альтернатива icmp ping для нашей системы мониторинга, чтобы использовать для определения хоста вверх / вниз?
Конечно, мы также отслеживаем сервисы, но хост / up / down полезен для мониторинга в тех случаях, когда хост, а не сервис, вышел из строя.
2 ответа
Я не знаю ничего конкретного о реализации Amazon, поэтому мой ответ будет касаться только общего поведения.
Существуют RFC, которые рекомендуют регулирование ICMP-пакетов, генерируемых узлом, но они не применяются для пересылки ICMP-пакетов маршрутизаторами. Я не знаю какой-либо веской причины, по которой маршрутизатор может перенаправлять некоторые пересылаемые пакеты в отличие от других.
Однако отправка пакетов для разных номеров портов по разным каналам связи с целью балансировки нагрузки - это особенность, которой обладает большое количество оборудования, и, если такая функция используется, вполне возможно, что ваши ICMP-пакеты будут маршрутизироваться по другому физическому сетевому пути, чем пакеты на ваш сервисный порт. Это возможное объяснение наблюдения разницы.
Обратите внимание, что в правильно настроенной настройке вы должны ожидать, что эхо-запросы ICMP будут более надежными, чем ваша служба, а не менее надежными. И это само по себе является достаточной причиной, чтобы избегать использования эхо-запросов ICMP для проверки работоспособности.
Причина того, что эхо-запросы ICMP более надежны, состоит в том, что они имеют меньше зависимостей. На эхо-запрос ICMP отвечает сетевой стек ядра, и поэтому вы можете иметь машину в очень плохом состоянии и при этом быть в состоянии отвечать на эхо-запросы ICMP.
Как правило, существует два типа проверок высокого уровня, используемых для мониторинга службы, работающей на традиционном экземпляре или виртуальной машине: проверки на уровне хоста и проверки уровня обслуживания.
Проверки уровня хоста обычно выполняются с помощью стека мониторинга агента и / или ваших облачных провайдеров и отслеживания таких показателей, как загрузка ЦП, загрузка ЦП, доступная память, свободное место на диске и т. Д.
Проверки уровня обслуживания контролируют сам сервис, чаще всего через заранее определенную конечную точку проверки работоспособности, такую как /healthcheck
, Вы должны настроить проверку службы для выполнения HTTP GET для этой конечной точки, а если ответ 200 не предоставлен, выдать предупреждение о плохом состоянии.
Вот несколько других основных примеров, которые следует учитывать при настройке проверки работоспособности:
- Проверьте служебную документацию (или встроите ее в свою службу) на наличие уже существующей конечной точки проверки работоспособности.
- Если служба является веб-службой или имеет какие-либо конечные точки HTTP, рассмотрите возможность их использования в качестве цели для проверки здоровья.
- Если служба выводит журналы на диск или в системный журнал, вы можете отслеживать журналы по ключевым словам, которые указывают на ошибку, или отслеживать журнал, который не обновлялся в течение определенного интервала
- Если перед службой установлен балансировщик нагрузки, например Amazon ELB или Google NLB, вы можете отслеживать ответы с сервера по метрикам, которые они вам предоставляют.
В больших распределенных средах статистику обычно собирают в базы данных временных рядов, такие как Graphite или InfluxDB. Ваш сервер мониторинга регулярно проверяет определенные показатели в течение установленного периода на наличие аномалий.
Использование ICMP не является идеальной проверкой, поскольку это самая базовая форма проверки на уровне хоста. Он не будет сообщать о состоянии самой службы и должен быть одним из ваших последних вариантов.
Обновление Я увидел, что этот ответ был помечен как не отвечающий на оригинальный вопрос, что меня немного удивило. Я буду более прямым. Не используйте ICMP для мониторинга статистики на уровне хоста по причинам, которые я упомянул выше.