Stellen Sie eine Connect zu einer PostgreSQL-Datenquelle her - Amazon Managed Grafana

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Stellen Sie eine Connect zu einer PostgreSQL-Datenquelle her

Sie können die PostgreSQL-Datenquelle verwenden, um Daten aus Ihren Amazon Aurora PostgreSQL-Datenbanken abzufragen und zu visualisieren.

Wichtig

Grafana Version 8 ändert die zugrunde liegende Datenstruktur für Datenrahmen für die Postgres-, MySQL- und Microsoft SQL Server-Datenquellen. Infolgedessen wird ein Zeitreihenabfrageergebnis in einem breiten Format zurückgegeben. Weitere Informationen finden Sie unter Wide Format in der Grafana-Datenrahmen-Dokumentation. Damit Ihre Visualisierungen wie vor Version 8 funktionieren, müssen Sie möglicherweise einige manuelle Migrationen durchführen. Eine Lösung ist auf Github unter Postgres/MySQL/MSSQL dokumentiert: Wichtige Änderung in Version 8.0 in Bezug auf Zeitreihenabfragen und die Reihenfolge der Datenspalten.

In Grafana-Version 9 richtet die PostgreSQL-Datenquelle das Stammzertifikat für die Verbindung zu Ihrer Datenbank anders ein als in früheren Versionen. Wenn Sie Ihren Workspace von Version 8 auf 9 aktualisieren, müssen Sie möglicherweise die Art und Weise ändern, wie Sie eine Verbindung herstellen. Weitere Informationen finden Sie unter Behebung von Problemen mit aktualisierten Arbeitsbereichen.

Die Datenquelle wird hinzugefügt

  1. Öffnen Sie das Seitenmenü, indem Sie das Grafana-Symbol in der oberen Kopfzeile auswählen.

  2. Im Seitenmenü unter dem Konfigurationssymbol sollten Sie einen Link zu Datenquellen finden.

  3. Wählen Sie in der oberen Kopfzeile die Schaltfläche + Datenquelle hinzufügen.

  4. Wählen Sie PostgreSQL aus der Dropdownliste Typ aus.

Datenquellenoptionen

Name Beschreibung
Name Der Name der Datenquelle. So sehen Sie die Datenquelle in Bedienfeldern und Abfragen.
Default Die Standarddatenquelle bedeutet, dass sie für neue Panels vorab ausgewählt wird.
Host Die IP-Adresse/der Hostname und der optionale Port Ihrer PostgreSQL-Instanz. Geben Sie den Datenbanknamen nicht an. Die Verbindungszeichenfolge für die Verbindung mit Postgres ist nicht korrekt und führt zu Fehlern.
Database Name Ihrer PostgreSQL-Datenbank.
User Login/Benutzername des Datenbankbenutzers.
Password Passwort des Datenbankbenutzers
SSL Mode Diese Option bestimmt, ob oder mit welcher Priorität eine sichere SSL-TCP/IP-Verbindung mit dem Server ausgehandelt wird.
Max open Die maximale Anzahl offener Verbindungen zur Datenbank, Standard unlimited (Grafana v5.4+).
Max idle Die maximale Anzahl von Verbindungen im inaktiven Verbindungspool, Standard 2 (Grafana v5.4+).
Max lifetime Die maximale Zeit in Sekunden, für die eine Verbindung wiederverwendet werden kann, Standard 14400 /4 Stunden (Grafana v5.4+).
Version Diese Option bestimmt, welche Funktionen im Query Builder verfügbar sind (nur in Grafana 5.3+ verfügbar).
TimescaleDB TimescaleDB ist eine Zeitreihendatenbank, die als PostgreSQL-Erweiterung erstellt wurde. Wenn diese Option aktiviert ist, verwendet Grafana time_bucket im $__timeGroup Makro und zeigt TimescaleDB-spezifische Aggregatfunktionen im Query Builder an (nur in Grafana 5.3+ verfügbar).

Minimales Zeitintervall

