Num mundo cada vez mais atento ao clima, fatores ambientais como a temperatura, a humidade, a qualidade do ar e os fenómenos meteorológicos extremos têm impacto direto na engenharia de plataformas, na logística, no consumo de energia e nas infraestruturas no terreno. Apesar da sua flexibilidade e potência, faltava ao Checkmk suporte nativo e contextualizado para dados ambientais em tempo real, sobretudo vindos de fontes especializadas como a astronomia, as previsões marítimas ou os índices de poluentes.
Foi esta lacuna que deu origem ao Weather API Special Agent, um plugin modular e escalável, concebido para integrar informação meteorológica no Checkmk de forma fluida e permitir decisões informadas, em tempo real, nos mais variados setores.
O desafio: monitorizar para lá do centro de dados
Faltava ao Checkmk suporte nativo e em tempo real para dados ambientais, cada vez mais importantes para a resiliência operacional. Isso era particularmente verdade em domínios específicos, como a astronomia, a meteorologia marítima ou os índices de qualidade do ar. O Weather API Special Agent preenche essa lacuna, permitindo integrar informação meteorológica contextual diretamente nos fluxos de monitorização.
A arquitetura: modular, inteligente e extensível
O plugin está organizado em três camadas coerentes, que asseguram separação clara da lógica, execução robusta e integração profunda no ecossistema Checkmk.
1. Camada de recolha e interpretação: secções de agente por domínio
Cada domínio meteorológico é tratado por um módulo dedicado:
weather_current.py: condições em tempo real (temperatura, humidade, índice UV)weather_forecast.py: previsões a vários dias, com precipitação, amplitudes térmicas e tendênciasweather_marine.py: previsões marítimas, ideais para operações costeiras ou navaisweather_air_quality.py: níveis de poluição (PM2,5, CO, NO₂, O₃…) com índices de saúde (EPA, DEFRA)weather_alerts.py: alertas oficiais (tempestades, calor extremo) como serviços monitorizáveis em diretoweather_astronomy.py: ciclos solares e lunares, fase da lua, indicadores de luz do dia
Cada módulo é isolado e tolerante a falhas, com mecanismos de recurso que garantem resiliência mesmo quando os dados faltam ou vêm inconsistentes.
2. Camada de integração e execução: dinâmica e segura
special_agent.py: define a lógica do agente, valida parâmetros (através de Pydantic) e constrói dinamicamente os comandos de execução a partir da configuração escolhida.agent_weather_api.py: o executor central, que faz os pedidos a endpoints como/current.jsone/forecast.jsone os converte em estruturas compatíveis com o Checkmk, com opções de saída multilingue e filtrada.
3. Camada de configuração: rulesets flexíveis e contexto do servidor
Com suporte completo para cmk.rulesets.v1 e cmk.server_side_calls.v1, tudo se configura pela interface WATO do Checkmk:
- Ativar e desativar módulos
- Alvos de monitorização (cidades individuais, distritos, exclusões)
- Duração e filtragem das previsões
- Segredos protegidos e ajuda contextual
Esta camada dá controlo detalhado sem escrever código, suportando casos de uso diferentes por host ou por ambiente.

Integração no inventário: o Checkmk como painel climático
Para lá das verificações em tempo real, o plugin integra-se com o InventoryPlugin do Checkmk, enriquecendo o inventário de hosts com:
- Condições atuais e previsões (ideais para planeamento)
- Informação sobre qualidade do ar (crítica para equipamento no exterior e IoT)
- Dados astronómicos (relevantes para painéis solares, agricultura e automação)
Isto transforma o inventário numa camada estratégica de observabilidade, contextualizando a infraestrutura com o ambiente físico que a rodeia.

Modos geográficos: pensados para o uso real
Desenhado a pensar na flexibilidade de localização, o plugin suporta:
- Modo manual: monitorizar uma única cidade escolhida
- Cidades portuguesas predefinidas: integração direta com a geografia de Portugal
- Modo de várias cidades: monitorizar em paralelo uma lista à medida
- Modo distrito: monitorizar automaticamente todas as cidades de um distrito, excluindo as que se quiser
Esta flexibilidade permite adaptar a monitorização a operações distribuídas ou com vários locais.
Inteligência visual: painéis em tempo real com NagVis
Para elevar a visibilidade dos dados, o plugin integra-se com o NagVis para painéis geográficos, permitindo:
- Vistas ao nível do distrito (por exemplo, “Aveiro Weather”), com mapas interativos
- Monitorização climática nacional (continente e ilhas)
- Painéis híbridos, que combinam métricas meteorológicas e de infraestrutura
Os painéis atualizam-se sozinhos com as condições atuais e os indicadores de estado (OK/WARN/CRIT), permitindo decidir depressa em função da localização.
Resiliência por conceção
- Cada módulo funciona de forma independente: uma falha num não afeta os outros
- A interpretação e a validação robustas garantem estabilidade, com alternativas para valores em falta
- Os registos dão visibilidade profunda sobre a execução e a transformação dos dados
- O suporte por linha de comandos permite testar e desenvolver localmente
Aplicações no terreno
O plugin já está a dar valor concreto em vários setores:
- Centros de dados e telecomunicações: alertas automáticos para calor extremo, humidade elevada e risco de vento
- Logística e transportes: otimização de rotas com base na visibilidade e nas condições meteorológicas
- Operações marítimas: estado do mar e previsão de marés em tempo real, para navegação e segurança
- Sustentabilidade e ESG: monitorização da qualidade do ar, para conformidade e iniciativas de saúde pública
Do tempo ao que quiserem: o Checkmk consegue monitorizar
Este projeto é mais do que uma solução avançada de monitorização meteorológica. É uma prova de conceito que mostra a verdadeira potência e flexibilidade da arquitetura do Checkmk.
Ao tirar partido de APIs, de um desenho modular e dos pontos de integração nativos do Checkmk (rulesets, inventário, agentes especiais), este plugin demonstra que praticamente qualquer fonte de dados externa pode ser transformada em monitorização acionável.
