Идем в официальный репозитарий "https://repo.zabbix.com/zabbix/" и выбираем необходимый пакет Cамый свежий на данный момент для centos_7:
rpm -ivh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-agent2-5.0.9-1.el7.x86_64.rpm
для дальней шей настройки нам понадобится сгенерировать ключ psk
openssl rand -hex 32 > /etc/zabbix/zabbix_agent.psk
меняем права:
chown zabbix:zabbix -R /etc/zabbix/zabbix_agent.psk
chmod 700 /etc/zabbix/zabbix_agent.psk
далее редактируем фаил конфигурации: nano /etc/zabbix/zabbix_agent2.conf меняем параметры согласно вашей сети
Server=127.0.0.1
ServerActive=127.0.0.1
Hostname=Zabbix-server
#config TSL
TLSConnect=psk
TLSAccept=psk
TLSPSKIdentity=PSK001
TLSPSKFile=/etc/zabbix/zabbix_agent.psk
# plugin docker enable
Plugins.Docker.Endpoint=unix:///var/run/docker.sock
добавляем пользователя "zabbix" в группу "docker"
usermod -aG docker zabbix
добавляем правила в фаирвол и автозагрузку далее включаем сервис:
firewall-cmd --permanent --new-service=zabbix
firewall-cmd --permanent --service=zabbix --add-port=10050/tcp
firewall-cmd --permanent --service=zabbix --set-short="Zabbix Agent"
firewall-cmd --permanent --add-service=zabbix
firewall-cmd --reload
systemctl enable zabbix-agent2
systemctl start zabbix-agent2
systemctl status zabbix-agent2
если zabbix-server запушен в докере приходится постоянно менять ip адрес сервера в настройках агента, добавляем скритп в крон @reboot
cat <<EOF> change_server_field_in_zabbix_server.sh
#!/bin/bash
# Получаем имя хоста системы для использования в TLSPSKIdentity
hostname_value=$(hostname)
# Записываем поле Server в переменную (ищем строку с Server)
field_server=$(grep -E '^\s*Server=' /etc/zabbix/zabbix_agent2.conf)
# Проверяем, что переменная field_server не пуста
if [[ -z "$field_server" ]]; then
echo "Ошибка: не найдено поле Server в файле конфигурации."
exit 1
fi
# Записываем поле ServerActive в переменную (ищем строку с ServerActive)
field_server_active=$(grep -E '^\s*ServerActive=' /etc/zabbix/zabbix_agent2.conf)
# Проверяем, что переменная field_server_active не пуста
if [[ -z "$field_server_active" ]]; then
echo "Ошибка: не найдено поле ServerActive в файле конфигурации."
exit 1
fi
# Записываем IP контейнера zabbix-server в переменную
docker_ip_zabbix_server=$(docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' zabbix-server)
# Проверяем, что переменная docker_ip_zabbix_server не пуста
if [[ -z "$docker_ip_zabbix_server" ]]; then
echo "Ошибка: не найден IP адрес контейнера zabbix-server."
exit 1
fi
# Меняем строку Server на IP адрес контейнера zabbix-server
sed -i "s|$field_server|Server=$docker_ip_zabbix_server|" "/etc/zabbix/zabbix_agent2.conf"
# Меняем строку ServerActive на имя хоста или IP контейнера zabbix-server
sed -i "s|$field_server_active|ServerActive=$docker_ip_zabbix_server|" "/etc/zabbix/zabbix_agent2.conf"
# Заменяем TLSPSKIdentity на системное имя хоста
# sed -i "s|^TLSPSKIdentity=.*|TLSPSKIdentity=$hostname_value|" "/etc/zabbix/zabbix_agent2.conf"
# Перезапускаем zabbix-agent2
systemctl restart zabbix-agent2
echo "Конфигурация успешно обновлена и агент перезапущен."
EOF
в 5-й строке в конце zabbix-server имя вашего контейнера