Tutorial: Atualizando seu Zabbix Proxy 6.0 para 6.4 (SQLite)

O Zabbix 6.4 traz melhorias significativas de performance e novas funcionalidades. Se você utiliza o Zabbix Proxy na versão 6.0 LTS com o banco de dados SQLite, a atualização pode ser simplificada usando um script shell.

Este artigo apresenta um guia prático, incluindo um script pronto para uso que automatiza a maior parte do processo, garantindo que a configuração obsoleta do Zabbix 6.0 seja corrigida automaticamente.


⚠️ Pré-requisitos e Avisos

Antes de começar, certifique-se de que:

  1. Você está atualizando de uma versão 6.0.x para a branch 6.4.x.
  2. O Zabbix Proxy está instalado em um sistema Debian ou Ubuntu (apt package manager).
  3. Você tem acesso root (sudo) ao servidor do Proxy.
  4. O banco de dados do Proxy é o SQLite.

IMPORTANTE: O script realiza backups automáticos, mas é sempre recomendado ter um snapshot da VM ou um backup externo do servidor antes de realizar qualquer atualização crítica.


📄 O Script de Atualização (update_zabbix_proxy_6.4.sh)

Este script executa as seguintes ações de forma automatizada: para o serviço, faz backup do arquivo de configuração e do DB SQLite, atualiza o repositório Zabbix para a versão 6.4, faz o upgrade do pacote zabbix-proxy-sqlite3 e corrige o parâmetro obsoleto StartHistoryPollers no arquivo de configuração, permitindo que a versão 6.4 inicie sem erros.

Conteúdo do Script

#!/bin/bash

# ==============================================================================
# SCRIPT DE ATUALIZAÇÃO ZABBIX PROXY (SQLite) - 6.0.x para 6.4.x
# Versão: 1.0 (para Debian/Ubuntu)
# ==============================================================================

ZABBIX_VERSION="6.4"
DB_TIPO="sqlite3"
# Determina a URL do repositório baseada na versão do Ubuntu/Debian
REPO_URL="https://repo.zabbix.com/zabbix/${ZABBIX_VERSION}/ubuntu/pool/main/z/zabbix-release/zabbix-release_${ZABBIX_VERSION}-1+ubuntu$(lsb_release -rs | sed 's/\.//')_all.deb"
LOG_FILE="/var/log/zabbix_proxy_update_$(date +%Y%m%d_%H%M%S).log"

log() {
    echo "$(date +'%Y-%m-%d %H:%M:%S') - $1" | tee -a "$LOG_FILE"
}

check_root() {
    if [ "$EUID" -ne 0 ]; then
        log "Erro: Este script deve ser executado como root (sudo)."
        exit 1
    fi
}

check_root

log "Iniciando atualização do Zabbix Proxy para a versão ${ZABBIX_VERSION}..."
echo "--------------------------------------------------------" | tee -a "$LOG_FILE"

# 1. PARAR O SERVIÇO
log "1. Parando o serviço zabbix-proxy..."
systemctl stop zabbix-proxy >> "$LOG_FILE" 2>&1

# 2. FAZER BACKUPS
BACKUP_DIR="/var/backups/zabbix_proxy_pre_${ZABBIX_VERSION}_$(date +%Y%m%d)"
mkdir -p "$BACKUP_DIR" >> "$LOG_FILE" 2>&1
log "2. Fazendo backup de arquivos de configuração e DB para: ${BACKUP_DIR}"

# Backup do config
cp /etc/zabbix/zabbix_proxy.conf "${BACKUP_DIR}/zabbix_proxy.conf.bak" >> "$LOG_FILE" 2>&1

# Backup do DB SQLite
DB_PATH="/var/lib/zabbix/zabbix_proxy.sqlite3"
if [ -f "$DB_PATH" ]; then
    cp "$DB_PATH" "${BACKUP_DIR}/zabbix_proxy.sqlite3.bak" >> "$LOG_FILE" 2>&1
fi


# 3. ATUALIZAR O REPOSITÓRIO
log "3. Atualizando o repositório Zabbix para a versão ${ZABBIX_VERSION}."
wget -O /tmp/zabbix-release.deb "$REPO_URL" >> "$LOG_FILE" 2>&1
dpkg -i /tmp/zabbix-release.deb >> "$LOG_FILE" 2>&1
rm /tmp/zabbix-release.deb

log "   -> Atualizando lista de pacotes (apt update)."
apt update >> "$LOG_FILE" 2>&1


# 4. ATUALIZAR O PACOTE ZABBIX PROXY
PROXY_PACKAGE="zabbix-proxy-${DB_TIPO}"
log "4. Atualizando o pacote ${PROXY_PACKAGE} para 6.4.x."
apt install --only-upgrade -y "${PROXY_PACKAGE}" >> "$LOG_FILE" 2>&1

if [ $? -ne 0 ]; then
    log "Erro Fatal: Falha ao atualizar o pacote. Verifique o log."
    exit 1
fi

# 5. CORRIGIR PARÂMETRO OBSOLETO (StartHistoryPollers)
log "5. Corrigindo parâmetro obsoleto 'StartHistoryPollers'."
# O 'sed' comenta a linha, prevenindo o erro de inicialização na 6.4
sed -i '/StartHistoryPollers=/s/^/#/' /etc/zabbix/zabbix_proxy.conf >> "$LOG_FILE" 2>&1


# 6. INICIAR O SERVIÇO
log "6. Iniciando o serviço zabbix-proxy..."
systemctl start zabbix-proxy >> "$LOG_FILE" 2>&1

if [ $? -ne 0 ]; then
    log "Erro Fatal: Falha ao iniciar o Zabbix Proxy 6.4. Consulte 'journalctl -xeu zabbix-proxy'."
    exit 1
fi


# 7. VERIFICAÇÃO FINAL
log "7. Verificação Final."
CURRENT_VERSION=$(zabbix_proxy -V | head -n 1)
log "   -> Zabbix Proxy está rodando a versão: ${CURRENT_VERSION}"
log "Sucesso: Atualização concluída. Verifique a saúde do proxy no Zabbix Server."
echo "--------------------------------------------------------" | tee -a "$LOG_FILE"

🏃 Como Usar o Script em 3 Passos

Passo 1: Criar e Salvar

Crie um novo arquivo no servidor do Proxy e cole o código acima:

Bash

sudo nano update_zabbix_proxy_6.4.sh

Cole o conteúdo do script e salve o arquivo.

Passo 2: Dar Permissão e Executar

Torne o arquivo executável e execute-o como root:

Bash

# Dar permissão de execução
sudo chmod +x update_zabbix_proxy_6.4.sh

# Executar o script
sudo ./update_zabbix_proxy_6.4.sh

Passo 3: Verificar o Log e a Versão

Após a execução, o script fornecerá um resumo na tela e salvará todos os detalhes no arquivo de log:

Bash

# Verifique o último log gerado
sudo tail -f /var/log/zabbix_proxy_update_*.log

Você também pode verificar a versão final:

Bash

zabbix_proxy -V

Se o serviço iniciou corretamente, o Proxy começará a enviar dados ao Zabbix Server e fará o upgrade do esquema do banco de dados SQLite automaticamente. Parabéns! Seu Zabbix Proxy está agora na versão 6.4.x.

Voltar ao Blog