Manter ferramentas e stacks atualizadas é sempre um desafio. O que normalmente acontece? Você descobre uma versão nova porque alguém manda no grupo, ou porque deu problema em produção.

Mas dá para resolver isso com observabilidade preventiva: o próprio Zabbix pode monitorar endpoints de release e notificar quando uma nova versão sair.

Neste artigo mostro duas formas que implementei:

  • Via HTTP Agent (buscando no GitHub e tratando com JavaScript).

  • Via Script + Low-Level Discovery (LLD), automatizando para múltiplos softwares.

Método 1: HTTP Agent + JavaScript

O mais direto: consultar a API ou página de releases (ex.: GitHub) e extrair a versão.

Passos

Criar um item do tipo HTTP agent apontando para o endpoint de releases.

Exemplo:




Configurar o **preprocessing → JavaScript** para extrair o campo da versão:

```var data = JSON.parse(value);

return data.tag_name;

Criar uma trigger para comparar com a versão esperada (macro ou valor anterior).

Método 2: Script externo + Discovery (LLD)

Para cenários com várias ferramentas, montei um script que coleta versões e deixa o Zabbix fazer o resto.

Exemplo (Python)

#!/usr/bin/env python3

import requests
import json

repos = {
    "zabbix": "zabbix/zabbix",
    "grafana": "grafana/grafana",
    "prometheus": "prometheus/prometheus"
}

result = {"data": []}

for name, repo in repos.items():
    url = f"https://api.github.com/repos/{repo}/releases/latest"
    version = requests.get(url).json()["tag_name"]

    result["data"].append({
        "{#TOOL}": name,
        "{#VERSION}": version
    })

print(json.dumps(result))

No Zabbix:

Criar um item de discovery que executa o script. Gerar itens filhos com chave do tipo:

tool.version[{#TOOL}]

  • Triggers para detectar quando {#VERSION} mudar.

Vantagem: Escalável para dezenas de ferramentas.

Limite: Exige manutenção do script e API key do GitHub em casos de rate limit.

*Lembre-se que a API do Github tem um limite de consultas e tu não vai atualizar versão a cada minuto. Sugestão, colocar intervalo de coleta 1 vez ao dia.*

Após isso, envie as notificações para onde preferir, basta ter a integração no zabbix. Ou crie um painel no Grafana.

Lara

Lara

Lara