Olá comunidade, estou compartilhando mais um conteúdo. Neste caso mostro como realizar automação de atualização de proxy remotamente via console do Zabbix com Scripts.
Neste cenário, executamos o script no host com agente v2 do servidor do proxy remoto e o script detecta o sistema operacional e executa o processo de atualização.
Importante: Valide em homologação e confirme se o SO do proxy é compatível com o Script, neste cenário deixei compatível com as distros que mais utilizo. Aprecio a melhoria deste script caso queiram melhorá-lo.

#!/bin/bash
DATA=$(date +%Y%m%d)
BACKUP_DIR="/tmp/bkp-zabbix"
mkdir -p "$BACKUP_DIR"
# Detectar o sistema operacional
if [ -f /etc/os-release ]; then
. /etc/os-release
OS=$ID
else
echo "Sistema operacional não identificado."
exit 1
fi
echo "Sistema operacional detectado: $OS"
# Função para backup de arquivos
backup_config() {
local file_path=$1
local name=$(basename "$file_path")
if [ -f "$file_path" ]; then
cp "$file_path" "$BACKUP_DIR/${name}_$DATA"
echo "Backup de $file_path realizado."
else
echo "Arquivo $file_path não encontrado."
fi
}
# Identificar e fazer backup do agente Zabbix
if systemctl list-units --type=service | grep -q zabbix-agent2; then
AGENT_CONF="/etc/zabbix/zabbix_agent2.conf"
AGENT_SERVICE="zabbix-agent2"
elif systemctl list-units --type=service | grep -q zabbix-agent; then
AGENT_CONF="/etc/zabbix/zabbix_agentd.conf"
AGENT_SERVICE="zabbix-agent"
else
echo "Agente Zabbix não encontrado."
AGENT_CONF=""
AGENT_SERVICE=""
fi
[ -n "$AGENT_CONF" ] && backup_config "$AGENT_CONF"
# Identificar e fazer backup do proxy Zabbix
PROXY_CONF=$(find /etc/zabbix -name "zabbix_proxy.conf" 2>/dev/null | head -n 1)
if [ -n "$PROXY_CONF" ]; then
backup_config "$PROXY_CONF"
PROXY_SERVICE="zabbix-proxy"
else
echo "Arquivo de configuração do proxy não encontrado."
PROXY_SERVICE=""
fi
# Atualizar pacotes (sem upgrade de versão principal)
echo "Atualizando pacotes..."
case "$OS" in
ubuntu|debian)
apt update
apt install --only-upgrade zabbix-agent zabbix-agent2 zabbix-proxy -y
;;
centos|rhel|rocky|almalinux)
yum update -y zabbix-agent zabbix-agent2 zabbix-proxy
;;
*)
echo "Sistema operacional não suportado para atualização automática."
;;
esac
# Reiniciar serviços
[ -n "$AGENT_SERVICE" ] && systemctl restart "$AGENT_SERVICE"
[ -n "$PROXY_SERVICE" ] && systemctl restart "$PROXY_SERVICE"
# Verificar status dos serviços
[ -n "$AGENT_SERVICE" ] && systemctl status "$AGENT_SERVICE" --no-pager
[ -n "$PROXY_SERVICE" ] && systemctl status "$PROXY_SERVICE" --no-pager
# Verificar logs de erro de comunicação com o Zabbix Server
echo "Verificando logs de erro de comunicação..."
grep -i "cannot connect to" /var/log/zabbix/*log | tail -n 10
Neste cenário, executamos o script no host com agente v2 do servidor do proxy remoto e o script detecta o sistema operacional e executa o processo de atualização.
Importante: Valide em homologação e confirme se o SO do proxy é compatível com o Script, neste cenário deixei compatível com as distros que mais utilizo. Aprecio a melhoria deste script caso queiram melhorá-lo.
#!/bin/bash
DATA=$(date +%Y%m%d)
BACKUP_DIR="/tmp/bkp-zabbix"
mkdir -p "$BACKUP_DIR"
# Detectar o sistema operacional
if [ -f /etc/os-release ]; then
. /etc/os-release
OS=$ID
else
echo "Sistema operacional não identificado."
exit 1
fi
echo "Sistema operacional detectado: $OS"
# Função para backup de arquivos
backup_config() {
local file_path=$1
local name=$(basename "$file_path")
if [ -f "$file_path" ]; then
cp "$file_path" "$BACKUP_DIR/${name}_$DATA"
echo "Backup de $file_path realizado."
else
echo "Arquivo $file_path não encontrado."
fi
}
# Identificar e fazer backup do agente Zabbix
if systemctl list-units --type=service | grep -q zabbix-agent2; then
AGENT_CONF="/etc/zabbix/zabbix_agent2.conf"
AGENT_SERVICE="zabbix-agent2"
elif systemctl list-units --type=service | grep -q zabbix-agent; then
AGENT_CONF="/etc/zabbix/zabbix_agentd.conf"
AGENT_SERVICE="zabbix-agent"
else
echo "Agente Zabbix não encontrado."
AGENT_CONF=""
AGENT_SERVICE=""
fi
[ -n "$AGENT_CONF" ] && backup_config "$AGENT_CONF"
# Identificar e fazer backup do proxy Zabbix
PROXY_CONF=$(find /etc/zabbix -name "zabbix_proxy.conf" 2>/dev/null | head -n 1)
if [ -n "$PROXY_CONF" ]; then
backup_config "$PROXY_CONF"
PROXY_SERVICE="zabbix-proxy"
else
echo "Arquivo de configuração do proxy não encontrado."
PROXY_SERVICE=""
fi
# Atualizar pacotes (sem upgrade de versão principal)
echo "Atualizando pacotes..."
case "$OS" in
ubuntu|debian)
apt update
apt install --only-upgrade zabbix-agent zabbix-agent2 zabbix-proxy -y
;;
centos|rhel|rocky|almalinux)
yum update -y zabbix-agent zabbix-agent2 zabbix-proxy
;;
*)
echo "Sistema operacional não suportado para atualização automática."
;;
esac
# Reiniciar serviços
[ -n "$AGENT_SERVICE" ] && systemctl restart "$AGENT_SERVICE"
[ -n "$PROXY_SERVICE" ] && systemctl restart "$PROXY_SERVICE"
# Verificar status dos serviços
[ -n "$AGENT_SERVICE" ] && systemctl status "$AGENT_SERVICE" --no-pager
[ -n "$PROXY_SERVICE" ] && systemctl status "$PROXY_SERVICE" --no-pager
# Verificar logs de erro de comunicação com o Zabbix Server
echo "Verificando logs de erro de comunicação..."
grep -i "cannot connect to" /var/log/zabbix/*log | tail -n 10