---
categories: databases
title: Howto Percona Monitoring and Management (PMM)
...

- Documentation : [https://docs.percona.com/percona-monitoring-and-management/index.html](https://docs.percona.com/percona-monitoring-and-management/index.html)
- Docker Hub : [https://hub.docker.com/r/percona/pmm-server](https://hub.docker.com/r/percona/pmm-server)
- Code : [https://github.com/percona/pmm](https://github.com/percona/pmm)
- Licence : [GNU Affero General Public License v3.0](https://www.gnu.org/licenses/#AGPL)

*PMM* est une application client/serveur qui permet de monitoré et de managé des instances MariaDB, Mysql, PostgreSQL, MongoDB et ProxySQL.
PMM vous aide à améliorer les performances des bases de données, à simplifier leur gestion et à renforcer leur sécurité.

# Installation avec l'image Docker

PMM Serveur peut s'installer de différente manière, on va détaillé l'installation dans un conteneur Docker, avec l'image fourni par Percona.

## Prérequis

* Il faut sur la machine hôte, Docker en version 1.12.6 ou plus récent.

On utilise l'image Docker de Percona sur [hub.docker.com](https://hub.docker.com/r/percona/pmm-server/tags)

* Si on démarre le conteneur seul, on copie l'image comme ceci :

~~~
$ docker pull percona/pmm-server:2.31.0
~~~

* On utilise un volume ext4 monté dans */srv*, par exemple, et on démarré l'image comme ceci :

~~~
$ docker run --detach --restart always \
--publish 8333:443 \
-v pmm-data:/srv \
--name pmm-server \
percona/pmm-server:2.31.0
~~~  

* Si on utilise Docker Swarm pour déployer la stack, on peut utilisé une configuration similaire dans son fichier .yml :

~~~{.yaml}
pmms:
    image: percona/pmm-server:2.31.0
    deploy:
      replicas: 1
      restart_policy:
          condition: on-failure
    ports:
      - 8333:443
    volumes:
      - /mnt/pmm_server/srv/:/srv/
~~~

* Une fois le conteneur démarré, la première chose à faire est de changer le mot de passe de l'utilisateur `admin` :

~~~
$ docker exec -t pmm-server change-admin-password <nouveau_mot_de_passe>
~~~

On peux ensuite se connecter sur https://{IP_SERVEUR}:8333/ pour se connecte à l'interface de PMM.

# Installation des clients pour Percona Monitoring and Management (PMM)

PMM a besoin de `client` sur les serveur SQL, qui collecte les metriques de l'instance SQL, et qui le renvoi au serveur PMM.

* En premier lieu, il faut créer l'utilisateur SQL dédié à PMM sur l'instance que l'on veux monitoré :

~~~{.sql}
CREATE USER 'pmm'@'%' IDENTIFIED BY '{Password}' WITH MAX_USER_CONNECTIONS 10;
GRANT SELECT, PROCESS, REPLICATION CLIENT, RELOAD ON *.* TO 'pmm'@'%';
~~~

Si l'on utilise MySQL 8.0 il faut rajouter le droit `BACKUP_ADMIN` :

~~~{.sql}
GRANT SELECT, PROCESS, REPLICATION CLIENT, RELOAD, BACKUP_ADMIN ON *.* TO 'pmm'@'%';
~~~

* Puis sur le serveur SQL, on lance la commande qui permet d'ajouter l'instance SQL au serveur PMM :

~~~
$ pmm-admin config --server-url "https://admin:{Password}@IP_SERVEUR:8333" --server-insecure-tls
$ pmm-admin add mysql --host=IP_SERVEUR -port=3306 --username=pmm --password={Password}
~~~

Si on a plusieurs serveurs SQL ou plusieurs instances à monitoré, il faut répéter l'opération sur chaque serveur et / ou ports.

## Activation de différentes métriques sur les serveurs MySQL / MariaDB.

En fonction de ce que vous souhaitez comme métriques sur chaque sources, il est nécessaires d'activer certaines fonctions.

En général les choix se portent sur les `Slow query log` et `Performance Schema`.

Bien que vous puissiez utiliser les deux en même temps, nous vous recommandons d'en utiliser qu'un seul à la fois.
Il y a certains chevauchement dans les données rapportées, et chacun entraîne une légère perte de performance.

Le choix dépend de la variante de votre instance MySQL / MariaDB, et de la quantité de détails que vous souhaitez voir.

* Pour MySQL 5.1 et antérieur il est préférable d'activé que les `Slow query log`

* Pour MySQL 5.6 et suprérieur ou MariaDB 10.0 et supérieur, il est préférable d'activé `Performance Schema`

### Activation de `Slow query log` :

On active le `Slow query log` comme ceci dans la configuration :

~~~
slow_query_log=ON
long_query_time=2
log_slow_admin_statements=ON
log_slow_slave_statements=ON
~~~

Où comme ceci dans le Shell :

~~~{.sql}
SET GLOBAL slow_query_log = 1;
SET GLOBAL long_query_time = 0;
SET GLOBAL log_slow_admin_statements = 1;
SET GLOBAL log_slow_slave_statements = 1;
~~~

### Activation de `Performance Schema` :

On active le `Performance Schema` comme ceci dans la configuration :

~~~
performance_schema=ON
performance-schema-instrument='statement/%=ON'
performance-schema-consumer-statements-digest=ON
innodb_monitor_enable=all
~~~

Où comme ceci dans le Shell :

~~~{.sql}
UPDATE performance_schema.setup_consumers
SET ENABLED = 'YES' WHERE NAME LIKE '%statements%';
SET GLOBAL innodb_monitor_enable = all;
~~~

### Activation de Query response time

On peux activé un plugin que mesure le temps de distribution d'une requête, montrant la proportion du temps consacré a diverses activités.

Activation du plugin dans MariaDB 10.3+, directement sans redémarrage :

~~~{.sql}
INSTALL PLUGIN QUERY_RESPONSE_TIME_AUDIT SONAME 'query_response_time.so';
INSTALL PLUGIN QUERY_RESPONSE_TIME SONAME 'query_response_time.so';
SET GLOBAL query_response_time_stats = ON;
~~~

Ou dans le fichier de configuration, un rédémarrage est nécessaire :

~~~
[mariadb]
...
plugin_load_add = query_response_time
~~~

### Activation de User statistics

On peux activé également les statistiques sur l'activé de l'utilisateur, les détails d'accès aux tables individuelles et aux indexs.

Dans le fichier de configuration :

~~~
userstat=ON
~~~

Dans le shell :

~~~{.sql}
SET GLOBAL userstat = ON;
~~~
