diff --git a/docs/source/pages/Monitoramento/Monitoramento-Prometheus.md b/docs/source/pages/Monitoramento/Prometheus.md similarity index 91% rename from docs/source/pages/Monitoramento/Monitoramento-Prometheus.md rename to docs/source/pages/Monitoramento/Prometheus.md index 03086b73bffb87846d309b1c02b6ac48017d94fa..a2063e83ac26c6deb1d672a79f472c6e91d47657 100644 --- a/docs/source/pages/Monitoramento/Monitoramento-Prometheus.md +++ b/docs/source/pages/Monitoramento/Prometheus.md @@ -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. ## Links -[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/> \ -[3] Postgres Dashboard: <https://grafana.com/grafana/dashboards/9628-postgresql-database/> \ -[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> +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/) +3. [Postgres Dashboard](https://grafana.com/grafana/dashboards/9628-postgresql-database/) +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) ## Dependências -[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. \ -[3] grafana, 10.2.3, receber dados do prometheus e criar dashboards de visualização e criação de alarmes. +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. +3. grafana, 10.2.3, receber dados do prometheus e criar dashboards de visualização e criação de alarmes. ## Casos de reporte - Alto uso de CPU @@ -36,7 +36,6 @@ Criar um painel (dashboard) que apresente as métricas de vários servidores Pos - Inicie o server com systemctl #### postgres_exporter - ```bash # Download binaries cd /opt diff --git a/docs/source/pages/Monitoramento/Zabbix.md b/docs/source/pages/Monitoramento/Zabbix.md new file mode 100644 index 0000000000000000000000000000000000000000..290aa262bac48e0cc114be0f997cb341eb0edfb3 --- /dev/null +++ b/docs/source/pages/Monitoramento/Zabbix.md @@ -0,0 +1,43 @@ +# 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 +``` + diff --git a/docs/source/pages/Monitoramento/monitoramento-influxDB.md b/docs/source/pages/Monitoramento/influxDB.md similarity index 100% rename from docs/source/pages/Monitoramento/monitoramento-influxDB.md rename to docs/source/pages/Monitoramento/influxDB.md diff --git a/docs/source/pages/PostgreSQL/postgresql.md b/docs/source/pages/PostgreSQL/Postgresql.md similarity index 99% rename from docs/source/pages/PostgreSQL/postgresql.md rename to docs/source/pages/PostgreSQL/Postgresql.md index f1f5417e837cb3651d84d8dbd02e3f7a11cb4b02..3d934f2583191eaefbe66af351e538a3d9fbacd1 100644 --- a/docs/source/pages/PostgreSQL/postgresql.md +++ b/docs/source/pages/PostgreSQL/Postgresql.md @@ -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. - ## Links 1. [Instalação](https://www.postgresql.org/download/linux/debian/) 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 6. [Compilação Código Fonte](https://www.postgresql.org/docs/current/installation.html) - ## Dependências 1. PostgresSQL, 16.0-0, Sistema de Gerênciamento de Banco de Dados - ## Instalação Instale de acordo com sua distribuição na [documentação](https://www.postgresql.org/download/) ```bash @@ -28,7 +25,6 @@ sudo apt-get install postgresql-<version> ``` - ## 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. Tudo deve ser gerenciado e corrigido por você. @@ -65,7 +61,6 @@ pg_ctl -D ./data stop ``` - ## 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 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 ``` - ## 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. 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 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 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 @@ -112,7 +105,6 @@ pg_dropcluster --stop 16 main ``` - ## Cluster upgrade Para atualizar um cluster postgres para uma nova versão primeiramente instale os novos binários Ex: @@ -159,7 +151,6 @@ pg_dumpall -p 5432 | psql -d postgres -p 5433 Desligue o cluster antigo e altere a porta do novo cluster. - ## Gerenciamento de usuários A seguir é apresentado como criar usuários e gerenciar permissões. ```sql @@ -183,7 +174,6 @@ REVOKE SELECT ON ALL TABLES IN SCHEMA <schema> FROM <user>; ``` - ## Chamar comandos por bash Para rodar comandos pelo utilitário `psql` é possivel chamar em linha de comando ou em arquivos. ```bash @@ -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> - ## 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. @@ -208,7 +197,6 @@ ALTER SYSTEM SET tcp_keepalives_count = 6; ``` - ## Import/Export de dados É possível tanto importar quanto exportar dados utilizando o comando `\COPY` especificando com `WITH`. ```SQL @@ -223,7 +211,6 @@ postgres=#\COPY (SELECT count(*) FROM customer) TO '/path/to/file/on/server' WIT ``` - ## 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. 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, - Recomendação: Por default é desativado com -1. Entretanto é interessante para estudar consultas que consomem mais de 1000ms(1 segundo). - ## 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. @@ -279,12 +265,10 @@ Huge pages é uma opção oferecida pelo SO... É possivel alterar a maneira como as alocações são realizadas... - ## 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. - ## 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. @@ -341,7 +325,6 @@ DROP TABLESPACE fastspace; ``` - ## 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. ```SQL @@ -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`. - ## 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.