PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como monitorar o PostgreSQL em execução dentro de um contêiner do Docker:parte dois


Esta é a segunda parte da série Como monitorar o PostgreSQL em execução dentro de um contêiner do Docker. Na Parte 1, apresentei uma visão geral dos contêineres, políticas e rede do docker. Nesta parte continuaremos com a configuração do docker e finalmente habilitaremos o monitoramento via ClusterControl.

O PostgreSQL é um banco de dados de código aberto da velha escola cuja popularidade ainda está aumentando, sendo amplamente utilizado e aceito na maioria dos ambientes de nuvem atuais.

Quando usado dentro de um container ele pode ser facilmente configurado e gerenciado pelo Docker, usando diferentes tags para a criação e enviado para qualquer computador do mundo com o Docker instalado, mas isso é tudo sobre o Docker.

Agora vamos falar sobre o PostgreSQL, e para começar vamos listar seus seis processos principais rodando simultaneamente dentro de um container pelo usuário do sistema operacional chamado “postgres”, que é diferente do usuário “postgres” dentro do banco de dados, aquele é um superusuário.

Lembre-se que a seta azul nas imagens está exibindo comandos inseridos dentro de um container.
$ ps auxww
Processos principais do PostgreSQL
O primeiro processo da lista é o servidor PostgreSQL, e os demais são iniciados por ele. Suas funções são basicamente analisar o que está acontecendo no servidor, sendo subprocessos realizando entradas de estatísticas, escrevendo logs e esse tipo de coisa.

Usaremos o ClusterControl para monitorar a atividade dentro deste container com o servidor PostgreSQL, e para isso precisaremos ter o SSH instalado para conectá-los com segurança.

Secure Shell Server (SSH)


Para coletar as informações sobre o container PostgreSQL, nada melhor que SSH. Dá acesso remoto de um endereço IP a outro, e isso tudo que o ClusterControl precisa para realizar o trabalho.

O SSH precisa ser baixado do repositório e, para isso, devemos estar dentro do contêiner.
$ docker container exec -it postgres-2 bash
$ apt-get update && apt-get install -y openssh-server openssh-client
Instalando SSH no contêiner "postgres-2"
Após a instalação, editaremos a configuração, iniciaremos o serviço, configuraremos uma senha para o usuário root e, finalmente, sairemos do container:
$ sed -i 's|^PermitRootLogin.*|PermitRootLogin yes|g' /etc/ssh/sshd_config
$ sed -i 's|^#PermitRootLogin.*|PermitRootLogin yes|g' /etc/ssh/sshd_config
$ service ssh start
$ passwd
$ exit
Configurando o SSH no contêiner "postgres-2", parte 1/2

Monitoramento com ClusterControl


O ClusterControl possui um sistema de integração profundo capaz de monitorar todos os processos do PostgreSQL em tempo real, também vem com uma biblioteca de Advisors para manter os dados seguros, acompanhar o desempenho do banco de dados e, claro, alertar quando ocorrerem anomalias.

Com o SSH configurado, o ClusterControl pode monitorar a atividade de hardware do sistema operacional e fornecer informações sobre o banco de dados e a camada externa.

Executaremos executando um novo container, e publicando-o na porta 5000 do nosso computador, então poderemos acessar o sistema através do nosso navegador.
$ docker container run --name s9s-ccontrol --network bridge-docker -p 5000:80 -d severalnines/clustercontrol
Executando o contêiner "s9s-ccontrol" para o Multiplenines ClusterControl
Uma vez implantado, resta apenas a configuração SSH, e temos uma boa notícia, pois estamos em uma Rede Bridge Definida pelo Usuário, podemos usar DNS!
$ docker container exec -it s9s-ccontrol bash
$ ssh-copy-id postgres-2
Configurando o SSH no contêiner "postgres-2", parte 2/2
Após digitar “yes” e especificar a senha fornecida anteriormente, é possível acessar o container “postgres-2” como root usando SSH:
$ ssh postgres-2
Verificando a conexão SSH com sucesso
Essa nova cor, azul claro, será usada a seguir para representar a atividade dentro do banco de dados. No exemplo acima acessamos o container “postgres-2” do “s9s-ccontrol”, mas ainda é o usuário root. Mantenha sua atenção e críticas comigo.

Então o próximo passo é ir ao navegador e acessar http://localhost:5000/clustercontrol/users/welcome/ e registre uma conta, ou se você já tiver uma, visite http://localhost:5000/clustercontrol/users/login .

