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ências
  • weather_marine.py: previsões marítimas, ideais para operações costeiras ou navais
  • weather_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 direto
  • weather_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.json e /forecast.json e 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.

Painel com várias métricas meteorológicas


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.

Mapa com monitores meteorológicos de várias cidades Inventário com dados ambientais por distrito Inventário com dados ambientais por condição


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.

Elicarlos Dias
Elicarlos Dias

Como estagiário de consultoria DevOps na Lynxmind, está a construir bases sólidas em automação, CI/CD e infraestrutura cloud. Com uma abordagem prática e vontade de crescer, apoia a equipa na simplificação de processos e no reforço da fiabilidade dos sistemas.