{"id":9932,"date":"2025-09-10T09:00:46","date_gmt":"2025-09-10T12:00:46","guid":{"rendered":"https:\/\/www.fernandoquadro.com.br\/html\/?p=9932"},"modified":"2025-09-08T18:28:06","modified_gmt":"2025-09-08T21:28:06","slug":"monitorar-o-geoserver-com-a-rest-api-healthcheck-e-logs","status":"publish","type":"post","link":"https:\/\/www.fernandoquadro.com.br\/html\/2025\/09\/10\/monitorar-o-geoserver-com-a-rest-api-healthcheck-e-logs\/","title":{"rendered":"Monitorar o GeoServer com a REST API (Healthcheck e Logs)"},"content":{"rendered":"<p>Prezado leitor,<\/p>\n<p>Monitorar o GeoServer \u00e9 fundamental para garantir a estabilidade dos servi\u00e7os e antecipar falhas. A REST API do GeoServer oferece endpoints que permitem criar <em>healthchecks<\/em>, consultar status de camadas, conex\u00f5es e at\u00e9 acompanhar logs em tempo real \u2014 tudo de forma automatizada.<\/p>\n<p><strong>1. Healthcheck simples do GeoServer<\/strong><\/p>\n<p>O endpoint <b>\/about\/version<\/b> retorna informa\u00e7\u00f5es b\u00e1sicas do servidor. \u00c9 ideal para um healthcheck inicial:<\/p>\n<pre>\r\ncurl -u admin:geoserver \\\r\nhttp:\/\/localhost:8080\/geoserver\/rest\/about\/version.json\r\n<\/pre>\n<p>A resposta inclui vers\u00e3o do GeoServer, build e dados do ambiente. Se este endpoint responder com sucesso (HTTP 200), sabemos que o servidor est\u00e1 no ar.<\/p>\n<p><strong>2. Consultando camadas e stores<\/strong><\/p>\n<p>Para monitorar se um workspace ou store est\u00e1 ativo, podemos listar camadas ou stores dispon\u00edveis. Exemplo para listar todos os <em>stores<\/em> do workspace <b>cite<\/b>:<\/p>\n<pre>\r\ncurl -u admin:geoserver \\\r\nhttp:\/\/localhost:8080\/geoserver\/rest\/workspaces\/cite\/datastores.json\r\n<\/pre>\n<p>A resposta retornar\u00e1 a lista de stores configurados. Um script pode percorrer essa lista para verificar se conex\u00f5es com PostGIS ou arquivos shapefile est\u00e3o acess\u00edveis.<\/p>\n<p><strong>3. Consultando Logs do GeoServer<\/strong><\/p>\n<p>O GeoServer permite acessar os logs via REST API, mas <strong>esse recurso n\u00e3o vem habilitado por padr\u00e3o<\/strong>.<\/p>\n<p>Para ativ\u00e1-lo, siga os passos:<\/p>\n<ol>\n<li>Acesse a interface web do GeoServer (<b>http:\/\/localhost:8080\/geoserver<\/b>).<\/li>\n<li>V\u00e1 em <strong>Servi\u00e7os \u2192 Logging<\/strong>.<\/li>\n<li>Certifique-se de escolher um perfil de log (por exemplo, <em>DEFAULT_LOGGING<\/em> ou <em>GEOSERVER_DEVELOPER_LOGGING<\/em>).<\/li>\n<li>Marque a op\u00e7\u00e3o <strong>Enable REST access to logs<\/strong> (se dispon\u00edvel na vers\u00e3o do seu GeoServer).<\/li>\n<li>Salve a configura\u00e7\u00e3o.<\/li>\n<\/ol>\n<p>Ap\u00f3s habilitar, voc\u00ea poder\u00e1 consultar os logs via REST:<\/p>\n<pre>\r\ncurl -u admin:geoserver \\\r\nhttp:\/\/localhost:8080\/geoserver\/rest\/logs.json\r\n<\/pre>\n<p>A resposta retorna mensagens recentes do log do servidor, \u00fateis para detectar falhas em publica\u00e7\u00f5es de camadas, erros de conex\u00e3o ou problemas de configura\u00e7\u00e3o.<\/p>\n<div style=\"border-left: 4px solid #f39c12; padding: 10px; background-color: #fff3e0; margin: 10px 0;\">\n<strong>\u26a0\ufe0f Aten\u00e7\u00e3o \u00e0 Seguran\u00e7a:<\/strong><\/p>\n<ul>\n<li>Habilitar logs via REST exp\u00f5e informa\u00e7\u00f5es sens\u00edveis, como nomes de camadas, queries SQL e conex\u00f5es com bancos (PostGIS).<\/li>\n<li>Esse endpoint deve ser acess\u00edvel apenas a usu\u00e1rios com **permiss\u00e3o administrativa**. N\u00e3o deixe dispon\u00edvel para usu\u00e1rios comuns ou p\u00fablico geral.<\/li>\n<li>Combine essa configura\u00e7\u00e3o com restri\u00e7\u00f5es de rede (VPN, firewall ou proxy reverso) e autentica\u00e7\u00e3o forte.<\/li>\n<li>Evite expor logs completos em ambientes de produ\u00e7\u00e3o. Prefira usar ferramentas de monitoramento externas (Prometheus, Grafana, ELK) para coleta de logs.<\/li>\n<\/ul>\n<\/div>\n<p><strong>4. Monitoramento em Python<\/strong><\/p>\n<p>Podemos criar um script em Python para automatizar healthchecks e alertas:<\/p>\n<pre>\r\nimport requests\r\n\r\nGEOSERVER_URL = \"http:\/\/localhost:8080\/geoserver\/rest\"\r\nAUTH = (\"admin\", \"geoserver\")\r\n\r\n# Healthcheck\r\nr = requests.get(f\"{GEOSERVER_URL}\/about\/version.json\", auth=AUTH)\r\nprint(\"Status GeoServer:\", r.status_code)\r\n\r\n# Listar stores do workspace cite\r\nr = requests.get(f\"{GEOSERVER_URL}\/workspaces\/cite\/datastores.json\", auth=AUTH)\r\nif r.status_code == 200:\r\n    stores = r.json()\r\n    print(\"Stores encontrados:\", [s[\"name\"] for s in stores[\"dataStores\"][\"dataStore\"]])\r\n<\/pre>\n<p>Esse script pode ser integrado a ferramentas de monitoramento como <em>cron jobs<\/em>, Prometheus ou at\u00e9 sistemas de alerta via Slack\/Telegram.<\/p>\n<p><strong>Conclus\u00e3o<\/strong><\/p>\n<p>Monitorar o GeoServer via REST API permite detectar problemas rapidamente e automatizar verifica\u00e7\u00f5es essenciais, reduzindo falhas em produ\u00e7\u00e3o.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Prezado leitor, Monitorar o GeoServer \u00e9 fundamental para garantir a estabilidade dos servi\u00e7os e antecipar falhas. A REST API do GeoServer oferece endpoints que permitem criar healthchecks, consultar status de camadas, conex\u00f5es e at\u00e9 acompanhar logs em tempo real \u2014&#8230; <a class=\"more-link\" href=\"https:\/\/www.fernandoquadro.com.br\/html\/2025\/09\/10\/monitorar-o-geoserver-com-a-rest-api-healthcheck-e-logs\/\">Continue Reading &rarr;<\/a><\/p>\n","protected":false},"author":275,"featured_media":9957,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[24],"tags":[208,327],"class_list":["post-9932","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-gis","tag-geoserver","tag-rest-api"],"_links":{"self":[{"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/posts\/9932","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/users\/275"}],"replies":[{"embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/comments?post=9932"}],"version-history":[{"count":9,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/posts\/9932\/revisions"}],"predecessor-version":[{"id":9958,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/posts\/9932\/revisions\/9958"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/media\/9957"}],"wp:attachment":[{"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/media?parent=9932"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/categories?post=9932"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/tags?post=9932"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}