Im vorherigen Blogpost Exportieren von Metriken aus etcd, PostgreSQL, PgBouncer und Patroni haben wir die Endpunkte für Prometheus vorbereitet, um Metriken aus etcd, PostgreSQL, PgBouncer und Patroni abzugreifen. In diesem Blogbeitrag werden wir diese Endpunkte verwenden, um den Cluster mit Prometheus und Grafana auf EC2-Instanzen zu überwachen.

Voraussetzungen

Stellen Sie sicher, dass Sie die Schritte aus dem vorherigen Blog befolgt haben, um die Endpunkte für Prometheus vorzubereiten, um Metriken von etcd, PostgreSQL, PgBouncer und Patroni zu scrapen, da wir diese Endpunkte verwenden werden.

Prometheus auf EC2-Instanzen

Wir werden die Ansible-Aufgabe aus dem vorherigen Blog verwenden, um eine neue EC2-Instanz bereitzustellen, aber wir benötigen eine neue Butane-Datei, die als Benutzerdaten an die Instanz angehängt wird. Eine der Serviceeinheiten in der Butane-Datei ist Prometheus, die in einem Podman-Container ausgeführt wird.
Copy to Clipboard
Die Prometheus-Konfigurationsdatei befindet sich unter /usr/local/share/prometheus.yml auf dem Host, die innerhalb des Containers nach /etc/prometheus/prometheus.yml gemountet wird. Die Prometheus-Konfigurationsdatei sieht wie folgt aus:
Copy to Clipboard
Die Prometheus-Konfigurationsdatei ist ziemlich einfach. Wir haben vier Jobs definiert, von denen jeder Metriken von den Endpunkten von etcd, PostgreSQL (über postgres_exporter), PgBouncer (über pgbouncer_exporter) und Patroni abruft. Die Endpunkte werden als Ziele definiert, und die Labels werden zur Gruppierung der Metriken verwendet. In der Prometheus-Konfigurationsdatei wird auch die TLS-Konfiguration für jeden Job definiert, da die Metriken von den Endpunkten über HTTPS abgerufen werden sollen.

 

Das war’s für Prometheus. Gehen wir nun zu Grafana über.

Grafana Systemd Service Unit vorbereiten

Fügen wir der Butane-Datei eine weitere systemd-Service-Unit hinzu, die zur Ausführung von Grafana innerhalb eines Podman-Containers verwendet werden soll. Die Service Unit lautet wie folgt:
Copy to Clipboard
Zuerst müssen wir ein Volume für Grafana erstellen, um seine Daten zu speichern. Das Volume wird mit dem Befehl podman volume create grafana-storage erstellt. Das Volume wird innerhalb des Containers nach /var/lib/grafana gemountet. Danach werden wir Grafana innerhalb eines Podman-Containers ausführen. Es gibt viele Umgebungsvariablen, die zur Konfiguration von Grafana verwendet werden können, aber der Einfachheit halber werden wir nur GF_SECURITY_ADMIN_PASSWORD verwenden, um das Passwort für den Benutzer admin zu setzen. Der Grafana-Container wird auch ein Volume zum Speichern seiner Daten verwenden, das innerhalb des Containers in /var/lib/grafana gemountet wird. Wenn Sie mehr über die Umgebungsvariablen wissen wollen, die zur Konfiguration von Grafana verwendet werden können, können Sie diese Seite https://grafana.com/docs/grafana/latest/installation/configure-docker/ besuchen.

 

An diesem Punkt haben wir die Prometheus- und Grafana-Serviceeinheiten vorbereitet. Jetzt können wir eine neue EC2-Instanz bereitstellen, auf der Prometheus und Grafana laufen!

Importieren von Datenquelle und Dashboard nach Grafana mit Ansible

Nachdem Prometheus und Grafana in Betrieb sind, müssen wir die Datenquelle und das Dashboard in Grafana importieren. Dies können wir mit Ansible tun. Zuerst müssen wir das Grafana-Plugin für Prometheus mit dem Befehl ansible-galaxy collection install community.grafana installieren. Danach können wir ein neues Ansible-Playbook erstellen, um die Datenquelle und das Dashboard nach Grafana zu importieren.

 

Die Aufgabe zum Importieren der Datenquelle lautet wie folgt:
Copy to Clipboard
Der Task zum Importieren der Dashboards sieht folgendermaßen aus:
Copy to Clipboard
Ersetzen Sie <cluster-name> durch den Namen der JSON-Datei des Grafana-Dashboards. Die JSON-Datei für jedes Dashboard kann von unserem GitHub-Repository heruntergeladen werden.
Hier sind einige Screenshots des Grafana Dashboards:

etcd dashboard – Etcd by Prometheus

PostgreSQL-Dashboard – PostgreSQL-Datenbank

PgBouncer dashboard – PostgreSQL PGbouncer

Patroni dashboard – PostgreSQL Patroni

Beachten Sie, dass die Dashboards aus der Originalquelle möglicherweise nicht sofort funktionieren, da wir einige Änderungen an den Panels, Variablen und Abfragen vorgenommen haben. Sie können die JSON-Dateien für die Dashboards in unserem GitHub-Repository einsehen.

Zusammenfassung

In diesem Blogbeitrag haben wir gelernt, wie man das Monitoring für den Cluster mit Prometheus und Grafana auf EC2-Instanzen einrichtet. Wir haben auch gelernt, wie man die Datenquelle und das Dashboard mit Ansible in Grafana importiert. Wie Sie vielleicht bemerkt haben, ist es gar nicht so schwer, ein Überwachungssystem für Ihren PostgreSQL-Cluster einzurichten. Wir hoffen, dass dieser Blogbeitrag Ihnen helfen kann, ein Überwachungssystem für Ihren PostgreSQL-Cluster vorzubereiten. Bleiben Sie dran für weitere Blogposts, um unsere Serie zu erweitern.

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.