Является ли icmp ping надежным способом мониторинга работы хоста в EC2?

Мы используем icmp ping для определения состояния хоста вверх / вниз от icinga2 в нашей среде AWS EC2. Это хорошо работает, но у нас было несколько проблем, когда хост не сможет пропинговать, но его сервисы все еще в порядке.

У моего коллеги сложилось впечатление, что Amazon иногда ограничивает трафик icmp и что это является причиной наших ложных предупреждений.

Итак, два вопроса:

  1. Это правда? Амазонка иногда душит icmp?

  2. Есть ли лучшая альтернатива icmp ping для нашей системы мониторинга, чтобы использовать для определения хоста вверх / вниз?

Конечно, мы также отслеживаем сервисы, но хост / up / down полезен для мониторинга в тех случаях, когда хост, а не сервис, вышел из строя.

2 ответа

Я не знаю ничего конкретного о реализации Amazon, поэтому мой ответ будет касаться только общего поведения.

Существуют RFC, которые рекомендуют регулирование ICMP-пакетов, генерируемых узлом, но они не применяются для пересылки ICMP-пакетов маршрутизаторами. Я не знаю какой-либо веской причины, по которой маршрутизатор может перенаправлять некоторые пересылаемые пакеты в отличие от других.

Однако отправка пакетов для разных номеров портов по разным каналам связи с целью балансировки нагрузки - это особенность, которой обладает большое количество оборудования, и, если такая функция используется, вполне возможно, что ваши ICMP-пакеты будут маршрутизироваться по другому физическому сетевому пути, чем пакеты на ваш сервисный порт. Это возможное объяснение наблюдения разницы.

Обратите внимание, что в правильно настроенной настройке вы должны ожидать, что эхо-запросы ICMP будут более надежными, чем ваша служба, а не менее надежными. И это само по себе является достаточной причиной, чтобы избегать использования эхо-запросов ICMP для проверки работоспособности.

Причина того, что эхо-запросы ICMP более надежны, состоит в том, что они имеют меньше зависимостей. На эхо-запрос ICMP отвечает сетевой стек ядра, и поэтому вы можете иметь машину в очень плохом состоянии и при этом быть в состоянии отвечать на эхо-запросы ICMP.

Как правило, существует два типа проверок высокого уровня, используемых для мониторинга службы, работающей на традиционном экземпляре или виртуальной машине: проверки на уровне хоста и проверки уровня обслуживания.

Проверки уровня хоста обычно выполняются с помощью стека мониторинга агента и / или ваших облачных провайдеров и отслеживания таких показателей, как загрузка ЦП, загрузка ЦП, доступная память, свободное место на диске и т. Д.

Проверки уровня обслуживания контролируют сам сервис, чаще всего через заранее определенную конечную точку проверки работоспособности, такую ​​как /healthcheck, Вы должны настроить проверку службы для выполнения HTTP GET для этой конечной точки, а если ответ 200 не предоставлен, выдать предупреждение о плохом состоянии.

Вот несколько других основных примеров, которые следует учитывать при настройке проверки работоспособности:

  1. Проверьте служебную документацию (или встроите ее в свою службу) на наличие уже существующей конечной точки проверки работоспособности.
  2. Если служба является веб-службой или имеет какие-либо конечные точки HTTP, рассмотрите возможность их использования в качестве цели для проверки здоровья.
  3. Если служба выводит журналы на диск или в системный журнал, вы можете отслеживать журналы по ключевым словам, которые указывают на ошибку, или отслеживать журнал, который не обновлялся в течение определенного интервала
  4. Если перед службой установлен балансировщик нагрузки, например Amazon ELB или Google NLB, вы можете отслеживать ответы с сервера по метрикам, которые они вам предоставляют.

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

Использование ICMP не является идеальной проверкой, поскольку это самая базовая форма проверки на уровне хоста. Он не будет сообщать о состоянии самой службы и должен быть одним из ваших последних вариантов.

Обновление Я увидел, что этот ответ был помечен как не отвечающий на оригинальный вопрос, что меня немного удивило. Я буду более прямым. Не используйте ICMP для мониторинга статистики на уровне хоста по причинам, которые я упомянул выше.

Другие вопросы по тегам