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.
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)
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.
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