Я борюсь с обнаружением и мониторингом динамических (т. Е. Перемещаемых) контейнеров между несколькими физическими серверами и привязкой результатов к службе контейнеров, а не к серверу, на котором запущен агент, на котором он запущен.
У меня 2 сервера: А и Б; У меня один контейнер: C. C может работать как на A, так и на B, мой движок оркестровки (Swarm, Kubernetes, Rancher и т. Д.) Отвечает за то, чтобы он работал хотя бы в одном месте.
У меня есть агент zabbix на A и B, поэтому я могу контролировать процессор, файловую систему, память и все обычные вещи.
Я хочу контролировать 2 вещи:
Как мне настроить Zabbix и агенты, чтобы он сообщал как о состоянии C, так и о его процессах, независимо от того, где он запущен?
Мои предположения:
Мои вопросы:
Короче говоря, как мне настроить его для запуска автоматического обнаружения контейнера в качестве хоста, а затем проверки процесса для каждого из них, чтобы они запускались на каждом сервере с агентом в данной группе / шаблоне, но затем присоединяли вывод к Контейнер C, а не сервер A или B, на котором работает агент?
РЕДАКТИРОВАТЬ: Благодаря первому респонденту я получил идею «мета-хоста». Но это создает новые проблемы:
Это было бы намного проще, если бы я мог просто сказать «запустить обнаружение на всех хостах в группе Docker», что обнаружит все контейнеры C (и D и т. Д.) И добавит их в качестве хостов. А затем также скажите: «Запустить сценарий проверки процессов для всех контейнеров, которые были обнаружены автоматически», возможно, зная, какой агент в настоящее время имеет доступ к контейнеру (т.е. где он сейчас запущен).
Я начинаю все больше и больше ощущать, что Zabbix отлично подходит для мониторинга приложений, привязанных к определенному серверу, в меньшей степени для мониторинга приложений, которые перемещаются? Или я это неправильно понимаю?
Отказ от ответственности: я автор https://github.com/monitoringartist/Zabbix-Docker-Monitoring
Настроить стандарт Заббикс-Докер-Мониторинг на A и B.
Редактировать шаблон Docker - фильтровать обнаруженный контейнер по мере необходимости + удалять все прототипы триггеров.
Создайте новые вычисляемые элементы, которые объединят каждый связанный с C элемент из A и B в новые вычисляемые элементы C (вы можете создать C «метахост» в Zabbix) - настройте новые триггеры поверх этих новых показателей C.
Обновление: использование рассчитанные элементы для агрегирования - например, агрегат sum(docker.up[cid])
из A и B - тогда условие триггера "Контейнер cid не запущен" будет sum(docker.up[cid])<1
. Пожалуйста, прочтите Zabbix doc для правильного синтаксиса.
LLD обнаруживает, где находится ваш контейнер с банкоматом, и соответственно обновляет элементы / триггеры. Если вы хотите исключить любые ложные срабатывания, не забудьте настроить тайминги LLD / триггеров.