PMM: O Raio-X do seu MySQL

Você já olhou pra alguém e pensou: O que passa na cabeça dela?


Pois é, esse mesmo pensamento é o que separa um “apagador de incêndio” de um profissional focado em alta performance e disponibilidade. Mas ao invés de olharmos o que se passa na cabeça de alguém, precisamos entender o que está acontecendo em nosso ambiente. Entender como nosso ambiente está se comportando por baixo do capô, nos permite enxergar onde está bom, onde está ruim e o que precisa ser feito de forma analítica e certeira.

É com isso em mente que vou demonstrar como configurar uma solução de monitoramento completa e fácil de implementar que transformou a performance do meu MySQL e me deu o controle total do ambiente.

Abordaremos os seguintes tópicos:

  • PMM: O que é o Percona Monitoring and Management
  • O Setup: Como subir o PMM Server via Docker (rápido e indolor).
  • O Agente: Instalando o PMM Client no nó do MySQL.
  • O Raio-X: Analisando os Dashboards.

 

O que é o Percona Monitoring and Management

O Percona Monitoring and Management (PMM) é uma ferramenta open source completa para observabilidade e gerenciamento do MySQL e sua infraestrutura. Com ele, conseguimos monitorar o serviço de banco de dados e o hardware de forma integrada. O grande diferencial é o Query Analytics (QAN), que permite identificar gargalos e realizar o tuning de queries de forma prática e assertiva.

Como subir o PMM Server via Docker (rápido e indolor)

Para subirmos o PMM, primeiro é necessário ter o Docker instalado, e essa instalação não será abordada aqui, mas deixarei um link para documentação: Install | Docker Docs.

Com o Docker instalado, vamos criar um YAML para o Docker Compose para facilitar a organização e configuração. Nesse exemplo, criaremos um arquivo no caminho ~/pmm-server/docker-compose.yml com o seguinte código:

Pontos de Atenção:

  • Retenção de Dados: O parâmetro PMM_DATA_RETENTION define por quanto tempo as métricas serão guardadas. Lembre-se: quanto maior o tempo, mais rápido o volume de dados cresce. Fique atento ao espaço em disco!
  • Segurança (SSL): Apontamos os arquivos .crt e .key dentro da pasta ~/pmm-server/ssl. Embora opcional, utilizar SSL é simples e aumenta muito a segurança. Caso não queira usar agora, basta comentar ou remover as linhas de volumes referentes ao SSL.
  • Versão: No exemplo, utilizamos o pmm-server:3. Esta versão é a recomendada para tirar o máximo proveito do MySQL 8.0 ou superior. Caso o seu workload ainda seja focado em MySQL 5.7, a utilização do pmm-server:2 ainda é adotada pela estabilidade com versões legadas mas é importante ressaltar que a versão 2 do PMM não recebe mais suporte oficial da Percona.

 

Atenção: Embora a utilização do pmm-server:2 ainda seja comum em ambientes legados (MySQL 5.7), é importante ressaltar que a versão 2 do PMM não recebe mais suporte oficial da Percona. Para novos setups, foque sempre na versão 3 para garantir patches de segurança e novas funcionalidades.

Caso opte por utilizar o pmm-server:2, as portas precisam ser alteradas de 80:8080 e 443:8443 para 80:80 e 443:443.


A estrutura fica assim:

~/
└── pmm-server/
        ├── docker-compose.yml
        └── ssl/
                ├── certificate.crt
                └── certificate.key

Com essa estrutura, já estamos prontos para subir o container já comunicando via HTTPS. Agora, basta rodarmos o comando:

Em alguns segundos, o PMM estará rodando. Acesse pelo navegador usando o IP ou DNS do servidor. O usuário e senha padrão é admin/admin. No primeiro login, o sistema solicitará a troca da senha.

Para iniciar a sessão, o usuário e senha padrão é “admin”. Ao logar, ele irá solicitar uma nova senha. Após alteração, seremos redirecionados a home.

Viu, bem fácil né ? Em minutos, temos o servidor pronto para receber conexões das nossas instâncias MySQL.

Instalando o PMM Client no nó do MySQL

Agora precisamos fazer o servidor do MySQL se comunicar com o PMM. Para isso, instalaremos o PMM Client (versão 2 ou 3), dependendo da versão do PMM Server que você escolheu no passo anterior. Como no nosso exemplo utilizamos a v3, seguiremos com a instalação do PMM Client 3. Deixarei os links de documentação de ambas versões abaixo:

 

