{"id":178,"date":"2026-09-05T17:28:14","date_gmt":"2026-09-05T20:28:14","guid":{"rendered":"https:\/\/www.linuxpro.com.br\/?p=178"},"modified":"2026-09-10T23:20:45","modified_gmt":"2026-09-11T02:20:45","slug":"monitorando-servidores-linux-com-prometheus","status":"publish","type":"post","link":"https:\/\/www.linuxpro.com.br\/es\/2026\/09\/monitorando-servidores-linux-com-prometheus\/","title":{"rendered":"Monitorando Servidores Linux com Prometheus e Node Exporter"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" alt=\"Mascote do LinuxPro apontando um pico no gr\u00e1fico de m\u00e9tricas, com a tocha do Prometheus e os servidores monitorados\" src=\"\/wp-content\/uploads\/2026\/09\/prometheus-v4.webp\" width=\"1486\" height=\"856\" \/><\/p>\n<p>Servidor sem monitoramento s\u00f3 avisa que caiu quando algu\u00e9m reclama. Com o <strong>Node Exporter<\/strong>, cada host exp\u00f5e m\u00e9tricas do Linux; o <strong>Prometheus<\/strong> as coleta e guarda como s\u00e9ries temporais para consulta e alerta. Este roteiro usa pacotes do Ubuntu onde eles existem, evita expor m\u00e9tricas na internet e valida cada etapa antes de seguir.<\/p>\n<h2>O desenho: quem coleta e quem exp\u00f5e<\/h2>\n<p>O Node Exporter escuta no host monitorado, normalmente na porta <code>9100<\/code>. O Prometheus, no servidor central, faz o <em>scrape<\/em> HTTP em intervalos regulares; ele n\u00e3o recebe m\u00e9tricas por push nesse cen\u00e1rio. Para poucos servidores, <code>static_configs<\/code> \u00e9 a forma can\u00f4nica de declarar alvos. Quando a frota crescer, prefira descoberta de servi\u00e7os ou arquivos de alvos em vez de editar a configura\u00e7\u00e3o principal a cada m\u00e1quina.<\/p>\n<h2>Instale o Node Exporter pelo Ubuntu<\/h2>\n<p>Em Ubuntu, o pacote da distribui\u00e7\u00e3o integra servi\u00e7o, usu\u00e1rio e atualiza\u00e7\u00f5es de seguran\u00e7a. Isso evita baixar um bin\u00e1rio com vers\u00e3o fixa e esquec\u00ea-lo depois. Em cada servidor monitorado:<\/p>\n<pre><code class=\"language-bash\">sudo apt update\nsudo apt install -y prometheus-node-exporter\nsudo systemctl enable --now prometheus-node-exporter\nsudo systemctl status prometheus-node-exporter --no-pager\ncurl -fsS http:\/\/localhost:9100\/metrics | head<\/code><\/pre>\n<p>Se voc\u00ea precisar do bin\u00e1rio upstream por causa de um recurso espec\u00edfico, confira a arquitetura, a assinatura\/checksum e a vers\u00e3o na p\u00e1gina oficial de releases antes de instalar. O projeto recomenda consultar <code>node_exporter --help<\/code> para os coletores e flags dispon\u00edveis.<\/p>\n<h2>Restrinja a porta 9100<\/h2>\n<p><code>\/metrics<\/code> revela dados do host e n\u00e3o deve ficar aberto para a internet. Permita apenas o IP ou a rede do servidor Prometheus. No exemplo, substitua <code>10.0.0.10<\/code> pelo IP real do seu coletor:<\/p>\n<pre><code class=\"language-bash\">sudo ufw allow from 10.0.0.10 to any port 9100 proto tcp\nsudo ufw status numbered<\/code><\/pre>\n<p>Em redes sem per\u00edmetro confi\u00e1vel, use TLS e autentica\u00e7\u00e3o do exporter ou uma rede privada\/VPN. Autentica\u00e7\u00e3o b\u00e1sica sem TLS exp\u00f5e a senha na rede.<\/p>\n<h2>Instale o Prometheus e adicione os alvos<\/h2>\n<pre><code class=\"language-bash\">sudo apt update\nsudo apt install -y prometheus\nsudo systemctl enable --now prometheus\nsudo systemctl status prometheus --no-pager<\/code><\/pre>\n<p>No servidor de monitoramento, adicione <strong>apenas este job<\/strong> \u00e0 lista <code>scrape_configs<\/code> j\u00e1 existente em <code>\/etc\/prometheus\/prometheus.yml<\/code>. N\u00e3o substitua o arquivo inteiro: o pacote costuma trazer o job do pr\u00f3prio Prometheus.<\/p>\n<pre><code class=\"language-yaml\">  - job_name: linux\n    scrape_interval: 30s\n    static_configs:\n      - targets:\n          - web1.exemplo.com.br:9100\n          - db1.exemplo.com.br:9100\n        labels:\n          ambiente: producao<\/code><\/pre>\n<p>Valide a sintaxe antes de reiniciar. Uma configura\u00e7\u00e3o inv\u00e1lida n\u00e3o deve virar uma janela sem monitoramento:<\/p>\n<pre><code class=\"language-bash\">sudo promtool check config \/etc\/prometheus\/prometheus.yml\nsudo systemctl restart prometheus\ncurl -fsS http:\/\/localhost:9090\/-\/ready\n<\/code><\/pre>\n<p>Abra <code>http:\/\/IP_DO_PROMETHEUS:9090\/targets<\/code>. Os dois alvos devem aparecer como <strong>UP<\/strong>. O endpoint <code>\/-\/ready<\/code> retorna 200 quando o Prometheus est\u00e1 pronto para atender consultas.<\/p>\n<h2>Consultas PromQL que respondem perguntas reais<\/h2>\n<pre><code class=\"language-text\"># alvo est\u00e1 acess\u00edvel? 1 = UP, 0 = falhou\nup{job=\"linux\"}\n\n# CPU ocupada por host, m\u00e9dia dos \u00faltimos 5 minutos\n100 - (avg by (instance) (rate(node_cpu_seconds_total{job=\"linux\",mode=\"idle\"}[5m])) * 100)\n\n# mem\u00f3ria usada, sem contar cache reaproveit\u00e1vel\n100 * (1 - node_memory_MemAvailable_bytes{job=\"linux\"} \/ node_memory_MemTotal_bytes{job=\"linux\"})\n\n# espa\u00e7o usado em sistemas de arquivos reais\n100 * (1 - node_filesystem_avail_bytes{job=\"linux\",fstype!~\"tmpfs|overlay\"} \/ node_filesystem_size_bytes{job=\"linux\",fstype!~\"tmpfs|overlay\"})<\/code><\/pre>\n<p><code>node_load1<\/code> mede carga, n\u00e3o porcentagem de CPU. Compare-o com a quantidade de CPUs do host antes de concluir que existe satura\u00e7\u00e3o. Para contadores, como CPU, use <code>rate()<\/code>; aplicar <code>rate()<\/code> em uma m\u00e9trica que j\u00e1 \u00e9 um valor instant\u00e2neo produz uma leitura sem sentido.<\/p>\n<h2>Do gr\u00e1fico ao alerta<\/h2>\n<p>Grafana melhora a visualiza\u00e7\u00e3o, mas o alerta deve nascer de uma regra com dura\u00e7\u00e3o e severidade, encaminhada pelo Alertmanager. Comece por indisponibilidade, disco pr\u00f3ximo do limite e press\u00e3o de mem\u00f3ria; evite alertar em cada pico moment\u00e2neo. Para a compara\u00e7\u00e3o com monitoramento tradicional, veja a <a href=\"\/2026\/09\/a-historia-do-nagios\/\">hist\u00f3ria do Nagios<\/a> e a <a href=\"\/2026\/09\/a-historia-do-zabbix\/\">hist\u00f3ria do Zabbix<\/a>. Se seus hosts s\u00e3o provisionados por automa\u00e7\u00e3o, use tamb\u00e9m o guia de <a href=\"\/2026\/09\/automatizando-servidores-linux-com-ansible\/\">Ansible<\/a> para repetir a instala\u00e7\u00e3o e as regras sem configura\u00e7\u00e3o manual.<\/p>\n<p><strong>Fontes:<\/strong> <a href=\"https:\/\/prometheus.io\/docs\/prometheus\/latest\/configuration\/configuration\/\" rel=\"noopener\">configura\u00e7\u00e3o do Prometheus<\/a>; <a href=\"https:\/\/prometheus.io\/docs\/prometheus\/latest\/querying\/basics\/\" rel=\"noopener\">guia de PromQL<\/a>; <a href=\"https:\/\/prometheus.io\/docs\/operating\/security\/\" rel=\"noopener\">modelo de seguran\u00e7a<\/a>; <a href=\"https:\/\/github.com\/prometheus\/node_exporter\" rel=\"noopener\">Node Exporter<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Servidor sem monitoramento s\u00f3 avisa que caiu quando algu\u00e9m reclama. Com o Node Exporter, cada host exp\u00f5e m\u00e9tricas do Linux; o Prometheus as coleta e guarda como s\u00e9ries temporais para consulta e alerta. Este roteiro usa pacotes do Ubuntu onde eles existem, evita expor m\u00e9tricas na internet e valida cada etapa antes de seguir. O &#8230; <a title=\"Monitorando Servidores Linux com Prometheus e Node Exporter\" class=\"read-more\" href=\"https:\/\/www.linuxpro.com.br\/es\/2026\/09\/monitorando-servidores-linux-com-prometheus\/\" aria-label=\"Read more about Monitorando Servidores Linux com Prometheus e Node Exporter\">Read more<\/a><\/p>","protected":false},"author":0,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[21,2,120],"tags":[23,126,125,72],"class_list":["post-178","post","type-post","status-publish","format-standard","hentry","category-infra","category-linux","category-servidores","tag-infra","tag-monitoramento","tag-prometheus","tag-servidores"],"_links":{"self":[{"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/posts\/178","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/comments?post=178"}],"version-history":[{"count":7,"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/posts\/178\/revisions"}],"predecessor-version":[{"id":1524,"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/posts\/178\/revisions\/1524"}],"wp:attachment":[{"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/media?parent=178"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/categories?post=178"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/tags?post=178"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}