Заметка по установке и настройке агента zabbix
Windows
Скачаем заббикс агент, соответствующий версии вашего сервера с официального сайта. Удобно качать агента в архиве.
В дальнейшем можно просто копировать настроенный агент на другие машины.
Путь расположения Zabbix агента по умолчанию:
"C:\Program Files\Zabbix"
После копирования агента в папку по умолчания можно выполнять команду на установку службы
Команда установки агента
C:\Program Files\Zabbix\bin\zabbix_agentd.exe -c "C:\Program Files\Zabbix\conf\zabbix_agentd.win.conf" –i
Могут так же понадобиться дополнительные команды:
Удаление агента
C:\Program Files\Zabbix\bin\zabbix_agentd.exe -c "C:\Program Files\Zabbix\conf\zabbix_agentd.win.conf" -d
Запуск агента
C:\Program Files\Zabbix\bin\zabbix_agentd.exe -s
Остановка агента
C:\Program Files\Zabbix\bin\zabbix_agentd.exe -x
Альтернатива этих же команд для Powershell
Показать команды
Команда установки агента
Start-Process -FilePath 'C:\Program Files\Zabbix\bin\zabbix_agentd.exe' -ArgumentList '-c "C:\Program Files\Zabbix\conf\zabbix_agentd.win.conf" -i' -NoNewWindow
Удаление агента
Start-Process -FilePath 'C:\Program Files\Zabbix\bin\zabbix_agentd.exe' -ArgumentList '-c "C:\Program Files\Zabbix\conf\zabbix_agentd.win.conf" -d' -NoNewWindow
Описание основных параметров
DebugLevel=4 # Уровень детализации логирования. Нужно для отладки. По умолчанию можно не включать LogFile=C:\Program Files\Zabbix\logs\zabbix_agentd.log Server=zabbix.domain.me,mow3-zabbix # Сервера для агентов, работающих в пассивном режиме(Сервер опрашивает агенты) ServerActive=zabbix.domain.me,mow3-zabbix # Для агентов в активном режиме(сами шлют инфу на сервер) Timeout=30 # Время ожидания на получение ответа команды(например выхлоп скрипта) EnableRemoteCommands=1 # Требуется для использования пользовательских скриптов user_param. В новых версиях AllowKey=system.run[*] Include=C:\Program Files\Zabbix\conf\user_param\*.conf # Ссылки на конфиги которые тоже необходимо обрабатывать агенту Hostname=MOW1-RDWEB-01 # Если имя не указать, то оно автоматически будет задано, в соответствии с именем компьютера - это предпочтительный вариант, исключающий механическую ошибку
Почему может не стартовать агент?
Обычно проблемы со стартом агента происходят из-за неверных параметров в конфигурационных файлах. Например:
1) Указан неподдерживаемый в текущей версии параметр
2) Конфликт параметров: параметр указан дважды в текущем конфиге, либо подключенном через Include.
В том числе в файлах описывающие пути к скриптам(user_param)
3) Конфиг содержит непечатаемые символы(невидимые). Это можно увидеть например через Notepad++
4) При установке службы был неверно указан путь к конфигурационному файлу:
в сервисах находим zabbix_agent и внимательно смотрим значение поля «Path to executable»
Linux
Centos 7
Сначала нужно подключить репозиторий Zabbix в соответствии с текущей версией нашего сервера Zabbix и версией целевого сервера Linux.
Предположим у вас используется версия Zabbix 5.0 LTS
Версию сервера Centos смотрим командой:
cat /etc/centos-release
В данном примере это будет версия Centos 7
Выполняем апгрейд и установку пакета из репозитория:
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-agent-5.0.0-1.el7.x86_64.rpm
Добавляем агент в автозагрузку:
systemctl enable zabbix-agent.service
Для примера можно посмотреть настройки на другом сервере.
Выведутся только незакомментированные строки:
cat /etc/zabbix/zabbix_agentd.conf | grep -v \# | grep .
или так
grep -vE '^#|^$' /etc/zabbix/zabbix_agentd.conf
Можно изменить параметры вручную:
nano /etc/zabbix/zabbix_agentd.conf
(может потребоваться установить nano: yum install nano )
Необходимые настройки конфига:
Server=192.168.49.3
ServerActive=192.168.49.3
Hostname= {Имя сервера который подключаем в Zabbix}
Параметры по умолчанию можно изменить, не заходя в файл конфигурации, следующими командами:
sed -i "s/Server=127.0.0.1/Server=192.168.49.3/" /etc/zabbix/zabbix_agentd.conf sed -i "s/ServerActive=127.0.0.1/ServerActive=192.168.49.3/" /etc/zabbix/zabbix_agentd.conf read -p "Enter Hostname: " Hostname sed -i "s/Hostname=Zabbix server/Hostname=$Hostname/" /etc/zabbix/zabbix_agentd.conf
Здесь мы руками задаем только имя хоста, когда спросит, на случай если вы хотите что бы имя агента отличалось от имени машины.
Запускаем агент:
systemctl start zabbix-agent
Проверяем статус:
systemctl status zabbix-agent
Траблшутинг
Если Zabbix сервер не может получить данных с агента, то нужно выполнить следующие проверки:
- Убедится что с вашего сервера zabbix по телнету доступен порт 10050
telnet *agent_ip* 10050
- Убедится что агент слушает порт 10050
sudo lsof -i -P -n | grep LISTEN | grep zabbix
- Проверить что в фаерволе нет запрещающих правил:
sudo iptables -S
- Если после этого все равно нет связи, то стоит обратится к сетевикам, чтобы они разрешили на сетевом оборудовании передачу пакетов:
— от zabbix сервера к хосту по порту 10050
— от хоста к серверу по порту 10051
Iptables
Если после всех предыдущих шагов проблема не устранена, то вот что следует проверить на стороне Iptables:
- Запрашиваем в виде таблицы цепочку INPUT с нумерацией правил
sudo iptables -L INPUT —line-numbers - Если есть правило REJECT, то оно должно быть последним в цепочке. Иначе все что прописано после него(в рамках цепочки) не будет работать
Если же правило разрешающее порт 10050 стоит после правила REJECT, то нужно поменять их местами.
Для этого можно выбрать один из двух способов:- Удалить REJECT правило из списка правил, и затем добавить последнюю строку:
-D INPUT -j REJECT —reject-with icmp-host-prohibited
sudo iptables -A INPUT -j REJECT —reject-with icmp-host-prohibited - Удалить строку правила zabbix, затем поставить его в позиции перед REJECT правилом:
-D INPUT -p tcp -m tcp —dport 10050 -j ACCEPT
sudo iptables -I INPUT 7 -p tcp -m tcp —dport 10050 -j ACCEPT
Например в списке правил у нас всего 7 строк, из которых запрещающее идет последним. Т.е. правило zabbix добавляем на его место.
- Удалить REJECT правило из списка правил, и затем добавить последнюю строку:
- Что бы изменения не сбросились при ребуте, необходимо выполнить команду, после чего правила станут постоянными:
service iptables save
PS:
Если разворачивается внутренний сервис(в рамках одной сети), то возможно вы захотите отключить iptables:
systemctl stop firewalld # Останавливаем службу systemctl disable firewalld # Отключить автозагрузку
Спасибо за статью! Было бы круто еще узнать как обновлять агенты со старых версий.