Servermonitoring 2

Hosts und Datenbanken Monitoring

Martin Schlüter

6 Minuten

Nachdem wir uns im letzten Blogbeitrag mit der Auswahl der Monitoring Lösung und der Installation des Percona Monitoring und Management 2 Servers beschäftigt hatten, gehen wir heute dazu über weitere Hosts und auch Datenbanken ins Monitoring zu bekommen.

Hosts ins Monitoring einbinden

Percona bietet eine detailierte Anleitung zur Einrichtung der Monitoring Clients und Datenbanken , aber dennoch gehe ich schnell die Schritte durch wie ich es installiert habe. Es ist empfehlenswert die Befehle zur Einbindung der Hosts und weiteren Exportern zusätzlich in einer Textdatei zu speichern. Mir hat es bereits zwei mal bei einem Update den PMM2 Server zerschossen, so dass ich ihn neu installieren musste, incl. neuem Datencontainer. Da war die Textdatei mit allen Befehlen um die Clients/Exporter neu zu konfigurieren/einzubinden natürlich hilfreich, einfach copy & paste ausführen.

Es gibt verschiedene Methoden wie man den Client auf den Hosts installieren kann, ich habe mich dafür entschieden direkt die Percona Paketquellen zu nutzen:

wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb

dpkg -i percona-release_latest.generic_all.deb

apt-get update

apt-get install pmm2-client

Und schon ist der PMM Client installiert, nun muss er nur noch konfiguriert werden, hierzu benötigen wir erstmal den Usernamen und das Passwort von dem PMM User den wir bei der PMM2 Serverinstallation zum hinzufügen der Clients angelegt hatten und die Server Url des PMM Servers. Da der Docker Container mit dem PMM Server direkt über den Port 8443 auch von aussen erreichbar ist, nutzen wir direkt diesen Port für die Clients, müssen dem Client dazu aber explizit erlauben das unsichere SSL Zertifikat zu ignorieren. So gehen die ganzen Verbindungen von den Clients zum Server nicht über unseren vorgeschalteten nginx reverse Proxy.

pmm-admin config --server-insecure-tls --server-url=https://[Username]:[Passwort]@[Server Url]:8443

Und schon taucht der Client im Monitoring auf und es werden bereits die Daten des Hosts gesammelt. Es wurde automatisch der Hostname des Client übernommen, man kann aber auch einen eigenen Hostnamen angeben mit dem der Client gelistet werden soll, hierzu brauchen wir aber auch noch extra die IP des Clients:

pmm-admin config --server-insecure-tls --server-url=https://[Username]:[Passwort]@[Server Url]:8443 [Client IP] generic [Hostname]

Das wars dann auch schon mit dem Hinzufügen weiterer Hosts. Durch die Nutzung der Percona Paketquellen wird zudem sichergestellt dass bei den regelmäßigen Updates der Hosts auch direkt auf den aktuellsten pmm-client2 upgedatet wird. Hier ist aber noch zu beachten dass immer zuerst der PMM Server upgedatet werden muss und dann erst der Client, ansonsten kann es zu Datenverlust kommen, z.B in den Konfigurationsdateien für den Client und dieser dann bei einem Host Neustart nicht wieder gestartet wird.

Der Host ist eingebunden und es werden Daten gesammelt
Der Host ist eingebunden und es werden Daten gesammelt

Dieser Screenshoot zeigt jetzt nur eine kleine Auswahl der gesammelten Daten und ist auch schon länger im Monitoring, es werden nur Echtzeitdaten gesammelt und erst im PMM Server dann gespeichert, der Client sammelt also erst ab Einbindung ins Monitoring auch Daten.

Datenbank ins Monitoring einbinden

Percona Monitoring und Management unterstützt von sich aus eine Vielzahl an Datenbanksystem, Mysql/Mariadb, MongoDB und PostgreSQL sind nur eine Auswahl der Unterstützten DB Typen.

Erstmal muss die Datenbank auf das sammeln der Zugriffsdaten etc. konfiguriert werden, es muss ein DB Account angelegt werden und dann das ganze über den entsprechenden Exporter ins Monitoring eingebunden werden. Ich nutze MariaDB in der Version 10.3 und erkläre den Ablauf.

Datenbank vorbereiten

Bei den Mysql und verwandten DB Systemem wie MariaDB gibt es 2 Arten die gewünschten Daten abzugreifen, einmal aus extra angelegten Logdateien oder über das Performance Schema des Datenbankservers direkt. Für MariaDB 10.3 wird das Performance Schema empfohlen, dieses wird in der Datenbank Konfiguration aktiviert.

