У нас есть бизнес SAAS, и у нас есть сотни процессов, которые могут перемещаться от сервера к серверу. Это процессы .net, которые могут быть созданы (запущены) на любой из группы машин, запускаться в течение определенного периода времени (обычно недель), а затем переноситься на другую машину.
Эти процессы имеют много разных выходных временных рядов (которые транслируются с помощью RabbitMQ), и у нас есть собственная индивидуальная система для мониторинга процессов приложений.
У нас есть множество инструментов мониторинга (например, LogicMonitor), но мы начинаем использовать Zabbix для мониторинга серверов.
Для меня имеет смысл помещать все данные временных рядов из всех источников (коммутаторы, серверы, хосты, виртуальные машины, приложения) в одно место, потому что тогда мы можем сравнивать данные на уровне сервера (например, загрузка ЦП, загрузка памяти).
Я подумываю использовать для этого Zabbix.
Я вижу, что Zabbix поддерживает отправку данных временных рядов с помощью https://www.zabbix.com/documentation/3.0/manual/concepts/sender. Так что я знаю, что могу добавить туда данные.
Я изо всех сил пытаюсь понять, как настроить Zabbix для этого, учитывая, что Zabbix ориентирован на сервер, с ключами для данных каждого временного ряда. Но я думаю, что это обычный сценарий, но я новичок в Zabbix.
Я представляю себе иерархию по следующим направлениям:
DataCenter (1 of n)
-> Rack (1 of n)
keys (eg power used)
-> Physical Machine (1 of n) "The hosts"
keys (eg CPU, Memory, Network Bandwidth)
-> VM (1 of n)
keys (eg CPU, Memory, Network Bandwidth)
-> Application
keys (eg CPU, Memory, Network Bandwidth, Jobs per second etc)
Это что-то поддерживает Zabbix? Я подумал, возможно, использовать соглашение об именах для хоста или ключей, но мне кажется, что я делаю что-то не так.
Как вы упомянули, Zabbix разработан для хостов / серверов и ключей, поэтому в качестве первого шага для моделирования вашей иерархии вы можете создать хосты для каждой виртуальной машины, а затем использовать группы хостов по мере необходимости для центров обработки данных или стоек.
Zabbix не имеет встроенной поддержки кластеров или перемещаемых приложений. Для наблюдения за ними я обычно создаю «мета-хосты», в основном пустые записи хоста без какого-либо агента. Затем я использую некоторый сценарий мониторинга для отправки элементов траппера zabbix на этот хост.
Например: использование трех виртуальных машин app1, app2, app3 с обычным системным мониторингом (ЦП, память), в дополнение к одному «мета-хосту» service1 с моим шаблоном приложения. Затем мое приложение в роуминге отправляет данные мониторинга с zabbix_sender -z zabbixserver -s service1 -k service.some.stat -o 42
(или эквивалентный вызов библиотеки для языка программирования).
В результате у меня будет системная статистика для всех виртуальных машин и непрерывная статистика приложений, а не периодическая статистика приложений, распределенная по трем виртуальным машинам.