Skip to content
Snippets Groups Projects
Commit 462c3436 authored by muriki's avatar muriki
Browse files

Ajustado nomes de arquivos e adicionado zabbix.md

parent f742357d
No related branches found
No related tags found
No related merge requests found
...@@ -8,16 +8,16 @@ ...@@ -8,16 +8,16 @@
Criar um painel (dashboard) que apresente as métricas de vários servidores Postgresql, Clickhouse e que envie notificações de alerta para o discord ou telegram. Criar um painel (dashboard) que apresente as métricas de vários servidores Postgresql, Clickhouse e que envie notificações de alerta para o discord ou telegram.
## Links ## Links
[1] Prometheus: <https://schh.medium.com/monitoring-postgresql-databases-using-postgres-exporter-along-with-prometheus-and-grafana-1d68209ca687> \ 1. [Prometheus](https://schh.medium.com/monitoring-postgresql-databases-using-postgres-exporter-along-with-prometheus-and-grafana-1d68209ca687)
[2] Prometheus: <https://www.ashnik.com/monitoring-postgresql-with-prometheus-and-grafana/> \ 2. [Prometheus](https://www.ashnik.com/monitoring-postgresql-with-prometheus-and-grafana/)
[3] Postgres Dashboard: <https://grafana.com/grafana/dashboards/9628-postgresql-database/> \ 3. [Postgres Dashboard](https://grafana.com/grafana/dashboards/9628-postgresql-database/)
[4] Clickhouse Dashboard: <https://grafana.com/grafana/dashboards/14192-clickhouse/> \ 4. [Clickhouse Dashboard](https://grafana.com/grafana/dashboards/14192-clickhouse/)
[5] Grafana alert template: <https://faun.pub/overview-of-grafana-alerting-and-message-templating-for-slack-6bb740ec44af> 5. [Grafana alert template](https://faun.pub/overview-of-grafana-alerting-and-message-templating-for-slack-6bb740ec44af)
## Dependências ## Dependências
[1] postgres_exporter, 0.15.0, conectar e selecionar as metricas a serem exportadas do cluster postgres. \ 1. postgres_exporter, 0.15.0, conectar e selecionar as metricas a serem exportadas do cluster postgres.
[2] promehteus, 2.48.1, receber dados de multiplas fontes como postgres_exporter e armazená-las em timeseries. \ 2. promehteus, 2.48.1, receber dados de multiplas fontes como postgres_exporter e armazená-las em timeseries.
[3] grafana, 10.2.3, receber dados do prometheus e criar dashboards de visualização e criação de alarmes. 3. grafana, 10.2.3, receber dados do prometheus e criar dashboards de visualização e criação de alarmes.
## Casos de reporte ## Casos de reporte
- Alto uso de CPU - Alto uso de CPU
...@@ -36,7 +36,6 @@ Criar um painel (dashboard) que apresente as métricas de vários servidores Pos ...@@ -36,7 +36,6 @@ Criar um painel (dashboard) que apresente as métricas de vários servidores Pos
- Inicie o server com systemctl - Inicie o server com systemctl
#### postgres_exporter #### postgres_exporter
```bash ```bash
# Download binaries # Download binaries
cd /opt cd /opt
......
# Zabbix
## Objetivo
Criar um sistema de monitoramento com métricas em dashboards e alarmes com base nessas métricas.
## links
1. [Zabbix Downloads](https://www.zabbix.com/download)
## Dependências
1. Zabbix, 7.2, Software de monitoramento
## Instalação
Instale de acordo com sua distribuição na [documentação](https://www.zabbix.com/download)
Exemplo com Debian.
```bash
# Install Zabbix repository
wget https://repo.zabbix.com/zabbix/7.2/release/debian/pool/main/z/zabbix-release/zabbix-release_latest_7.2+debian12_all.deb
dpkg -i zabbix-release_latest_7.2+debian12_all.deb
apt update
# Install Zabbix server, frontend, agent2
apt install zabbix-server-pgsql zabbix-frontend-php php8.2-pgsql zabbix-nginx-conf zabbix-sql-scripts zabbix-agent2
# Install Zabbix agent 2 plugins
apt install zabbix-agent2-plugin-mongodb zabbix-agent2-plugin-mssql zabbix-agent2-plugin-postgresql
# Create initial database
sudo -u postgres createuser --pwprompt zabbix
sudo -u postgres createdb -O zabbix zabbix
zcat /usr/share/zabbix/sql-scripts/postgresql/server.sql.gz | sudo -u zabbix psql zabbix
# Configure the database for Zabbix server in /etc/zabbix/zabbix_server.conf
DBPassword=password
# Start Zabbix server and agent processes
systemctl restart zabbix-server zabbix-agent2 nginx php8.2-fpm
systemctl enable zabbix-server zabbix-agent2 nginx php8.2-fpm
```
...@@ -4,7 +4,6 @@ ...@@ -4,7 +4,6 @@
Documentar método de instalação para sistemas de produção, além de técnicas de otimização como tuning, particionamento e índices. Documentar método de instalação para sistemas de produção, além de técnicas de otimização como tuning, particionamento e índices.
## Links ## Links
1. [Instalação](https://www.postgresql.org/download/linux/debian/) 1. [Instalação](https://www.postgresql.org/download/linux/debian/)
2. [Tuning](https://vladmihalcea.com/postgresql-performance-tuning-settings/) 2. [Tuning](https://vladmihalcea.com/postgresql-performance-tuning-settings/)
...@@ -14,12 +13,10 @@ Documentar método de instalação para sistemas de produção, além de técnic ...@@ -14,12 +13,10 @@ Documentar método de instalação para sistemas de produção, além de técnic
6. [Compilação Código Fonte](https://www.postgresql.org/docs/current/installation.html) 6. [Compilação Código Fonte](https://www.postgresql.org/docs/current/installation.html)
## Dependências ## Dependências
1. PostgresSQL, 16.0-0, Sistema de Gerênciamento de Banco de Dados 1. PostgresSQL, 16.0-0, Sistema de Gerênciamento de Banco de Dados
## Instalação ## Instalação
Instale de acordo com sua distribuição na [documentação](https://www.postgresql.org/download/) Instale de acordo com sua distribuição na [documentação](https://www.postgresql.org/download/)
```bash ```bash
...@@ -28,7 +25,6 @@ sudo apt-get install postgresql-<version> ...@@ -28,7 +25,6 @@ sudo apt-get install postgresql-<version>
``` ```
## Compilação (NÃO USAR EM AMBIENTE DE PRODUÇÃO) ## Compilação (NÃO USAR EM AMBIENTE DE PRODUÇÃO)
Realizando a compilação do postgresql ferramentas úteis como `pg_lsclusters` não estará disponível. Realizando a compilação do postgresql ferramentas úteis como `pg_lsclusters` não estará disponível.
Tudo deve ser gerenciado e corrigido por você. Tudo deve ser gerenciado e corrigido por você.
...@@ -65,7 +61,6 @@ pg_ctl -D ./data stop ...@@ -65,7 +61,6 @@ pg_ctl -D ./data stop
``` ```
## Gerenciar cluster ## Gerenciar cluster
Para gerenciamento de clusters existem duas formas. Uma com systemctl e outra com os binários do postgres que vem na instalação. Para gerenciamento de clusters existem duas formas. Uma com systemctl e outra com os binários do postgres que vem na instalação.
Para utilizar o systemctl é recomendado que sempre se utilize a versão junto ao nome do cluster como parâmetros pois assim o systemctl saberá com qual trabalhar. Caso não seja especificado pode ser que o comando não funcione **ou haverá algum desastre**. Para utilizar o systemctl é recomendado que sempre se utilize a versão junto ao nome do cluster como parâmetros pois assim o systemctl saberá com qual trabalhar. Caso não seja especificado pode ser que o comando não funcione **ou haverá algum desastre**.
...@@ -86,7 +81,6 @@ pg_ctlcluster 16 main restart ...@@ -86,7 +81,6 @@ pg_ctlcluster 16 main restart
``` ```
## Cluster create ## Cluster create
Para criar um novo cluster postgresql use `pg_createcluster` para especificar o diretório de dados e o local dos arquivos de configuração. Para criar um novo cluster postgresql use `pg_createcluster` para especificar o diretório de dados e o local dos arquivos de configuração.
Por default, os arquivos de configuração serão colocados em `/etc/postgresql/<versao>/<cluster_name>`. Por default, os arquivos de configuração serão colocados em `/etc/postgresql/<versao>/<cluster_name>`.
...@@ -101,7 +95,6 @@ systemctl start postgresql@16-main ...@@ -101,7 +95,6 @@ systemctl start postgresql@16-main
Caso seja utilizado `initdb` para criar um novo cluster, não apenas não será visível ao `pg_lsclusters` como também todos os dados serão colocados dentro do mesmo diretório. Caso seja utilizado `initdb` para criar um novo cluster, não apenas não será visível ao `pg_lsclusters` como também todos os dados serão colocados dentro do mesmo diretório.
## Cluster delete ## Cluster delete
Para deletar um cluster verifique primeiro a versão junto com o nome do cluster com `pg_lsclusters` em seguida delete o cluster com `pg_dropcluster` Para deletar um cluster verifique primeiro a versão junto com o nome do cluster com `pg_lsclusters` em seguida delete o cluster com `pg_dropcluster`
```bash ```bash
...@@ -112,7 +105,6 @@ pg_dropcluster --stop 16 main ...@@ -112,7 +105,6 @@ pg_dropcluster --stop 16 main
``` ```
## Cluster upgrade ## Cluster upgrade
Para atualizar um cluster postgres para uma nova versão primeiramente instale os novos binários Para atualizar um cluster postgres para uma nova versão primeiramente instale os novos binários
Ex: Ex:
...@@ -159,7 +151,6 @@ pg_dumpall -p 5432 | psql -d postgres -p 5433 ...@@ -159,7 +151,6 @@ pg_dumpall -p 5432 | psql -d postgres -p 5433
Desligue o cluster antigo e altere a porta do novo cluster. Desligue o cluster antigo e altere a porta do novo cluster.
## Gerenciamento de usuários ## Gerenciamento de usuários
A seguir é apresentado como criar usuários e gerenciar permissões. A seguir é apresentado como criar usuários e gerenciar permissões.
```sql ```sql
...@@ -183,7 +174,6 @@ REVOKE SELECT ON ALL TABLES IN SCHEMA <schema> FROM <user>; ...@@ -183,7 +174,6 @@ REVOKE SELECT ON ALL TABLES IN SCHEMA <schema> FROM <user>;
``` ```
## Chamar comandos por bash ## Chamar comandos por bash
Para rodar comandos pelo utilitário `psql` é possivel chamar em linha de comando ou em arquivos. Para rodar comandos pelo utilitário `psql` é possivel chamar em linha de comando ou em arquivos.
```bash ```bash
...@@ -195,7 +185,6 @@ psql -d <database> -U <user> < file.sql ...@@ -195,7 +185,6 @@ psql -d <database> -U <user> < file.sql
Com isso, tanto por linha de comando como por arquivo serão executados no banco <database> com o usuário <user> Com isso, tanto por linha de comando como por arquivo serão executados no banco <database> com o usuário <user>
## Ambiente de Produção ## Ambiente de Produção
Quando utilizado para ambientes de produção algumas configurações adicionais são interessantes como gerenciamento de performance, quota e conexões. Quando utilizado para ambientes de produção algumas configurações adicionais são interessantes como gerenciamento de performance, quota e conexões.
...@@ -208,7 +197,6 @@ ALTER SYSTEM SET tcp_keepalives_count = 6; ...@@ -208,7 +197,6 @@ ALTER SYSTEM SET tcp_keepalives_count = 6;
``` ```
## Import/Export de dados ## Import/Export de dados
É possível tanto importar quanto exportar dados utilizando o comando `\COPY` especificando com `WITH`. É possível tanto importar quanto exportar dados utilizando o comando `\COPY` especificando com `WITH`.
```SQL ```SQL
...@@ -223,7 +211,6 @@ postgres=#\COPY (SELECT count(*) FROM customer) TO '/path/to/file/on/server' WIT ...@@ -223,7 +211,6 @@ postgres=#\COPY (SELECT count(*) FROM customer) TO '/path/to/file/on/server' WIT
``` ```
## Tunning ## Tunning
Por padrão o postgres vem com uma configuração básica para funcionar com a maioria dos sistemas, o que não é ideal para produção. Por padrão o postgres vem com uma configuração básica para funcionar com a maioria dos sistemas, o que não é ideal para produção.
Caso seja necessário, é possivel alterar parâmetros e padrões de comportamento que resultem em sua otimização. Caso seja necessário, é possivel alterar parâmetros e padrões de comportamento que resultem em sua otimização.
...@@ -259,7 +246,6 @@ Configura o tempo de execução mínimo para uma consulta ser registrada no log, ...@@ -259,7 +246,6 @@ Configura o tempo de execução mínimo para uma consulta ser registrada no log,
- Recomendação: Por default é desativado com -1. Entretanto é interessante para estudar consultas que consomem mais de 1000ms(1 segundo). - Recomendação: Por default é desativado com -1. Entretanto é interessante para estudar consultas que consomem mais de 1000ms(1 segundo).
## Otimização em Sistemas Operacionais ## Otimização em Sistemas Operacionais
Devido a dependência do Postgres ao sistema sobre o qual está funcionando, é possivel alterar comportamentos do SO para otimizar recursos. Devido a dependência do Postgres ao sistema sobre o qual está funcionando, é possivel alterar comportamentos do SO para otimizar recursos.
...@@ -279,12 +265,10 @@ Huge pages é uma opção oferecida pelo SO... ...@@ -279,12 +265,10 @@ Huge pages é uma opção oferecida pelo SO...
É possivel alterar a maneira como as alocações são realizadas... É possivel alterar a maneira como as alocações são realizadas...
## Particionamento de Tabelas ## Particionamento de Tabelas
Em situações em que tabelas não possuem altas taxas de atualização de tuplas, mas sim de inserções ou deleções é possível realizar o particionamento de tais tabelas para aumento de performance. Em situações em que tabelas não possuem altas taxas de atualização de tuplas, mas sim de inserções ou deleções é possível realizar o particionamento de tais tabelas para aumento de performance.
## Indexes ## Indexes
Realizando alterações nos métodos de acesso aos dados das tabelas com a criação de índices, embora possa reduzir a velocidade de escrita, pode aumentar a performance da árvore de consulta do postgres. Realizando alterações nos métodos de acesso aos dados das tabelas com a criação de índices, embora possa reduzir a velocidade de escrita, pode aumentar a performance da árvore de consulta do postgres.
...@@ -341,7 +325,6 @@ DROP TABLESPACE fastspace; ...@@ -341,7 +325,6 @@ DROP TABLESPACE fastspace;
``` ```
## Extensões ## Extensões
Utilizando extensões é possível expandir as capacidades do Postgres como uso uso avançado de estatísticas, armazenamento colunar, dados geográficos e etc. Utilizando extensões é possível expandir as capacidades do Postgres como uso uso avançado de estatísticas, armazenamento colunar, dados geográficos e etc.
```SQL ```SQL
...@@ -373,7 +356,6 @@ Além disso, embora o desempenho de consultas distribuidas no postgres seja poss ...@@ -373,7 +356,6 @@ Além disso, embora o desempenho de consultas distribuidas no postgres seja poss
Com a extensão Postgis é possível trabalhar com dados geográficos como `geojson` na construção de mapas em `deck.gl`. Com a extensão Postgis é possível trabalhar com dados geográficos como `geojson` na construção de mapas em `deck.gl`.
## Simulação de streaming ## Simulação de streaming
Caso seja necessário testar um ambiente controlado de inserções é possível, além de utilizar soluções complexas como hammerdb, utilizar o comando `\watch` que repete o ultimo comando executado. Caso seja necessário testar um ambiente controlado de inserções é possível, além de utilizar soluções complexas como hammerdb, utilizar o comando `\watch` que repete o ultimo comando executado.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment