Postgres-Daten mit Grafana auf Elastic Container Service (ECS) visualisieren


Einführung

Observability ist ein entscheidender Erfolgsfaktor für jedes Unternehmen. Um Observability zu erreichen, können wir die Leistungsfähigkeit von Grafana nutzen, einer Open-Source-Plattform, die es uns ermöglicht, unsere Metriken abzufragen, zu visualisieren, Alarme zu setzen und zu verstehen.

In diesem Blog zeigen wir, wie Grafana genutzt werden kann, um Daten in unserer Postgres-Datenbank zu visualisieren. Darüber hinaus stellen wir Grafana auf dem Amazon Elastic Container Service (ECS) bereit, einem vollständig verwalteten Container-Orchestrierungsdienst. Am Ende dieses Blogs werden Sie ein gutes Verständnis von Grafana und ECS haben.

Der Quellcode für diesen Beitrag ist auf GitHub verfügbar.

Hintergrund

Grafana – Die offene Observability-Plattform

Grafana ist eine leistungsstarke Open-Source-Plattform zum Abfragen, Visualisieren, Alarmieren und Verstehen von Metriken. Um mit Grafana zu beginnen, können wir ganz einfach einen Grafana-Container mit dem folgenden Befehl ausführen:

docker run -p 3000:3000 --name=grafana --rm grafana/grafana

Nach Ausführung des Befehls werden wir beim Aufruf von http://localhost:3000 im Browser zur Grafana-Anmeldeseite weitergeleitet. Der Standard-Benutzername und das Standard-Passwort sind admin und admin.

Amazon Elastic Container Service (ECS)

Amazon Elastic Container Service (ECS) ist ein vollständig verwalteter Container-Orchestrierungsdienst, der es uns ermöglicht, Docker-Container auf einem Cluster auszuführen, zu stoppen und zu verwalten. ECS eliminiert die Notwendigkeit, eine eigene Cluster-Management-Infrastruktur zu installieren, zu betreiben und zu skalieren. Mit einfachen API-Aufrufen können wir Docker-fähige Anwendungen starten und stoppen sowie viele Funktionen wie Sicherheitsgruppen, Elastic Load Balancing, EBS-Volumes und IAM-Rollen nutzen.

Architekturübersicht

Das offizielle Grafana-Postgres-Plugin ermöglicht es uns, in unserer Postgres-Datenbank gespeicherte Daten abzufragen und zu visualisieren. Mit diesem Plugin können Administratoren Alarme und Visualisierungs-Dashboards auf Basis der Postgres-Daten erstellen, während Benutzer diese Dashboards anzeigen und die Alarme überwachen können.

Architekturübersicht

Im Verzeichnis postgres-grafana-on-ecs/src/ haben wir eine Entwicklungsumgebung eingerichtet. Die Datei docker-compose.yml enthält zwei Dienste:

  1. postgres – Ein Postgres-Datenbankcontainer. Der Container verwendet init.sql, um eine Tabelle zu erstellen und einige Daten einzufügen.
  2. grafana – Ein Grafana-Container. Der Container verwendet provisioning/datasources/postgres.yaml, um die Postgres-Datenquelle zu konfigurieren.

Um die Entwicklungsumgebung zu starten, können wir den folgenden Befehl im Verzeichnis postgres-grafana-on-ecs/src/ ausführen:

docker compose up

Nach Ausführung des Befehls können wir http://localhost:3000 im Browser aufrufen und uns mit dem Standard-Benutzernamen und -Passwort admin bei Grafana anmelden.

Bereitstellung von Grafana auf ECS

Um Grafana und Postgres auf ECS bereitzustellen, erstellen wir für jeden Dienst eine Task-Definition. Als Launch-Typ für die Task-Definition verwenden wir EC2. Die Task-Definition für Grafana sieht wie folgt aus:

{ "containerDefinitions": [ { "name": "grafana", "image": "...", "cpu": 512, "memory": 512, "portMappings": [ { "containerPort": 3000, "hostPort": 3000, "protocol": "tcp" } ], "environment": [ { "name": "POSTGRES_USER", "value": "postgres" } ] } ], "cpu": "512", "memory": "512" }

Die folgende Abbildung zeigt die Bereitstellung von Grafana auf ECS. Wir stellen Grafana- und Postgres-Tasks in einem öffentlichen Subnetz bereit. Der Grafana-Task befindet sich hinter einem Load Balancer, der den eingehenden Datenverkehr auf den Grafana-Task verteilt. Der Postgres-Task befindet sich nicht hinter einem Load Balancer und ist nur über den Grafana-Task zugänglich.

Bereitstellung in AWS

Kosten für den Betrieb von Grafana auf ECS

Wir haben die Bereitstellung 5 Stunden lang ausgeführt. Die Kosten für den Betrieb von Grafana und Postgres auf ECS sind wie folgt:

Kosten für den Betrieb von Grafana auf ECS

Wie aus der Abbildung ersichtlich, spielen die Netzwerkkosten eine bedeutende Rolle bei den Gesamtkosten. Dazu gehören die Kosten für den Load Balancer und die Virtual Private Cloud (VPC). In unserem Fall verwenden wir nur das öffentliche Subnetz, was die zusätzlichen Kosten für das NAT-Gateway vermeidet.

Fazit

Grafana ist eine leistungsstarke Open-Source-Plattform, die zur Visualisierung von Daten in unserer Postgres-Datenbank eingesetzt werden kann. Wir können Grafana als Container auf dem Amazon Elastic Container Service (ECS) bereitstellen und vom Pay-as-you-go-Modell profitieren.