Eine Untergrenze für die $_interval $_interval_ms Variablen. Es wird empfohlen, die Schreibfrequenz einzustellen, z. B. 1m wenn Ihre Daten jede Minute geschrieben werden. Diese Option kann auch in einem Dashboard unter Datenquellenoptionen überschrieben/konfiguriert werden. Dieser Wert muss als Zahl gefolgt von einer gültigen Zeit-ID formatiert werden, z. B. 1m (1 Minute) oder 30s (30 Sekunden). Die folgenden Zeitkennungen werden unterstützt.

Kennung Beschreibung
y Jahr
M Monat
w Woche
d Tag
h Stunde
m Minute
s Sekunde
ms Millisekunde

Berechtigungen von Datenbankbenutzern

Wichtig

Dem Datenbankbenutzer, den Sie beim Hinzufügen der Datenquelle angeben, sollten nur SELECT-Berechtigungen für die angegebene Datenbank und die Tabellen erteilt werden, die Sie abfragen möchten. Grafana überprüft nicht, ob die Abfrage sicher ist. Die Abfrage kann jede SQL-Anweisung enthalten. Beispielsweise DROP TABLE user; würden Anweisungen wie DELETE FROM user; und ausgeführt werden. Um sich davor zu schützen, empfehlen wir dringend, einen bestimmten PostgreSQL-Benutzer mit eingeschränkten Rechten zu erstellen.

Der folgende Beispielcode zeigt die Erstellung eines bestimmten PostgreSQL-Benutzers mit eingeschränkten Rechten.

CREATE USER grafanareader WITH PASSWORD 'password'; GRANT USAGE ON SCHEMA schema TO grafanareader; GRANT SELECT ON schema.table TO grafanareader;

Stellen Sie sicher, dass der Benutzer keine unerwünschten Berechtigungen von der öffentlichen Rolle erhält.

Abfrage-Editor

Sie finden den PostgreSQL-Abfrage-Editor auf der Registerkarte Metriken im Bearbeitungsmodus des Graph- oder Singlestat-Bedienfelds. Sie gelangen in den Bearbeitungsmodus, indem Sie den Titel des Panels auswählen und dann bearbeiten.

Der Abfrage-Editor verfügt über einen Link Generiertes SQL, der angezeigt wird, nachdem eine Abfrage ausgeführt wurde, während Sie sich im Panel-Bearbeitungsmodus befinden. Wenn Sie ihn auswählen, wird er erweitert und zeigt die unformatierte interpolierte SQL-Zeichenfolge an, die ausgeführt wurde.

Wählen Sie Tabelle, Zeitspalte und Metrikspalte (FROM) aus

Wenn Sie zum ersten Mal in den Bearbeitungsmodus wechseln oder eine neue Abfrage hinzufügen, versucht Grafana, den Query Builder mit der ersten Tabelle auszufüllen, die eine Zeitstempelspalte und eine numerische Spalte enthält.

Im FROM-Feld schlägt Grafana Tabellen vor, die sich im Verzeichnis search_path des Datenbankbenutzers befinden. Um eine Tabelle oder Ansicht auszuwählen, die nicht in Ihrer enthalten ist, können search_path Sie manuell einen vollqualifizierten Namen (schema.table) eingeben, z. B. public.metrics

Das Spaltenfeld Zeit bezieht sich auf den Namen der Spalte, die Ihre Zeitwerte enthält. Die Auswahl eines Werts für das Spaltenfeld Metrik ist optional. Wenn ein Wert ausgewählt ist, wird das Spaltenfeld Metrisch als Serienname verwendet.

Die Vorschläge für metrische Spalten enthalten nur Spalten mit einem Textdatentyp (char, varchar, text). Um eine Spalte mit einem anderen Datentyp als Metrikspalte zu verwenden, können Sie den Spaltennamen mit folgender Umwandlung eingeben:. ip::text Sie können auch beliebige SQL-Ausdrücke in das Metrikspaltenfeld eingeben, die einen Textdatentyp ergeben, wie hostname || ' ' || container_name z.

Spalten-, Fenster- und Aggregationsfunktionen (SELECT)

In der SELECT Zeile können Sie angeben, welche Spalten und Funktionen Sie verwenden möchten. In das Spaltenfeld können Sie anstelle eines Spaltennamens beliebige Ausdrücke schreiben, wie column1 * column2 / column3 z.