In der Konfigurationsdatei /etc/mysql/mariadb.conf.d/50-server.cnf folgende Zeilen einfügen:

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

und die Datenbank neu starten. dann in die DB einloggen und checken ob es funktioniert hat, auf Ubuntu kann root ohne passwort einloggen, also einfach “mysql” auf der Kommandozeile tippen:

SHOW VARIABLES LIKE 'performance_schema';

use performance_schema;

select * from setup_consumers;
Prüfen ob Performance Schema aktiviert wurde
Prüfen ob Performance Schema aktiviert wurde

Hier muss jetzt noch Weiteres aktiviert werden:

UPDATE performance_schema.setup_instruments SET ENABLED = 'YES', TIMED = 'YES' WHERE NAME LIKE 'statement/%';
UPDATE performance_schema.setup_consumers SET ENABLED = 'YES' WHERE NAME LIKE '%statements%';

Desweiteren muss noch ein MariaDB Plugin installiert und aktiviert werden:

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;

Das war dann auch schon die Aktivierung der Datensammlung für MariaDB 10.3, es muss aber noch ein User zum Abholen der gesammelten Daten erstellt werden:

CREATE USER 'pmm'@'localhost' IDENTIFIED BY 'pass' WITH MAX_USER_CONNECTIONS 10;

GRANT SELECT, PROCESS, REPLICATION CLIENT, RELOAD ON *.* TO 'pmm'@'localhost';

flush privileges;

Hier haben wir jetzt den Datenbank User pmm mit dem Passwort pass erstellt, ihm die benötigten Zugriffsrechte auf allen Datenbanken/Tabellen zugewiesen, und zum Abschluß den Useraccount und die Privilegien aktiviert. Jetzt können wir den mysql Client mit

quit;

verlassen und den pmm Mysql Exporter starten:

 pmm-admin add mysql --query-source=perfschema --username=pmm --password=pass

Natürlich sollte man einen anderen DB User mit einem sichereren Passwort erstellen und verwenden.

Datenbank Analyse

Anhand der gesammelten Daten ist es jetzt möglich tiefe Einblicke in die Arbeit der Datenbank zu erhalten um so Engpässe zu ermitteln. Auch die Query Analyse ist hilfreich, hier kann man genau sehen welche Abfragen wie oft durchgeführt werden und wie lange sie jeweils dauern. Wenn man jemals einen Datenbankspezialisten dazu holen will, wird er über dies Monitoring begeistert sein, bzw. es bildet erst die Grundlage für seine Arbeit.

Übersicht der Festplatten Schreib- und Lese Aktivitäten für InnoDB Tabellen
Übersicht der Festplatten Schreib- und Lese Aktivitäten für InnoDB Tabellen

Dieser Screenshoot zeigt jetzt nur die Schreib-/Leseaktionen auf der Festplatte für die InnoDB Tabellen, man erkennt schön dass nur schreibend auf die Festplatte zugegriffen wird, bedeutet alle reinen Leseabfrage ( SELECT Querys) komplett aus dem RAM Cache bedient werden können und nur die Änderungen auch auf die Festplatte geschrieben werden müssen.

Hier auch mal ein Video über Analyse der DB Abfragen: YouTube: Using PMM to identify and troubleshooting problematic MySQL Queries

In dem Video wird ein weiteres Grafana Dashboard benutzt, das hier beschrieben ist, inkl. Link zum Download: RED Method for MySQL Performance Analyses

Für andere Datenbanksysteme einfach in die Percona Dokumentation schauen und entsprechend einrichten.

Sicherheit

Die Firewalls aller Hosts habe ich so konfiguriert dass nur die nötigen Ports nach aussen offen sind, SSH, HTTP, HTTPS, aber der PMM2 Server auf jeden Port verbinden kann, so kann er dann zu den ganzen Exportern eine Verbindung aufbauen um die Daten abzuholen, die Exporter veröffentlichen die Daten ohne jegliche Passwortabfrage o.ä., bedeutet wer mit dem jeweiligen Port verbinden kann, kann sich die Daten abholen.

So gehts weiter

In den nächsten Tagen folgt dann die Einbindung des NGINX Webservers ins Monitoring, dies wird nicht mehr vom PMM2 out of the box unterstützt, bedeutet hier werden weitere Exporter installiert und konfiguriert, zudem entsprechende Grafana Dashboards hinzugefügt.

(1093 Wörter | 7927 Zeichen)

Martins Meinung

Hier blogge ich über verschiedene Themen.