diff --git a/docs/source/pages/Monitoramento/Prometheus.md b/docs/source/pages/Monitoramento/Prometheus.md index e140c66a79665693475ebf0d1264255a7709486f..c8702ffa915866476ab54dddc0704e149e0e1e32 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.