Die verfügbaren Funktionen im Abfrage-Editor hängen von der PostgreSQL-Version ab, die Sie bei der Konfiguration der Datenquelle ausgewählt haben. Wenn Sie Aggregatfunktionen verwenden, müssen Sie Ihre Ergebnismenge gruppieren. Wenn Sie eine Aggregatfunktion hinzufügen, fügt der Editor automatisch eine hinzuGROUP BY time.

Der Editor versucht, diesen Teil der Abfrage zu vereinfachen und zu vereinheitlichen.

Sie können weitere Wertspalten hinzufügen, indem Sie auf die Plus-Schaltfläche klicken und im Menü die Option Spalte auswählen. Mehrere Wertespalten werden als separate Reihen im Grafikfenster dargestellt.

Daten filtern (WO)

Um einen Filter hinzuzufügen, wählen Sie das Plussymbol rechts neben der WHERE Bedingung. Sie können Filter entfernen, indem Sie den Filter auswählen und dann Entfernen auswählen. Ein Filter für den aktuell ausgewählten Zeitraum wird automatisch zu neuen Abfragen hinzugefügt.

Gruppieren nach

Um nach Zeit oder anderen Spalten zu gruppieren, klicken Sie auf das Plussymbol am Ende der Zeile GRUPPIEREN NACH. In der Dropdownliste mit Vorschlägen werden nur Textspalten der aktuell ausgewählten Tabelle angezeigt. Sie können jedoch jede Spalte manuell eingeben. Sie können die Gruppe entfernen, indem Sie das Element auswählen und dann Entfernen auswählen.

Wenn Sie eine Gruppierung hinzufügen, muss auf alle ausgewählten Spalten eine Aggregatfunktion angewendet werden. Der Abfragegenerator fügt automatisch Aggregatfunktionen zu allen Spalten ohne Aggregatfunktionen hinzu, wenn Sie Gruppierungen hinzufügen.

Füllen von Lücken

Amazon Managed Grafana kann fehlende Werte ausfüllen, wenn Sie nach Zeit gruppieren. Die Zeitfunktion akzeptiert zwei Argumente. Das erste Argument ist das Zeitfenster, nach dem Sie gruppieren möchten, und das zweite Argument ist der Wert, mit dem Grafana fehlende Elemente füllen soll.

Texteditor-Modus (RAW)

Sie können in den Rohabfrage-Editor-Modus wechseln, indem Sie auf das Hamburger-Symbol klicken und Editor-Modus wechseln auswählen oder indem Sie unter der Abfrage SQL bearbeiten wählen.

Anmerkung

Wenn Sie den Editor für Rohabfragen verwenden, stellen Sie sicher, dass Ihre Abfrage mindestens über einen Filter für den zurückgegebenen Zeitraum verfügtORDER BY time.

Makros

Makros können innerhalb einer Abfrage verwendet werden, um die Syntax zu vereinfachen und dynamische Teile zu ermöglichen.

