- Установка Zabbix agent на Windows
- Загрузка агента
- Установка агента
- Установка из MSI-пакета
- Установка из архива
- Настройка брандмауэра
- Проверка работы
- RDP dog
- Zabbix Helper Kit и автоматизация обновления Zabbix Agent
- Что же такое Zabbix?
- Но есть одно нО
- Как обычно происходит развёртывание агента на Windows машины:
- Чем это грозит?
- Какой самый общий недостаток?
- Как должно выглядеть идеальное решение?
- Встречайте! Zabbix Helper Kit!
- Zabbix Helper Kit скачать
- Деплой Zabbix-агентов на большое количество Windows-based серверов с помощью Powershell
Установка Zabbix agent на Windows
В нашем примере мы установим агент для Zabbix на Windows в качестве службы, а также сделаем минимальную настройку для отправки данных на сервер.
Загрузка агента
Переходим на страницу загрузки агента Zabbix и выбираем платформу операционной системы (x32 или x64) и версию агента, например:
* помимо этого, мы можем выбрать вариант дистрибутива: с использованием шифрования или нет, а также файл установки — msi пакет или архив. В данном примере мы выбрали версию 5.
В зависимости от выбранных критериев поиска агента, ниже мы можем увидеть несколько вариантов для загрузки. Находим нужный и кликаем по DOWNLOAD для скачивания файла:
Ждем окончания загрузки и переходим к установке.
Установка агента
В зависимости от загрузки типа пакета (MSI или архив) будут разные методы установки. Рассмотрим оба.
Установка из MSI-пакета
Это удобный вариант, который позволит установить агента с помощью мастера. Чтобы начать, кликаем дважды по скачанному пакету и в окне приветствия нажимаем Next:
Принимаем лицензионное соглашение, установив галочку I accept the terms in the License Agreement и нажимаем Next:
В следующем окне оставляем имя компьютера, на который устанавливается агент и вводим имя или IP-адрес сервера zabbix, после кликаем по Next:
* в данном примере имя нашего компьютера Windows PC, а сервера — zabbix-server.dmosk.local.
Выбираем компоненты, которые хотим установить — можно просто оставить все по умолчанию и нажимаем Next:
Подтверждаем установку, кликая по Install:
Ждем завершения процесса — агент установлен.
Установка из архива
Данный метод требует дополнительных манипуляций, но с его помощью можно автоматизировать процесс. Мы рассмотрим только установку.
Распаковываем содержимое скачанного архива в каталог, где будут находиться файлы программы, например в C:\Program Files\Zabbix Agent. В итоге, у нас получится:
Открываем WordPad от администратора и в нем открываем конфигурационный файл conf/zabbix_agentd.conf и правим опцию для сервера zabbix — находим строку:
* где zabbix-server.dmosk.local — имя сервера Zabbix.
Теперь открываем командную строку от администратора и выполняем команду для установки агента:
«C:\Program Files\Zabbix Agent\bin\zabbix_agentd.exe» —config «C:\Program Files\Zabbix Agent\conf\zabbix_agentd.conf» —install
* где C:\Program Files\Zabbix Agent — папка, куда мы распаковали архив.
Мы должны увидеть что-то на подобие:
zabbix_agentd.exe [468]: service [Zabbix Agent] installed successfully
zabbix_agentd.exe [468]: event source [Zabbix Agent] installed successfully
Теперь открываем службы Windows и находим «Zabbix Agent» — кликаем по ней правой кнопкой мыши и выбираем Запустить:
Настройка брандмауэра
Если в нашей системе работает брандмауэр Windows, необходимо разрешить порт 10050 или приложение zabbix agent.
Для этого переходим в Панель управления — Система и безопасность — Брандмауэр Windows (или вводим команду control /name Microsoft.WindowsFirewall). Кликаем по ссылке Разрешение взаимодействия с приложением или компонентов в брандмауэре Windows — добавляем наше приложение zabbix_agentd в исключение.
Это же действие можно выполнить в powershell — запускаем ее от администратора и вводим команду:
New-NetFirewallRule -DisplayName «Разрешить приложение Zabbix Agent» -Direction Inbound -Action Allow -EdgeTraversalPolicy Allow -Program «C:\Program Files\Zabbix Agent\bin\zabbix_agentd.exe»
Или мы можем добавить в исключение порт. Это можно сделать также из командной строки poweshell:
New-NetFirewallRule -DisplayName «Разрешить порт 10050 для Zabbix» -Direction Inbound -Action Allow -EdgeTraversalPolicy Allow -Protocol TCP -LocalPort 10050
Проверка работы
Чтобы убедиться в работоспособности агента, мы можем зайти на сервер zabbix и выполнить подключение по telnet, например, командой:
telnet 192.168.1.15 10050
* где 192.168.1.15 — IP-адрес компьютера с установленным Zabbix.
Мы должны увидеть
Connected to nr-fs-06.
Escape character is ‘^]’.
.. и через небольшой интервал времени:
Connection closed by foreign host.
Но если агент не запущен или не работает, мы увидим ошибку:
telnet: connect to address . Connection refused
В панели сервера в узлах сети при корректной установке и настройке, мы также должны увидеть доступность компьютера по агенту:
RDP dog
При использовании Zabbix есть небольшая проблемма. Как и многие развивающиеся OpenSource проекты, дистрибутив программы постоянно обновляется, выходят новые версии. Для того, чтобы использовать новые «плюшки» надо обновлять Windows агенты Zabbix. Автоматически они не обновляются. А жаль.
Итак, вопрос как автоматически обновить агент состоит из двух частей:
1. Как автоматически обновить файлы;
2. Как автоматически обновить файлы на всех системах в сети;
Первая часть проблем не составляет. Давненько я не брал в руки WinRar!
Для начала я собрал необходимый набор файлов:
*не сомневаясь в тех кто это читает, все таки, напомню, zabbix_agentd.conf должен содержать Вашу конфигурацию, т.е. его надо взять с рабочей системы. У меня таких 2 — для систем внутри домена и снаружи.
Затем написал cmd- файл, который эти файлы скопирует в нужную папку.
Вообще я этот файл создавал для установки Zabbix-агента, но с минимальными изменениями он справится и с обновлением:
inst.cmd
Осталось только упаковать набор файлов и командный файл в «установщик» дабы проще было его копировать по сети и удаленно запускать. Просто создаем Winrar SFX архив, со следующими параметрами:
Называем это zabbix_agent_int_x64.exe.
Собственно и все.
Не думаю, что данным постом я сорвал покровы со страшных тайн. Пишу больше для себя в копилку.
Тем более, как мне думается, люди использующие и настроившие Zabbix способны и сами написать скрипт.
У нас осталось только проблема, как распространить обновление агента на все наблюдаемые системы.
Пути как минимум два:
В следующей маленькой статье рассмотрим вариант с psexec.
Zabbix Helper Kit и автоматизация обновления Zabbix Agent
Zabbix Helper Kit и автоматизация обновления Zabbix Agent’a должны облегчить жизнь начинающим админам мастдая. ZHK нужно использовать тогда, когда необходимо использовать кастомизируемую энтерпрайз систему мониторинга, но вы испытываете трудности с обновлением непосредственно Заббикс агента, а так же его файлов конфигурации на подконтрольных вам машинах. Собственно избавлению от этих трудностей и будет посвящена серия статей о Zabbix Helper Kit, сей пост – небольшое лирическое отступление.
Что же такое Zabbix?
Эти 6 букв скрывают под собой, для многих новый, дивный мир агент-серверной телеметрии энтерпрайз класса, которой может пользоваться каждый. Прекраснейшая, всеобъемлющая справка на множестве языков. Огромное комьюнити. Открытые исходники. Возможность использовать в продакшене в небольших сетях, просто скачав готовый образ для виртмашины.
Но есть одно нО
Принимая во внимание тот факт, что сам заббикс агент можно не обновлять годами, всё равно есть ситуация, столкновение с которой приводит либо к функционированию сего чудесного продукта в ограниченном режиме, либо к постепенному вымиранию всей системы мониторинга в целом по причине того что админы просто забивают на её обслуживание и обновление. И имя этой ситуации “Изменение конфигурации агента”
Как обычно происходит развёртывание агента на Windows машины:
- Админ(ы) пробегают по нескольким десяткам компьютеров, ручками копируют на них агент с конфигом и регистрируют его в системе.
- Zabbix Agent и его файл конфигурации разворачиваются через GPO.
- Админ(ы) тем или иным способом, к установленному в системе агенту, монтируют сетевую шару с файлом конфигурации и различными скриптами\расширениями, которые заббикс агент подгружает при старте тем самым получая в своё распоряжение новые UserParameters.
- Всевозможные psexec и msi решения.
Чем это грозит?
- Необходимость добавить новый UserParameter. Изменить файл конфигурации чтобы например добавить запасной сервер или включить забытые изначально, активные проверки. Обновление агента. Любая подобная операция приводит к повторному забегу по всем компьютерам.
- Необходимость ждать пока обновятся групповые политики. Теоретически возможные проблемы если сеть построена на основе линуксовых AD DC. Невозможность работы с компьютерами не входящими в домен вообще. Геморрой с обновлением агента или применением изменений в его настройках, до момента повторной отработки групповых политик.
- Если в момент запуска агента шара не будет доступна, агент не запустится. Когда шара сменит свой адрес – повторный забег по всем компьютерам. Ну и исходя из этого, если шара перестала работать в процессе работы агента, мы лишаемся телеметрии.
- Не такой стандартизированный метод как например GPO, но самый гибкий из всех. Потенциальные проблемы ограничиваются лишь фантазией человека занимающегося конкретной реализацией.
Какой самый общий недостаток?
- Во-первых, проблема с регулярной, централизованной и единовременной доставкой обновлений как самого агента, так и его конфигурации с расширениями.
- Во-вторых, даже если мы доставили обновление конфигурации и расширений агента, они не вступят в силу до его перезапуска.
- В третьих, мы не можем обновить агент не остановив службу.
Как должно выглядеть идеальное решение?
- Zabbix Agent со всеми файлами должен храниться на наблюдаемой машине.
- Обновление агента и его файлов не должно влиять на работу системы.
- Агент должен запускаться вне зависимости от наличия у машины соединения с сетью.
- Первоначальная установка агента должна быть максимально проста.
- Обслуживание агента должно быть не сложнее его установки.
- Необходима изменять конфигурацию агента и расширять его функционал на лету.
- Самым важным из всего, я бы отметил возможность делать всё вышеперечисленное не отрывая задницы от кресла, калории ведь не казённые, надо экономить.
Встречайте! Zabbix Helper Kit!
Собственно это набор утилит написанных на языке AutoIt, разрабатываемый мною и используемый в сфере коммерческой эксплуатации Zabbix на протяжение многих лет. Поэтому он предназначен для решения всех проблем обслуживания Zabbix Agent Windows и еще чуть-чуть. Основной его целью является упрощение превращения Zabbix в средство управления инфраструктурой предприятия. В один прекрасный день я решил начать с нуля, систематизировать код, провести рефакторинг и опубликовать исходники для свободного использования.
Что умеет Zabbix Helper Kit на момент написания статьи:
- Выкачивать из указанного в настройках репозитория (FTP сервера):
- Zabbix Agent в зависимости от битности OS Windows.
- Файл конфигурации агента.
- Устанавливать Zabbix Agent как сервис мастдая.
- Создавать правило для него в брандмауэре Windows.
- Записвывать в брандмауэр правило для себя.
- Запиливаться в планировщик задач и запускаться каждый час:
- Если компьютер в домене то имени заданной учётной записи.
- Если в рабочей группе то от имени системы.
- Сравнивать локальную версию репозитория с удалённой.
- В случае обнаружения в репозитории новой версии, скачивать содержимое репозитория к себе в папку.
- Останавливать Zabbix Agent, применять скачанные обновления и запускать его снова.
Реализовывает весь описанный функционал утилита Zabbix Helper Updater.
Zabbix Helper Kit скачать
Распространяется Zabbix Helper Kit через GitHub в виде исходников AutoIt и в будущем в виде скомпилированных exe файлов. Для работы необходим FTP сервер. Так же необходимо для скомпилированных файлов прописывать исключения в антивирусах.
Деплой Zabbix-агентов на большое количество Windows-based серверов с помощью Powershell
Добрый день!
Недавно передо мной встала задача — быстро установить большое количество Zabbix-агентов на Windows-сервера.
Я решил, что это можно и нужно решать с помощью скриптов. В качестве «языка» я выбрал любимый мной (и не только мной!) Powershell.
Небольшой мануал Вы найдете под катом!
Powershell v2.0+ предлагает очень удобные средства удаленного запуска (Powershell Remoting) и я бы с удовольствием использовал бы их, но в моем случае имелась одна проблема — на «пути» могли попадаться сервера с Windows Server 2003 (без необходимых апдейтов), поэтому я принял решение использовать psexec.exe
Мне нужно было максимально автоматизированное решение, поэтому я писал такой скрипт, в который я загружаю список DNS-имен серверов из файла, а на выходе получаю XML-файл для импорта в Zabbix.
Первое, что нам надо сделать, это положить на общий ресурс папку (\\server\share\DeployZabbix), в которой будут:
1) Файл агента для x86-систем (zabbix_agentd86.exe)
2) Файл агента для x64-систем (zabbix_agentd64.exe)
3) Файл конфигурации zabbix_agentd.conf (в котором нужно указать хотя бы адрес/DNS-имя Zabbix-сервера)
4) 2 батника, Install86.bat и Install64.bat со следующим содержанием:
Install86.bat:
Второе, что нам потребуется, это папка, в которой будет лежать скрипт для разворачивания агентов, и все необходимое для его работы:
1) Собственно, сам скрипт DeployZabbix.ps1 (о нем ниже)
2) Три .txt-файла (Source1.txt, Source2.txt, Source3.txt) — это «куски» .xml файла, который получится на выходе. Не забудьте заменить группу «Default» на нужную Вам в тексте!
3) Собственно, сам psexec.exe (взять его можно отсюда)
4) Файл computers.csv, в котором FQDN-имена серверов идут каждый с новой строчки.
Ну и третье, самое важное, это сам скрипт. При написании скрипта следует добавить проверку на битность. Также я предпочитаю логгировать действия в текстовый файл, чтобы потом, в случае чего, можно было посмотреть что произошло не так.
Можно еще добавить строчки, чтобы скрипт убирал ненужные файлы, но т.к. они весят меньше 1Мб, я заморачиваться не стал.
Затем, получившийся .xml-файл (который будет лежать в каталоге со скриптом) импортируем в список хостов в Zabbix.
Вот, собственно, и все. Надеюсь данный туториал будет хоть кому-нибудь полезен.