Configuração de repositórios e instalação:

Debian-based:

Red Hat-based:

Após instalar, verificamos se está funcionando:

A saída deve ser algo como:

Tudo pronto para conectarmos no PMM Server. Podemos iniciar a conexão com o seguinte comando abaixo:

  • –server-url: Composto por https://usuario:senha@host:porta. Você pode usar o usuário admin (com a senha que alteramos no primeiro login) ou um usuário dedicado.
  • –server-insecure-tls: Essencial se você estiver usando certificados autoassinados ou sem SSL válido, para que o agente ignore o aviso de segurança e estabeleça a conexão.
  • –force: Garante que qualquer configuração anterior seja sobrescrita, evitando conflitos durante o setup.

A saída do comando deve ser algo como:

Isso significa que nosso servidor já está sendo monitorado pelo PMM Server e podemos visualizar ele em Inventory > Nodes:

Como vemos na imagem, o Status e Monitoring estão ‘Up’ e “OK”. Isso significa que deu tudo certo e nosssa infraestrutura já está sendo monitorada. Para vermos os dados, basta irmos em Operating system e selecionarmos algum Dashboard. Dentro do Dashboard, basta selecionarmos o Node Name que adicionamos e os dados serão filtrados para o Node Name selecionado.

Agora, para conectarmos o PMM Client ao serviço do MySQL, precisamos de um usuário dedicado a essa função. Por isso iremos rodar os seguintes comandos:

Importante: Criamos o usuário para acessar via localhost porque instalamos o PMM Client diretamente no servidor do MySQL.

Com o usuário criado, podemos fazer a conexão do PMM Client e o MySQL:

A saída do comando será algo como:

E com isso, temos nosso servidor e serviço de banco de dados sendo monitorado! Assim como no inventário do Node, o serviço do MySQL também deve apresentar o Status e Monitoring como ‘Up’ e ‘OK’. Os dados podem demorar alguns minutos para aparecerem nos gráficos.

Fique atento: No caso do MySQL, o monitoramento pode apresentar ‘Failed’ caso o Agente não consiga acessar o arquivo de log ou se o banco estiver inacessível. Recomendo fortemente ativar o Slow Query Log para habilitar o Query Analytics (QAN). É através dele que você conseguirá identificar as queries mais custosas e realizar o tuning de performance de forma precisa.



O Raio-X está pronto!

A partir de agora, você parou de tentar adivinhar o que está acontecendo e passou a enxergar a realidade. Ter o PMM configurado é como acender a luz em um quarto escuro: aqueles picos de CPU inexplicáveis ou lentidões misteriosas agora tem nome, sobrenome e uma query específica associada a eles.

Este é apenas o primeiro passo para um ambiente resiliente e de alta performance. Com esses dados em mãos, o seu próximo desafio é o Tuning: ajustar cada parafuso do seu MySQL baseando-se em fatos, não em suposições.

COMPARTILHE:
Picture of Andrei Bonon

Andrei Bonon

Atuo na área de Tecnologia há 7 anos, tendo construído uma base sólida em infraestrutura, redes e desenvolvimento antes de me especializar como DBA. Atualmente, possuo 2 anos de experiência focada em MySQL, onde aplico minha visão multidisciplinar para garantir performance e alta disponibilidade. Possuo 7 Certificações na OCI sendo 1 delas do MySQL HeatWave.
Picture of Andrei Bonon

Andrei Bonon

Atuo na área de Tecnologia há 7 anos, tendo construído uma base sólida em infraestrutura, redes e desenvolvimento antes de me especializar como DBA. Atualmente, possuo 2 anos de experiência focada em MySQL, onde aplico minha visão multidisciplinar para garantir performance e alta disponibilidade. Possuo 7 Certificações na OCI sendo 1 delas do MySQL HeatWave.

PARTICIPE

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

POSTADO POR
Picture of Andrei Bonon

Andrei Bonon

Atuo na área de Tecnologia há 7 anos, tendo construído uma base sólida em infraestrutura, redes e desenvolvimento antes de me especializar como DBA. Atualmente, possuo 2 anos de experiência focada em MySQL, onde aplico minha visão multidisciplinar para garantir performance e alta disponibilidade. Possuo 7 Certificações na OCI sendo 1 delas do MySQL HeatWave.
PARCEIROS