Beispiel für ein Makro Beschreibung
$__time(dateColumn) Wird durch einen Ausdruck ersetzt, der in einen UNIX-Zeitstempel konvertiert und in den die Spalte umbenannt werden solltime_sec. Zum Beispiel UNIX_TIMESTAMP (DateColumn) als time_sec.
$__timeEpoch(dateColumn) Wird durch einen Ausdruck ersetzt, der in einen UNIX-Zeitstempel konvertiert und die Spalte umbenannt werden soll. time_sec Zum Beispiel UNIX_TIMESTAMP (DateColumn) als time_sec.
$__timeFilter(dateColumn) Wird durch einen Zeitbereichsfilter ersetzt, der den angegebenen Spaltennamen verwendet. Zum Beispiel DateColumn BETWEEN FROM_UNIXTIME (1494410783) UND FROM_UNIXTIME (1494410983).
$__timeFrom() Wird durch den Beginn der aktuell aktiven Zeitauswahl ersetzt. Zum Beispiel FROM_UNIXTIME (1494410783).
$__timeTo() Wird durch das Ende der aktuell aktiven Zeitauswahl ersetzt. Zum Beispiel FROM_UNIXTIME (1494410983).
$__timeGroup(dateColumn,'5m') Wird durch einen Ausdruck ersetzt, der in der GROUP BY-Klausel verwendet werden kann. Zum Beispiel cast (cast (UNIX_TIMESTAMP (DateColumn)/(300) as signed) 300 as signed), *
$__timeGroup(dateColumn,'5m', 0) Wie die vorherige Zeile, aber mit einem Füllparameter, sodass fehlende Punkte in dieser Serie von grafana hinzugefügt und 0 als Wert verwendet wird.
$__timeGroup(dateColumn,'5m', NULL) Wie oben, aber NULL wird als Wert für fehlende Punkte verwendet.
$__timeGroup(dateColumn,'5m', previous) Wie oben, aber der vorherige Wert in dieser Reihe wird als Füllwert verwendet, wenn noch kein Wert gesehen wurde. NULL wird verwendet (nur in Grafana 5.3+ verfügbar).
$__timeGroupAlias(dateColumn,'5m') Wird identisch mit $__timeGroup ersetzt, jedoch durch einen zusätzlichen Spaltenalias
$__unixEpochFilter(dateColumn)

Wird durch einen Zeitbereichsfilter ersetzt, der den angegebenen Spaltennamen verwendet, wobei die Zeiten als Unix-Zeitstempel dargestellt werden. Zum Beispiel: *DateColumn > 1494410783 UND DateColumn < 1494497183*