Em seguida, “Import Existing Server/Cluster” e insira a configuração anterior. A aba “PostgreSQL &TimescaleDB” deve ser selecionada. No campo “SSH User” para esta demonstração basta digitar “root”. Então, por fim, digite o “Nome do Cluster”, e pode ser qualquer nome que você quiser, é simplesmente quem irá conter quantos containers PostgreSQL necessários você deseja importar e monitorar.
Importando o banco de dados "postgres-2", parte 1/2
Agora é hora de inserir as informações sobre o container PostgreSQL, o usuário “postgres”, a senha “5af45Q4ae3Xa3Ff4” e os containers desejados. É extremamente importante lembrar que o serviço SSH deve estar ativo dentro do container PostgreSQL.
Importando o contêiner "postgres-2", parte 2/2
Após pressionar o botão “Importar”, o ClusterControl passará a gerenciar o container PostgreSQL “postgres-2” dentro do Cluster chamado “PostgreSQL”, e informará quando o processo de importação estiver concluído.
Log sobre o processo de importação do container "postgres-2"
Uma vez concluído, o sistema será mostrado na guia Clusters, nosso cluster criado mais recentemente e diferentes opções separadas em seções

Nossa primeira etapa de visualização será na opção Visão geral.
Cluster PostgreSQL importado com sucesso
Como você pode imaginar, nosso banco de dados está vazio e não temos nenhum caos aqui para nossa diversão, mas o gráfico ainda funciona sendo engajado em pequena escala contendo estatísticas sobre os processos SQL e Banco de Dados.
Exibindo estatísticas sobre a atividade do SQL e do banco de dados

Simulação de cenário do mundo real


Para dar um pouco de ação, criei um arquivo CSV usando Python, explorando o repositório GitHub do Socratica, que disponibiliza cursos incríveis no YouTube, e eles disponibilizam esses arquivos gratuitamente.

Em resumo, o arquivo CSV criado possui 9 milhões, 999 mil e 999 registros de pessoas, cada um contendo ID, nome, sobrenome e data de nascimento. O tamanho do arquivo é 324 MB:
$ du -s -h persons.csv
Verificando o tamanho do arquivo CSV
Vamos copiar este arquivo CSV para o container PostgreSQL, depois copiá-lo novamente, mas desta vez para o banco de dados, e finalmente verificar as estatísticas no ClusterControl.
$ docker container cp persons.csv postgres-2:/persons.csv
$ docker container exec -it postgres-2 bash
$ du -s -h persons.csv
$ su - postgres
$ psql
Transferindo o arquivo CSV para o container e inserindo no banco de dados
Ok, então estamos no banco de dados agora, como o superusuário “postgres”, observe as cores diferentes nas setas.

Agora, devemos criar o banco de dados, a tabela, e preenchê-lo com os dados contidos no arquivo CSV e, por fim, verificar se está tudo funcionando bem.
$ CREATE DATABASE severalnines;
$ \c severalnines;
$ CREATE TABLE persons (id SERIAL NOT NULL, first_name VARCHAR(50), last_name VARCHAR(50), birthday DATE, CONSTRAINT persons_pkey PRIMARY KEY (id));
$ COPY persons (id, first_name, last_name, birthday) FROM '/persons.csv' DELIMITER ',' CSV HEADER;
Conectando-se ao novo banco de dados e importando o arquivo CSV
Esse processo leva alguns minutos para ser concluído.

Ok, agora vamos inserir algumas consultas:
Consultas no banco de dados "severalnines"
Se você olhar para o ClusterControl agora, algum movimento nas estatísticas sobre o hardware aconteceu:
Exibindo estatísticas sobre a CPU dentro do ClusterControl
Uma seção inteira para monitorar as consultas é fornecida com uma interface de usuário fácil de usar:
Exibindo estatísticas sobre as consultas dentro do ClusterControl
As estatísticas sobre o banco de dados PostgreSQL atendem aos melhores DBAs para desempenhar todo o seu potencial em suas principais funções, e o ClusterControl é um sistema completo para analisar todas as atividades que acontecem em tempo real, fornecendo informações baseadas em todos os dados coletados dos processos do banco de dados.

Com o ClusterControl o DBA também pode facilmente estender suas habilidades usando um conjunto completo de ferramentas para criar Backups localmente ou na Nuvem, Replicações, Load Balancers, integrações com serviços, LDAP, ChatOps, Prometheus e muito mais.

Conclusão


Através deste artigo, configuramos o PostgreSQL dentro do Docker e integramos com o ClusterControl usando a rede de ponte definida pelo usuário e SSH, simulando um cenário preenchendo o banco de dados com um arquivo CSV e, em seguida, fazendo uma verificação geral rápida na interface do usuário do ClusterControl .