Kaldenhoven Wiki

Installatie van Percona Monitoring

Percona biedt een suite van mooie tools om monitoring en beheer van diverse DB engines te doen.
Zelfs zonder dat je de specifieke DB engine versie heb van Percona kan je deze toch met deze tools monitoren.
In dit document zal ik dan ook beschrijven hoe ik deze suite heb gebruikt in combinatie met mijn bestaande MySQL server. Je hebt dan niet alle monitoring beschikbaar, maar dit is met name de user monitoring.
Die welke user voert welke queries uit en is het actiefste, maar dit moet je ook niet continu uitvoeren geeft Percona zelf aan vanwege de resources die deze monitoring zelf kost.

Deze handleiding is gemaakt op basis van de Percona v2 documentatie en aangevuld/aangepast n.a.v. mijn ervaringen over de afgelopen week dat ik er mee heb gewerkt.

PMM server

Installatie van de Monitoring server heb ik in een docker container gedaan. Percona beidt hier een prima container voor. Hierin zitten niet alleen grafana voor de weergave, maar ook prometheus/postgresql en diverse andere tools voor de rapportages.

Bron

Docker installatie

Mocht je nog geen docker op je server hebben.

apt install docker.io -y

Maak daarna het persistent volume aan voor gegevensopslag.

docker create --volume pmm-data:/srv \
--name pmm-data percona/pmm-server:2 /bin/true

Om certificaat waarschuwingen bij het instellen van de PMM agent te voorkomen kan je je eigen certificaat gebruiken op de PMM server. Voor daarvoor de volgende stap uit voordat je de PMM-Server container deployed.

Het volgende commando is gebaseerd op de aanname dat je letsencrypt gebruikt als certificaat provider. Anders moet je het eerste gedeeelte van elk copy commando vervangen door de locatie van jouw certificaat en private key.

Let op. Het certificaatbestand moet de volledige chain bevatten dus ook het certificaat van de CA, omdat in de container geen CA chains zitten.

cp /etc/letsencrypt/live/jouwdomein.nl/fullchain.pem \
/var/lib/docker/volumes/pmm-data/_data/nginx/certificate.crt && \
cp /etc/letsencrypt/live/jouwdomein.nl/privkey.pem \
/var/lib/docker/volumes/pmm-data/_data/nginx/certificate.key

Maak nu als volgende de docker container aan. Deze start ook direct.

docker run --detach --restart always \
-p 80:80 -p 443:443 \
--volumes-from pmm-data --name pmm-server \
percona/pmm-server:2

Poorten 80 en 443 zijn gemapt naar buiten toe. Dit zijn al geproxiede poorten vanuit de container. Wat ik bedoel is dat nginx in de container draait en daar al voor o.a. grafana zit. Het is dus niet persé noodzakelijk om hier nog een andere reverse proxy voor te plaatsen.

Eerste keer inloggen

Bij de eerste keer inloggen krijg je de vraag om het wachtwoord te wijzigen. Standaard initiële login is admin/admin.

Je kan ook de API die op de container zit bekijken qua documentatie. Dat doe je via http://pmm-serverurl/swagger

Client inrichten

Om data in de PMM-Server te krijgen moet er een client worden geïnstalleerd en geconfigureerd. Dat is na installatie een standaard client die de server monitort.
Daarna kan je specifieke monitors toe gaan voegen. (Voor bijvoorbeeld MySQL/MongoDB/PostgreSQL)

Bron

Repository toevoegen

Volgens de website van Percona kan je de client middels een .deb-package installeren. Dat gaat ook prima, echter updaten en dergelijke gaat niet automatisch. De repository inrichten staat er echter niet bij, maar als je die voor de Percona Server for MySQL installeert heb je de packages ook.
Het volgende blok voert deze stappen allen in 1 keer uit.

apt-get install gnupg2 && \
wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb && \
dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb && \
rm percona-release_latest.$(lsb_release -sc)_all.deb && \
apt update

PMM v2 Client installatie

Installatie van de versie 2 van de pmm-client gaat middels.

apt install pmm2-client

PMM v2 Client configuratie

De client moet geregistreerd worden bij de PMM-Server zodat deze de gepubliceerde gegevens kan gaan uitlezen.
Bron

pmm-admin config --server-url=https://admin:admin@pmm-server:443

Mocht je de stap van het certificaat importeren niet hebben gedaan dan moet je nog de optie --server-insecure-tls toevoegen. Het commando wordt dan als volgt.

pmm-admin config --server-insecure-tls --server-url=https://admin:admin@pmm-server:443

MySQL monitoring toevoegen

Toevoegen van MySQL monitoring als volgt.

Bron

Aanmaken MySQL User.

Op MySQL moet er een gebruiker zijn waarmee de monitoring agent gegevens kan uitlezen.
Maak deze aan als volgt.

CREATE USER 'pmmuser'@'localhost' IDENTIFIED by 'pmmpasswd';
GRANT SELECT, PROCESS ON *.* TO 'pmmuser'@'localhost';

Daarna de monitor registreren bij PMM Server

pmm-admin add mysql --disable-tablestats-limit=1500 --username=pmmuser --password=pmmpassswd --query-source=perfschema vps01-mysql

pmmuser en pmmpaswd zijn username en password die op MySQL bekend zijn.

Om je logs schoon (syslog) te houden als je geen master-slave of tokudb gebruikt het volgende toevoegen aan bovenstaande commando.
--disable-collectors=engine_tokudb_status,slave_status
Het volledige commando wordt dan

pmm-admin add mysql --disable-tablestats-limit=1500 --username=pmmuser --password=pmmpassswd --query-source=perfschema --disable-collectors=engine_tokudb_status,slave_status vps01-mysql