Задача:
Наиболее простым и удобным в дальнешей настройке и работе способом организовать безагентный мониторинг нескольких десятков серверов, на каждом сервере работает 1-5 экземпляров веб-сервера (каждый экземпляр с собственными настройками и слушает собственный IP-адрес, каждый вариант настроек имеет собственный номер).
Для каждого экземпляра веб-сервера заведено доменное имя вида test-ServerNumber-WebServerNumber.domain.ru
На каждом физическом могут работать произвольные номера веб-серверов.
Например на физическом сервере 1 работают веб-сервера типов 1 и 2, а на физическом сервере 2 работают веб-сервера типов 2, 3, 4.
Первая мысль как организовать мониторинг:
1. Написать скрипт, который принимает 2 параметра: номер физического сервера и номер веб-сервера, который нужно проверить. Из них формирует доменное имя, делает HTTP-запрос, проверяет наличие строки и возвращает количество милисекунд, которое на это ушло (или 0 в случае ошибки).
2. Сделать один шаблон HTTP-Ping, в котором будет одна внешняя проверка с ключем my_script[{$SERVER} {$SERVICE_NUMBER}], включить её в группу данных например WebServerPing.
3. Для каждого типа веб-сервера присоединить шаблон HTTP-Ping и определить макрос {$SERVICE_NUMBER} и назвать их например HTTP-Ping-1, HTTP-Ping-2 и т.д.
4. Для каждого физического сервера задать присоединение шаблонов, созданных в пункте 3, в соответствие с теми типами веб-серверов, которые работают на физическом сервере и определить макрос {$SERVER}
Проблемы:
На шаге 4 Zabbix отказался подцеплять несколько шаблонов, выдав ошибки:
1. что внешняя проверка с ключем my_script[{$SERVER} {$SERVICE_NUMBER}]
2. Шаблон с группой данных WebServerPing уже привязан.
Как сделал сейчас:
1. Удалил шаблон HTTP-Ping и в каждом шаблоне вида HTTP-Ping-1 прописал команду вида my_script[{$SERVER} 1], т.е. руками забил туда тип веб-сервера и оставил только один макрос, определяющий номер физического сервера.
2. Исключил проверку из всех групп элементов.
Что не нравится в текущей ситуации:
1. Есть десяток однотипных шаблонов, с одинаковой командой, различающиеся лишь одной цифрой и при изменении параметров команды (например при добавлении новых параметров в скрипте или изменении имени скрипта) придется переписывать весь десяток шаблонов виду HTTP-Ping-1.
2. Поскольку это разные шаблоны нужно будет для каждого шаблона создавать свои триггеры и поддерживать их одинаковыми в каждом шаблоне, вместо того чтобы определить их в самом базовом шаблоне HTTP-Ping, а дальше бы они размножились макросами.
Уверен, что задачу можно решить проще, чем созданием большого количества шаблонов, видимо я что-то не понял в иерархии подключения шаблонов. Прошу подсказать направление в котором стоит как выстраивать мониторинг в такой системе.
Версия Zabbix 1.8.2
Наиболее простым и удобным в дальнешей настройке и работе способом организовать безагентный мониторинг нескольких десятков серверов, на каждом сервере работает 1-5 экземпляров веб-сервера (каждый экземпляр с собственными настройками и слушает собственный IP-адрес, каждый вариант настроек имеет собственный номер).
Для каждого экземпляра веб-сервера заведено доменное имя вида test-ServerNumber-WebServerNumber.domain.ru
На каждом физическом могут работать произвольные номера веб-серверов.
Например на физическом сервере 1 работают веб-сервера типов 1 и 2, а на физическом сервере 2 работают веб-сервера типов 2, 3, 4.
Первая мысль как организовать мониторинг:
1. Написать скрипт, который принимает 2 параметра: номер физического сервера и номер веб-сервера, который нужно проверить. Из них формирует доменное имя, делает HTTP-запрос, проверяет наличие строки и возвращает количество милисекунд, которое на это ушло (или 0 в случае ошибки).
2. Сделать один шаблон HTTP-Ping, в котором будет одна внешняя проверка с ключем my_script[{$SERVER} {$SERVICE_NUMBER}], включить её в группу данных например WebServerPing.
3. Для каждого типа веб-сервера присоединить шаблон HTTP-Ping и определить макрос {$SERVICE_NUMBER} и назвать их например HTTP-Ping-1, HTTP-Ping-2 и т.д.
4. Для каждого физического сервера задать присоединение шаблонов, созданных в пункте 3, в соответствие с теми типами веб-серверов, которые работают на физическом сервере и определить макрос {$SERVER}
Проблемы:
На шаге 4 Zabbix отказался подцеплять несколько шаблонов, выдав ошибки:
1. что внешняя проверка с ключем my_script[{$SERVER} {$SERVICE_NUMBER}]
2. Шаблон с группой данных WebServerPing уже привязан.
Как сделал сейчас:
1. Удалил шаблон HTTP-Ping и в каждом шаблоне вида HTTP-Ping-1 прописал команду вида my_script[{$SERVER} 1], т.е. руками забил туда тип веб-сервера и оставил только один макрос, определяющий номер физического сервера.
2. Исключил проверку из всех групп элементов.
Что не нравится в текущей ситуации:
1. Есть десяток однотипных шаблонов, с одинаковой командой, различающиеся лишь одной цифрой и при изменении параметров команды (например при добавлении новых параметров в скрипте или изменении имени скрипта) придется переписывать весь десяток шаблонов виду HTTP-Ping-1.
2. Поскольку это разные шаблоны нужно будет для каждого шаблона создавать свои триггеры и поддерживать их одинаковыми в каждом шаблоне, вместо того чтобы определить их в самом базовом шаблоне HTTP-Ping, а дальше бы они размножились макросами.
Уверен, что задачу можно решить проще, чем созданием большого количества шаблонов, видимо я что-то не понял в иерархии подключения шаблонов. Прошу подсказать направление в котором стоит как выстраивать мониторинг в такой системе.
Версия Zabbix 1.8.2
Comment