Prezado leitor,
Monitorar o GeoServer é fundamental para garantir a estabilidade dos serviços e antecipar falhas. A REST API do GeoServer oferece endpoints que permitem criar healthchecks, consultar status de camadas, conexões e até acompanhar logs em tempo real — tudo de forma automatizada.
1. Healthcheck simples do GeoServer
O endpoint /about/version retorna informações básicas do servidor. É ideal para um healthcheck inicial:
curl -u admin:geoserver \ http://localhost:8080/geoserver/rest/about/version.json
A resposta inclui versão do GeoServer, build e dados do ambiente. Se este endpoint responder com sucesso (HTTP 200), sabemos que o servidor está no ar.
2. Consultando camadas e stores
Para monitorar se um workspace ou store está ativo, podemos listar camadas ou stores disponíveis. Exemplo para listar todos os stores do workspace cite:
curl -u admin:geoserver \ http://localhost:8080/geoserver/rest/workspaces/cite/datastores.json
A resposta retornará a lista de stores configurados. Um script pode percorrer essa lista para verificar se conexões com PostGIS ou arquivos shapefile estão acessíveis.
3. Consultando Logs do GeoServer
O GeoServer permite acessar os logs via REST API, mas esse recurso não vem habilitado por padrão.
Para ativá-lo, siga os passos:
- Acesse a interface web do GeoServer (http://localhost:8080/geoserver).
- Vá em Serviços → Logging.
- Certifique-se de escolher um perfil de log (por exemplo, DEFAULT_LOGGING ou GEOSERVER_DEVELOPER_LOGGING).
- Marque a opção Enable REST access to logs (se disponível na versão do seu GeoServer).
- Salve a configuração.
Após habilitar, você poderá consultar os logs via REST:
curl -u admin:geoserver \ http://localhost:8080/geoserver/rest/logs.json
A resposta retorna mensagens recentes do log do servidor, úteis para detectar falhas em publicações de camadas, erros de conexão ou problemas de configuração.
- Habilitar logs via REST expõe informações sensíveis, como nomes de camadas, queries SQL e conexões com bancos (PostGIS).
- Esse endpoint deve ser acessível apenas a usuários com **permissão administrativa**. Não deixe disponível para usuários comuns ou público geral.
- Combine essa configuração com restrições de rede (VPN, firewall ou proxy reverso) e autenticação forte.
- Evite expor logs completos em ambientes de produção. Prefira usar ferramentas de monitoramento externas (Prometheus, Grafana, ELK) para coleta de logs.
4. Monitoramento em Python
Podemos criar um script em Python para automatizar healthchecks e alertas:
import requests GEOSERVER_URL = "http://localhost:8080/geoserver/rest" AUTH = ("admin", "geoserver") # Healthcheck r = requests.get(f"{GEOSERVER_URL}/about/version.json", auth=AUTH) print("Status GeoServer:", r.status_code) # Listar stores do workspace cite r = requests.get(f"{GEOSERVER_URL}/workspaces/cite/datastores.json", auth=AUTH) if r.status_code == 200: stores = r.json() print("Stores encontrados:", [s["name"] for s in stores["dataStores"]["dataStore"]])
Esse script pode ser integrado a ferramentas de monitoramento como cron jobs, Prometheus ou até sistemas de alerta via Slack/Telegram.
Conclusão
Monitorar o GeoServer via REST API permite detectar problemas rapidamente e automatizar verificações essenciais, reduzindo falhas em produção.