$__unixEpochFrom()`

| Wird durch den Beginn der aktuell aktiven Zeitauswahl als Unix-Zeitstempel ersetzt. Zum Beispiel *1494410783*

$__unixEpochTo()

Wird durch das Ende der aktuell aktiven Zeitauswahl als Unix-Zeitstempel ersetzt. Zum Beispiel*1494497183*

$__unixEpochNanoFilter(dateColumn)

Wird durch einen Zeitbereichsfilter ersetzt, der den angegebenen Spaltennamen verwendet, wobei die Zeiten als Nanosekunden-Zeitstempel dargestellt werden. Zum Beispiel: *DateColumn > 1494410783152415214 UND DateColumn < 1494497183142514872*

$__unixEpochNanoFrom()

Wird durch den Beginn der aktuell aktiven Zeitauswahl als Nanosekunden-Zeitstempel ersetzt. Zum Beispiel*1494410783152415214*
$__unixEpochNanoTo()

Wird durch das Ende der aktuell aktiven Zeitauswahl als Nanosekunden-Zeitstempel ersetzt. Beispielsweise *1494497183142514872*

$__unixEpochGroup(dateColumn,"5m", [fillmode])

Wie $__timeGroup, aber für Zeiten, die als Unix-Zeitstempel gespeichert sind.

Tabellenabfragen

Wenn die Abfrageoption auf Als Tabelle formatieren gesetzt ist, können Sie grundsätzlich jede Art von SQL-Abfrage ausführen. Das Tabellenfenster zeigt automatisch die Ergebnisse der Spalten und Zeilen an, die Ihre Abfrage zurückgibt.

Sie können den Namen der Spalten im Tabellenfenster steuern, indem Sie die reguläre as SQL-Spaltenauswahlsyntax verwenden.

Zeitreihenabfragen

Wenn Sie Format auf einstellenTime series, z. B. für die Verwendung in einem Grafikfenster, muss die Abfrage eine Spalte mit dem Namen time zurückgeben, die entweder einen SQL-Datetime-Wert oder einen beliebigen numerischen Datentyp zurückgibt, der die Unix-Epoche repräsentiert. Jede Spalte außer time und metric wird als Wertespalte behandelt. Sie können eine Spalte mit dem Namen zurückgebenmetric, die als Metrikname für die Wertspalte verwendet wird. Wenn Sie mehrere Wertspalten und eine Spalte mit dem Namen zurückgebenmetric, wird diese Spalte als Präfix für den Seriennamen verwendet.

Ergebnismengen von Zeitreihenabfragen müssen nach Zeit sortiert werden.

Der folgende Beispielcode zeigt eine metric Spalte.

SELECT $__timeGroup("time_date_time",'5m'), min("value_double"), 'min' as metric FROM test_data WHERE $__timeFilter("time_date_time") GROUP BY time ORDER BY time

Das folgende Codebeispiel zeigt, wie der Parameter fill im Makro $__timeGroup verwendet wird, um Nullwerte stattdessen in Null umzuwandeln.

SELECT $__timeGroup("createdAt",'5m',0), sum(value) as value, measurement FROM test_data WHERE $__timeFilter("createdAt") GROUP BY time, measurement ORDER BY time

Der folgende Beispielcode zeigt mehrere Spalten.

SELECT $__timeGroup("time_date_time",'5m'), min("value_double") as "min_value", max("value_double") as "max_value" FROM test_data WHERE $__timeFilter("time_date_time") GROUP BY time ORDER BY time

Vorlagen erstellen

Anstatt Dinge wie Server-, Anwendungs- und Sensornamen in Ihren metrischen Abfragen fest zu codieren, können Sie stattdessen Variablen verwenden. Variablen werden als Drop-down-Auswahlfelder oben im Dashboard angezeigt. Sie können diese Dropdown-Felder verwenden, um die in Ihrem Dashboard angezeigten Daten zu ändern.

Weitere Informationen zu Vorlagen und Vorlagenvariablen finden Sie unter. Vorlagen

Variable abfragen

Wenn Sie eine Vorlagenvariable dieses Typs hinzufügenQuery, können Sie eine PostgreSQL-Abfrage schreiben, die Dinge wie Messnamen, Schlüsselnamen oder Schlüsselwerte zurückgeben kann, die als Dropdownauswahlfeld angezeigt werden.

Sie können beispielsweise über eine Variable verfügen, die alle Werte für die hostname Spalte in einer Tabelle enthält, wenn Sie eine solche Abfrage in der Abfrageeinstellung für die Vorlagenvariable angeben.

SELECT hostname FROM host

Eine Abfrage kann mehrere Spalten zurückgeben und Grafana erstellt automatisch eine Liste daraus. Die folgende Abfrage gibt beispielsweise eine Liste mit Werten von hostname und hostname2 zurück.

SELECT host.hostname, other_host.hostname2 FROM host JOIN other_host ON host.city = other_host.city

Um zeitbereichsabhängige Makros wie $__timeFilter(column) in Ihrer Abfrage zu verwenden, muss der Aktualisierungsmodus der Vorlagenvariablen auf Bei Zeitbereichsänderung eingestellt sein.

SELECT event_name FROM event_log WHERE $__timeFilter(time_column)

Eine weitere Option ist eine Abfrage, mit der eine Schlüssel-/Wertvariable erstellt werden kann. Die Abfrage sollte zwei Spalten mit dem Namen __text und zurückgeben. __value Der __text Spaltenwert sollte eindeutig sein (wenn er nicht eindeutig ist, wird der erste Wert verwendet). Die Optionen in der Dropdownliste enthalten einen Text und einen Wert, sodass Sie einen benutzerfreundlichen Namen als Text und eine ID als Wert angeben können. Eine Beispielabfrage mit hostname als Text und id als Wert:

SELECT hostname AS __text, id AS __value FROM host

Sie können auch verschachtelte Variablen erstellen. Wenn Sie eine Variable mit dem Namen verwendenregion, könnten Sie festlegen, dass die hosts-Variable nur Hosts aus der aktuell ausgewählten Region anzeigt. Das folgende Codebeispiel zeigt eine Abfrage wie diese (wenn region es sich um eine Variable mit mehreren Werten handelt, verwenden Sie den IN Vergleichsoperator, anstatt = sie mit mehreren Werten abzugleichen).

SELECT hostname FROM host WHERE region IN($region)

Wird verwendet__searchFilter, um Ergebnisse in einer Abfragevariablen zu filtern

Durch die Verwendung __searchFilter im Abfragefeld wird das Abfrageergebnis danach gefiltert, was der Benutzer in das Drop-down-Auswahlfeld eingibt. Wenn der Benutzer nichts eingegeben hat, __searchFilter ist % der Standardwert für.

Anmerkung

Es ist wichtig, dass Sie den __searchFilter Ausdruck mit Anführungszeichen umgeben, da Grafana dies nicht für Sie tut.

Das folgende Beispiel zeigt, wie Sie es __searchFilter als Teil des Abfragefelds verwenden können, um die Suche nach zu ermöglichen, hostname während der Benutzer in das Drop-down-Auswahlfeld tippt.

SELECT hostname FROM my_host WHERE hostname LIKE '$__searchFilter'

Verwenden von Variablen in Abfragen

Werte von Vorlagenvariablen werden nur in Anführungszeichen gesetzt, wenn die Vorlagenvariable a istmulti-value.

Wenn es sich bei der Variablen um eine Variable mit mehreren Werten handelt, verwenden Sie den IN Vergleichsoperator, anstatt = sie mit mehreren Werten abzugleichen.

Es gibt zwei Syntaxen:

$<varname>Beispiel mit einer Template-Variablen namenshostname:

SELECT atimestamp as time, aint as value FROM table WHERE $__timeFilter(atimestamp) and hostname in($hostname) ORDER BY atimestamp ASC

[[varname]]Beispiel mit einer Vorlagenvariablen namenshostname:

SELECT atimestamp as time, aint as value FROM table WHERE $__timeFilter(atimestamp) and hostname in([[hostname]]) ORDER BY atimestamp ASC

Ausschalten der Anführungszeichen für Variablen mit mehreren Werten

Amazon Managed Grafana erstellt automatisch eine durch Kommas getrennte Zeichenfolge in Anführungszeichen für Variablen mit mehreren Werten. Beispiel: Wenn server01 und ausgewählt server02 sind, wird es wie folgt formatiert:. 'server01', 'server02' Um das Zitieren zu deaktivieren, verwenden Sie die CSV-Formatierungsoption für Variablen.

${servers:csv}

Weitere Informationen zu den Formatierungsoptionen für Variablen finden Sie unterVorlagen und Variablen.

Anmerkungen

Verwenden Sie Anmerkungen, um Grafiken mit ausführlichen Ereignisinformationen zu überlagern. Sie fügen Annotationsabfragen über das Dashboard-Menü /die Ansicht Anmerkungen hinzu. Weitere Informationen finden Sie unter Anmerkungen.

Der folgende Beispielcode zeigt eine Abfrage, die eine Zeitspalte mit Epochenwerten verwendet.

SELECT epoch_time as time, metric1 as text, concat_ws(', ', metric1::text, metric2::text) as tags FROM public.test_data WHERE $__unixEpochFilter(epoch_time)

Der folgende Beispielcode zeigt eine Regionsabfrage, die Zeit- und Zeitendspalten mit Epochenwerten verwendet.

Anmerkung

Dies ist nur in Grafana v6.6+ verfügbar.

SELECT epoch_time as time, epoch_time_end as timeend, metric1 as text, concat_ws(', ', metric1::text, metric2::text) as tags FROM public.test_data WHERE $__unixEpochFilter(epoch_time)

Der folgende Beispielcode zeigt eine Abfrage, die eine Zeitspalte mit dem nativen SQL-Datentyp Datum/Uhrzeit verwendet.

SELECT native_date_time as time, metric1 as text, concat_ws(', ', metric1::text, metric2::text) as tags FROM public.test_data WHERE $__timeFilter(native_date_time)
Name Beschreibung
time Der Name des Datums-/Uhrzeitfeldes. Könnte eine Spalte mit einem systemeigenen SQL-Datentyp für Datum/Uhrzeit oder Epochenwert sein.
timeend Optionaler Name des Enddatums-/Uhrzeitfeldes. Könnte eine Spalte mit einem nativen SQL-Datentyp für Datum/Uhrzeit oder Epochenwert sein (Grafana v6.6+).
text Feld mit der Beschreibung des Ereignisses.
tags Optionaler Feldname, der für Event-Tags als kommagetrennte Zeichenfolge verwendet werden soll.

Warnfunktion

Zeitreihenabfragen sollten unter Alarmbedingungen funktionieren. Abfragen im Tabellenformat werden in Warnungsregelbedingungen noch nicht unterstützt.