From 398bc99b045e51ca2a9cf9c58aef7031af7b8c2c Mon Sep 17 00:00:00 2001
From: mgy20 <mgy20@inf.ufpr.br>
Date: Fri, 28 Feb 2025 17:45:52 +0000
Subject: [PATCH] Edit Prometheus.md

---
 docs/source/pages/Monitoramento/Prometheus.md | 190 +++++++++---------
 1 file changed, 96 insertions(+), 94 deletions(-)

diff --git a/docs/source/pages/Monitoramento/Prometheus.md b/docs/source/pages/Monitoramento/Prometheus.md
index e140c66..c8702ff 100644
--- a/docs/source/pages/Monitoramento/Prometheus.md
+++ b/docs/source/pages/Monitoramento/Prometheus.md
@@ -1,4 +1,4 @@
-# Sistema de Monitoramento de SGDB's
+# Prometheus
 
 
 ## Objetivo
@@ -19,87 +19,10 @@ Criar um painel (dashboard) que apresente as métricas de vários servidores Pos
 3. grafana, 10.2.3, Dashboards
 
 
-## Casos de reporte
-- Alto uso de CPU
-- Alto uso de memória
-- Alto tempo de consulta
-- Alto uso de arquivos abertos
-- Número de conexões
+## Instalação
+Para instalar o Prometheus é preciso baixar os binários e configurá-los.
 
