In den komplexen IT-Landschaften von heute ist die Überwachung nicht nur ein Nice-to-have, sondern eine Notwendigkeit. Es ist wichtig zu wissen, was in Ihren Systemen vor sich geht, und in der Lage zu sein, schnell auf alle auftretenden Probleme zu reagieren. In diesem Blogbeitrag werden wir uns ansehen, wie man Metriken von etcd, PostgreSQL, PgBouncer und Patroni auslesen kann. Dies ist die Grundlage für einen weiteren Blogeintrag, um Metriken mit Prometheus zu sammeln und den Zustand mit Grafana zu visualisieren.

Voraussetzungen

Bevor wir fortfahren, ist es wichtig zu beachten, dass dieser Blog-Beitrag davon ausgeht, dass Sie bereits den vorherigen Blog-Beitrag mit dem Titel Einrichten eines Connection Poolers für PostgreSQL auf EC2-Instanzen durchgelesen haben. In diesem Blog-Beitrag werden wir uns auf den etcd-Cluster und den Postgres-Cluster mit dem dort erstellten PgBouncer verlassen, um Metriken zu exportieren.

Exportieren von Metriken aus etcd

etcd hat bereits einen eingebauten Metrik-Exporter. Dieser stellt die Metriken standardmäßig auf Port `2379` bereit. Um zu überprüfen, ob die Metriken exportiert werden, können Sie sich per SSH in einen der etcd-Knoten einwählen und den folgenden Befehl ausführen:
Copy to Clipboard
Sie sollten eine ähnliche Antwort wie die folgende erhalten:
Copy to Clipboard

Wenn Sie die obige Antwort sehen, dann ist Ihr etcd-Cluster bereit, von Prometheus abgefragt zu werden. Lassen Sie uns also zum nächsten Schritt übergehen.

Exportieren von Metriken aus PostgreSQL

Da PostgreSQL keinen eingebauten Metrik-Exporter hat, müssen wir einen Dienst namens postgres_exporter verwenden. Dies ist ein Open Source Projekt, das einen Metrik-Exporter für PostgreSQL bereitstellt. Er wird in einem Container-Image geliefert und ist daher leicht zu installieren. Wir werden den Container in der gleichen VM wie den PostgreSQL-Cluster ausführen und die Metriken auf Port 9187 ausgeben. Hier ist die systemd butane-Konfiguration für den postgres_exporter:
Copy to Clipboard
Die Datei web-config.yml im Abschnitt storage.files der gleichen Butane-Konfiguration sieht hingegen wie folgt aus:
Copy to Clipboard

Die obige Konfiguration führt den Container postgres_exporter aus und stellt die Metriken auf Port 9187 bereit. Es werden auch die selbstsignierten Zertifikate verwendet, die wir mit einem Skript generiert haben, das in den vorherigen Blogbeiträgen erwähnt wurde. Daher werden die Metriken mit TLS gesichert.

Darüber hinaus geben wir die Umgebungsvariablen DATA_SOURCE_URIDATA_SOURCE_USER und DATA_SOURCE_PASS an. Dies sind die Anmeldeinformationen, die der postgres_exporter für die Verbindung mit dem PostgreSQL-Cluster verwenden wird. Die DATA_SOURCE_URI ist die URI des PostgreSQL-Clusters. In unserem Fall verwenden wir die URI localhost:5432, da wir den postgres_exporter-Container in der gleichen VM wie den PostgreSQL-Cluster ausführen werden. DATA_SOURCE_USER und DATA_SOURCE_PASS sind die Anmeldedaten des PostgreSQL-Clusters. In unserem Fall werden wir die Anmeldedaten postgres mit zalando verwenden.

Nun, da wir die systemd-Butane-Konfiguration für den postgres_exporter haben, können wir ihn durch Ausführen des Ansible-Playbook-Skripts bereitstellen. Sobald das Playbook-Skript ausgeführt wurde, läuft der postgres_exporter-Container in derselben VM wie der PostgreSQL-Cluster und stellt die Metriken auf Port 9187 bereit.

Überprüfen des postgres_exporter-Dienstes

