# Configurando o Percona Monitoring and Management usando Docker

As instruções são um pouco confusas, então achei melhor criar um guia.

Requisitos:

1\) Uma máquina rodando Docker com alguma porta exposta (no exemplo usei a **4443**)  
2\) Uma ou mais máquina rodando MariaDB ou Mysql, com acesso root

##### 1) Instalar o Servidor PMM

Baixar a imagem do docker:  
`docker pull percona/pmm-server:2`

Criar o volume para armazenar os dados:  
`docker volume create pmm-data`

Iniciar o container:  
`docker run --detach --restart always --publish 4443:443 --volume pmm-data:/srv --name pmm-server percona/pmm-server:2`

##### 2) Configurar o servidor

Acesse a administração e crie uma senha. Os dados do primeiro acessão são admin / admin:  
https://ip-do-servidor:8443

##### 3) Instalar o cliente

Em cada máquina que será monitorada, instale o pmm-client. Por exemplo, no Debian fica assim:  
`wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb`  
`dpkg -i percona-release_latest.generic_all.deb`  
`sudo apt update`  
`sudo apt install -y pmm2-client`

Nesse link tem mais instruções para outras plataformas: [https://docs.percona.com/percona-monitoring-and-management/setting-up/client/index.html#install](https://docs.percona.com/percona-monitoring-and-management/setting-up/client/index.html#install)

##### 4) Configurar os clientes

Crie um usuário no banco com algumas permissões básicas. O exemplo abaixo é para o MariaDB:  
`CREATE USER 'pmm'@'127.0.0.1' IDENTIFIED BY 'pass';`  
`UPDATE mysql.user set MAX_USER_CONNECTIONS = 10 WHERE user = 'pmm';`  
`GRANT SELECT, PROCESS, REPLICATION CLIENT, RELOAD ON *.* TO 'pmm'@'127.0.0.1';`  
`FLUSH PRIVILEGES;`

Aqui tem mais exemplos: [https://docs.percona.com/percona-monitoring-and-management/setting-up/client/mysql.html#create-a-database-account-for-pmm](https://docs.percona.com/percona-monitoring-and-management/setting-up/client/mysql.html#create-a-database-account-for-pmm "https://docs.percona.com/percona-monitoring-and-management/setting-up/client/mysql.html#create-a-database-account-for-pmm")  
  
Conecte o agente com o servidor:  
`pmm-admin config --server-insecure-tls --server-url=https://admin@localhost:senha@ip-do-servidor:4443 --force`

**admin@localhost** é o usuário que você criou no painel, **senha** é a senha desse usuário.

Conecte o agente com o banco de dados:

`pmm-admin add mysql --username=pmm --password=senha --server-insecure-tls --server-url=https://admin:senha@ip-do-servidor:4443 --query-source=perfschema hostname localhost:3306`

**--username** e **--password** são as credenciais de acesso ao banco. As outras credenciais são as mesmas informadas acima (pois é). **perschema** indica que o cliente vai usar a tabela **performance\_schema** para as estatísticas (também pode ser pelo arquivo de slow query, mas não achei exemplo de como funciona). **hostname** é o nome que vai ser exibido no servidor, e é bom que seja diferente para cada instância monitorada.

Fontes:

[https://github.com/percona/pmm](https://github.com/percona/pmm)

[https://docs.percona.com/percona-monitoring-and-management/index.html](https://docs.percona.com/percona-monitoring-and-management/index.html)