-
-## Prometheus - Grafana
-
-#### postgres_exporter
-```bash
-# Download binaries
-cd /opt
-wget https://github.com/prometheus-community/postgres_exporter/releases/download/v0.17.0/postgres_exporter-0.17.0.linux-amd64.tar.gz
-tar -xzf postgres_exporter-0.17.0.linux-amd64.tar.gz
-mv postgres_exporter-0.17.0.linux-amd64 postgres_exporter
-rm postgres_exporter-0.17.0.linux-amd64.tar.gz
-
-# Change permissions
-chown -R postgres:postgres postgres_exporter
-cd postgres_exporter/
-```
-
-Crie o arquivo `/opt/postgres_exporter/postgres_exporter.env` para configurar o acesso ao banco (localhost no exemplo abaixo).
-
-```env
-DATA_SOURCE_NAME="postgresql://postgres:postgres@localhost:5432/?sslmode=disable"
-```
-
-Crie o arquivo `/etc/systemd/system/postgres_exporter.service` para o serviço.
-
-```
-[Unit]
-Description=Prometheus exporter for Postgresql
-Wants=network-online.target
-After=network-online.target
-
-[Service]
-User=postgres
-Group=postgres
-WorkingDirectory=/opt/postgres_exporter
-EnvironmentFile=/opt/postgres_exporter/postgres_exporter.env
-ExecStart=/opt/postgres_exporter/postgres_exporter
-Restart=always
-
-[Install]
-WantedBy=multi-user.target
-```
-
-Finalmente inicie o serviço:
-```bash
-systemctl daemon-reload
-systemctl start postgres_exporter
-```
-
-#### Adicionar metricas postgres_exporter
-Para adicionar mais metricas ao conjunto que é disponibilizado por padrão ao postgres_exporter, basta adicionar a flag da métrica que se deseja adicionar da lista em [Flags](https://github.com/prometheus-community/postgres_exporter?tab=readme-ov-file#flags) a variável `ExecStart` arquivo service do postgres_exporter.
-
-Exemplo com postmaster:
-
-```
-[Unit]
-Description=Prometheus exporter for Postgresql
-Wants=network-online.target
-After=network-online.target
-
-[Service]
-User=postgres
-Group=postgres
-WorkingDirectory=/opt/postgres_exporter
-EnvironmentFile=/opt/postgres_exporter/postgres_exporter.env
-ExecStart=/opt/postgres_exporter/postgres_exporter --collector.postmaster
-Restart=always
-
-[Install]
-WantedBy=multi-user.target
-```
-
-
-#### prometheus
+**OBS:** Embora possa ter problemas com atualizações no futuro, binários de gerenciadores como APT estão longe da última versão suportada.
 ```bash
 # Create prometheus user
 useradd –-no-create-home –-shell /bin/false prometheus
@@ -168,7 +91,12 @@ After=network-online.target
 User=prometheus
 Group=prometheus
 Type=simple
-ExecStart=/opt/prometheus/prometheus --config.file /opt/prometheus/prometheus.yml --storage.tsdb.path /var/lib/prometheus/ --web.console.templates=/etc/prometheus/consoles --web.console.libraries=/etc/prometheus/console_libraries
+ExecStart=/opt/prometheus/prometheus \
+  --config.file /opt/prometheus/prometheus.yml \
+  --storage.tsdb.path /var/lib/prometheus/ \
+  --web.console.templates=/etc/prometheus/consoles \
+  --web.console.libraries=/etc/prometheus/console_libraries \
+  --storage.tsdb.retention.time=1y
 
 [Install]
 WantedBy=multi-user.target
@@ -182,8 +110,84 @@ systemctl start prometheus
 ```
 
 
+## Exportadores de Métricas
+Para que o Prometheus possa armazenar dados cada serviço necessita de um exportador de métricas.
+
+#### postgres_exporter
+PostgreSQL não possui um exportador de métricas, logo é necessário configurar um mantido pelo próprio Prometheus.
+```bash
+# Download binaries
+cd /opt
+wget https://github.com/prometheus-community/postgres_exporter/releases/download/v0.17.0/postgres_exporter-0.17.0.linux-amd64.tar.gz
+tar -xzf postgres_exporter-0.17.0.linux-amd64.tar.gz
+mv postgres_exporter-0.17.0.linux-amd64 postgres_exporter
+rm postgres_exporter-0.17.0.linux-amd64.tar.gz
+
+# Change permissions
+chown -R postgres:postgres postgres_exporter
+cd postgres_exporter/
+```
+
+Crie o arquivo `/opt/postgres_exporter/postgres_exporter.env` para configurar o acesso ao banco (localhost no exemplo abaixo).
+
+```env
+DATA_SOURCE_NAME="postgresql://postgres:postgres@localhost:5432/?sslmode=disable"
+```
+
+Crie o arquivo `/etc/systemd/system/postgres_exporter.service` para o serviço.
+
+```
+[Unit]
+Description=Prometheus exporter for Postgresql
+Wants=network-online.target
+After=network-online.target
+
+[Service]
+User=postgres
+Group=postgres
+WorkingDirectory=/opt/postgres_exporter
+EnvironmentFile=/opt/postgres_exporter/postgres_exporter.env
+ExecStart=/opt/postgres_exporter/postgres_exporter
+Restart=always
+
+[Install]
+WantedBy=multi-user.target
+```
+
+Finalmente inicie o serviço:
+```bash
+systemctl daemon-reload
+systemctl start postgres_exporter
+```
+
+**OBS:** Adicionar metricas postgres_exporter
+Para adicionar mais metricas ao conjunto que é disponibilizado por padrão ao postgres_exporter, basta adicionar a flag da métrica que se deseja adicionar da lista em [Flags](https://github.com/prometheus-community/postgres_exporter?tab=readme-ov-file#flags) a variável `ExecStart` arquivo service do postgres_exporter.
+
+Exemplo com postmaster:
+
+```
+[Unit]
+Description=Prometheus exporter for Postgresql
+Wants=network-online.target
+After=network-online.target
+
+[Service]
+User=postgres
+Group=postgres
+WorkingDirectory=/opt/postgres_exporter
+EnvironmentFile=/opt/postgres_exporter/postgres_exporter.env
+ExecStart=/opt/postgres_exporter/postgres_exporter --collector.postmaster
+Restart=always
+
+[Install]
+WantedBy=multi-user.target
+```
+
+
+
 #### Clickhouse
-Para adicionar o clickhouse ao coletor de metricas do prometheus primeiro deve-se configurar o exportador de metricas do clickhouse. \
+Clickhouse ja vem com um exportador de métricas e portanto é necessário apenas configura-lo.
+
 Acesse o arquivo de configuração `config.xml` e descomente a tag prometheus com a porta especificada e reinicie o serviço.
 
 ```xml
@@ -210,15 +214,7 @@ scrape_configs:
     static_configs:
       - targets: ["localhost:9090"]
 
-  - job_name: "dbteam_pg_exporter"
-    static_configs:
-      - targets: ["dbteamvenv:9187"]
-
-  - job_name: "hydra_pg_exporter"
-    static_configs:
-      - targets: ["hydrapostgres:9187"]
-
-  - job_name: "dbteam_clickhouse"
+  - job_name: "clickhouse"
     static_configs:
       - targets: ["localhost:9363"]
 
@@ -226,8 +222,14 @@ scrape_configs:
 
 Finalmente reinicie o serviço do prometheus.
 
-## Alertas - Grafana Discord
-É possível configurar o grafana para enviar alertas a um canal no discord.
+## Alertas
+É possível configurar o grafana para enviar alertas a um canal de comunicação como email, telegram ou discord.
+
+- Alto uso de CPU
+- Alto uso de memória
+- Alto tempo de consulta
+- Alto uso de arquivos abertos
+- Número de conexões
 
 #### Contact points
 Primeiro é necessario adicionar o discord como um dos pontos de notificação.
-- 
GitLab