Um zu überprüfen, ob die Metriken exportiert werden, können Sie sich per SSH in einen der PostgreSQL-Knoten einwählen und den folgenden Befehl ausführen:

Copy to Clipboard

Sie sollten eine ähnliche Antwort wie die folgende erhalten:

Copy to Clipboard

Wenn Sie die obige Antwort sehen, dann ist Ihr PostgreSQL-Cluster bereit, von Prometheus abgefragt zu werden. Lassen Sie uns also zum nächsten Schritt übergehen.

Exportieren von Metriken aus PgBouncer

Da PgBouncer keinen eingebauten Metrik-Exporter hat, müssen wir einen Service namens pgbouncer_exporter verwenden. Ähnlich wie der postgres_exporter wird auch er in einem Container-Image geliefert, was die Bereitstellung sehr einfach macht. Wir werden den Container in der gleichen VM wie den PgBouncer ausführen und die Metriken auf Port 9127 bereitstellen. Hier ist die systemd butane Konfiguration für den pgbouncer_exporter:

Copy to Clipboard

Die Datei web-config.yml ist die gleiche wie die für den postgres_exporter verwendete. Mit der obigen Konfiguration wird der pgbouncer_exporter-Container ausgeführt und die Metriken werden auf Port 9127 bereitgestellt. Die Metriken werden ebenso wie der postgres_exporter mit TLS gesichert.

Wir geben auch die Umgebungsvariable pgBouncer.connectionString an. Dies ist die Verbindungszeichenfolge, die der pgbouncer_exporter für die Verbindung mit dem PgBouncer-Cluster verwenden wird. In unserem Fall verwenden wir den Connection String postgresql://stats_collector:collector_stats@localhost:6432/pgbouncer.

Nachdem wir die systemd-Unit-Datei zur Butane-Konfigurationsdatei hinzugefügt haben, die wir im vorigen Blog erstellt haben, können wir sie durch Ausführen des Ansible-Playbook-Skripts bereitstellen. Der pgbouncer_exporter-Container wird in der gleichen VM wie der PgBouncer ausgeführt und stellt die Metriken auf Port 9127 bereit.

Überprüfen des pgbouncer_exporter-Dienstes

Um zu überprüfen, ob die Metriken exportiert werden, können Sie sich per SSH in einen der PgBouncer-Nodes einwählen und den folgenden Befehl ausführen:

Copy to Clipboard

Sie sollten eine ähnliche Antwort wie die folgende erhalten:

Copy to Clipboard

Wenn Sie die obige Antwort sehen, dann ist Ihr PgBouncer-Cluster bereit, von Prometheus abgefragt zu werden. Kommen wir nun zum letzten Schritt, den Metriken aus Patroni.

Exportieren von Metriken aus Patroni

Patroni verfügt über einen eingebauten Metrik-Exporter. Daher müssen wir keine Tools von Drittanbietern verwenden, um Metriken aus Patroni zu exportieren. Die Metriken werden standardmäßig auf Port 8008 veröffentlicht. Um zu überprüfen, ob die Metriken exportiert werden, können Sie sich per SSH in einen der Patroni-Nodes einwählen und den folgenden Befehl ausführen:

Copy to Clipboard

Sie sollten eine ähnliche Antwort wie die folgende erhalten:

Copy to Clipboard

Wenn Sie die obige Antwort sehen, dann ist Ihr Patroni-Cluster bereit, von Prometheus abgefragt zu werden.

Zusammenfassung

In diesem Blogbeitrag haben wir uns angesehen, wie man Metriken von etcd, PostgreSQL, PgBouncer und Patroni exportiert. Nun, da die Endpunkte bereit sind, von Prometheus gescraped zu werden, können wir zum nächsten Blogbeitrag übergehen, in dem wir uns ansehen werden, wie wir Prometheus und Grafana einrichten, um die Metriken zu visualisieren. Also, bleiben Sie dran!

Farouq Abdurrahman

Farouq Abdurrahman ist Praktikant bei der Proventa AG und studiert Informatik. Sein Schwerpunkt liegt auf Cloud Computing. Er hat großes Interesse an der Digitalen Transformation und Cloud Computing. Aktuell beschäftigt er sich mit PostgreSQL Datenbanken in der Cloud.