Stellen Sie eine Connect zu einer MySQL-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 MySQL-Datenquelle her

Fügen Sie die MySQL-Datenquelle hinzu, um Daten aus einer MySQL-kompatiblen Datenbank abfragen und visualisieren zu können.

Wichtig

Grafana Version 8.0 ändert die zugrunde liegende Datenstruktur für Datenrahmen für die Datenquellen MySQL, Postgres und Microsoft SQL Server. 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 zuvor 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.

Die Datenquelle hinzufügen

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

  2. Im Seitenmenü unter dem Link Dashboards sollten Sie einen Link mit dem Namen Datenquellen finden.

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

  4. Wählen Sie MySQL 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 MySQL-Instanz.
Database Name Ihrer MySQL-Datenbank.
User Login/Benutzername des Datenbankbenutzers.
Password Passwort des Datenbankbenutzers.
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, Standardeinstellung /4 Stunden. 14400 Dies sollte immer niedriger sein als das konfigurierte wait_timeout in MySQL (Grafana v5.4+).

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 USE otherdb; und ausgeführt werden. Um sich davor zu schützen, empfehlen wir dringend, einen bestimmten MySQL-Benutzer mit eingeschränkten Rechten zu erstellen.

Das folgende Codebeispiel zeigt die Erstellung eines bestimmten MySQL-Benutzers mit eingeschränkten Rechten.

CREATE USER 'grafanaReader' IDENTIFIED BY 'password'; GRANT SELECT ON mydatabase.mytable TO 'grafanaReader';

Um Zugriff auf weitere Datenbanken und Tabellen zu gewähren, können Sie bei Bedarf Platzhalterzeichen (*) anstelle von Datenbank oder Tabelle verwenden.

Abfrage-Editor

Sie finden den MySQL-Abfrage-Editor auf der Registerkarte Metriken im Bearbeitungsmodus eines Panels. Sie gelangen in den Bearbeitungsmodus, indem Sie den Titel des Panels und dann Bearbeiten auswählen.

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)

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 in der konfigurierten Datenbank befinden. Um eine Tabelle oder Ansicht in einer anderen Datenbank auszuwählen, auf die Ihr Datenbankbenutzer Zugriff hat, können Sie manuell einen vollqualifizierten Namen (database.table) eingeben, z. B. otherDb.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 (Text, Tinytext, Mediumtext, Longtext, Varchar, Char). Wenn Sie eine Spalte mit einem anderen Datentyp als Metrikspalte verwenden möchten, können Sie den Spaltennamen mit einer Umwandlung eingeben:. CAST(numericColumn as CHAR) Sie können auch beliebige SQL-Ausdrücke in das Metrikspaltenfeld eingeben, die einen Textdatentyp ergeben, z. CONCAT(column1, " ", CAST(numericColumn as CHAR)) B.

Spalten 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.

Wenn Sie Aggregatfunktionen verwenden, müssen Sie Ihre Ergebnismenge gruppieren. Der Editor fügt automatisch eine hinzu, GROUP BY time wenn Sie eine Aggregatfunktion hinzufügen.

Sie können weitere Wertespalten hinzufügen, indem Sie auf die Plus-Schaltfläche klicken und Column aus dem Menü 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 auswählenRemove. 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, wählen Sie 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 auswählenRemove.

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

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 (roh)

Sie können in den Editor-Modus für Rohabfragen 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

Um die Syntax zu vereinfachen und dynamische Teile wie Datumsbereichsfilter zu berücksichtigen, kann die Abfrage Makros enthalten.

Beispiel für ein Makro Beschreibung
$__time(dateColumn) Wird durch einen Ausdruck ersetzt, der in einen UNIX-Zeitstempel konvertiert und die Spalte umbenannt werden solltime_sec; zum Beispiel UNIX_TIMESTAMP (DateColumn) in time_sec.
$__timeEpoch(dateColumn) Wird durch einen Ausdruck ersetzt, der in einen UNIX-Zeitstempel konvertiert und die Spalte umbenannt werden soll; zum Beispiel UNIX_TIMESTAMP (DateColumn) in time_sectime_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 in der vorherigen Zeile, aber mit einem Füllparameter, sodass fehlende Punkte in dieser Reihe 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 aber durch einen hinzugefügten Spaltenalias ersetzt (nur in Grafana 5.3+ verfügbar).
$__unixEpochFilter(dateColumn) Wird durch einen Zeitbereichsfilter ersetzt, der den angegebenen Spaltennamen verwendet, wobei die Zeiten als Unix-Zeitstempel dargestellt werden. z. B. dateColumn > 1494410783 AND dateColumn < 1494497183.
$__unixEpochFrom() Wird durch den Beginn der aktuell aktiven Zeitauswahl als Unix-Zeitstempel ersetzt. z. B. 1494410783.
$__unixEpochTo() Wird durch das Ende der aktuell aktiven Zeitauswahl als Unix-Zeitstempel ersetzt. z. B. 1494497183.
$__unixEpochNanoFilter(dateColumn) Wird durch einen Zeitbereichsfilter ersetzt, der den angegebenen Spaltennamen verwendet, wobei die Zeiten als Nanosekunden-Zeitstempel dargestellt werden. z. B. dateColumn > 1494410783152415214 AND dateColumn < 1494497183142514872.
$__unixEpochNanoFrom() Wird durch den Beginn der aktuell aktiven Zeitauswahl als Nanosekunden-Zeitstempel ersetzt. z. B. 1494410783152415214.
$__unixEpochNanoTo() Wird durch das Ende der aktuell aktiven Zeitauswahl als Nanosekunden-Zeitstempel ersetzt. z. B. 1494497183142514872.
$__unixEpochGroup(dateColumn,"5m", [fillmode]) Wie$__timeGroup, aber für Zeiten, die als Unix-Zeitstempel gespeichert sind (nur in Grafana 5.3+ verfügbar).
$__unixEpochGroupAlias(dateColumn,"5m", [fillmode])` Wie oben, fügt aber auch einen Spaltenalias hinzu (nur in Grafana 5.3+ verfügbar).

Der Abfrage-Editor verfügt über einen generierten SQL-Link, der nach der Ausführung einer Abfrage im Panel-Bearbeitungsmodus angezeigt wird. Wenn Sie ihn auswählen, wird er erweitert und zeigt die unformatierte interpolierte SQL-Zeichenfolge an, die ausgeführt wurde.

Tabellenabfragen

Wenn die Option Als Abfrage formatieren auf Tabelle gesetzt ist, können Sie grundsätzlich jede Art von SQL-Abfrage ausführen. Im Tabellenbereich werden automatisch die Ergebnisse aller Spalten und Zeilen angezeigt, die Ihre Abfrage zurückgibt.

Der folgende Code zeigt eine Beispielabfrage.

SELECT title as 'Title', user.login as 'Created By' , dashboard.created as 'Created On' FROM dashboard INNER JOIN user on user.id = dashboard.created_by WHERE $__timeFilter(dashboard.created)

Sie können den Namen der Spalten im Tabellenfenster mithilfe der regulären as SQL-Spaltenauswahlsyntax steuern.

Zeitreihenabfragen

Wenn Sie Format auf Zeitreihe festlegen, 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-Datentyp oder einen beliebigen numerischen Datentyp zurückgibt, der die Unix-Epoche repräsentiert. Jede Spalte außer time und metric wird als Wertspalte 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 (nur in Grafana 5.3+ verfügbar).

Ergebnissätze von Zeitreihenabfragen müssen nach Zeit sortiert werden.

Das folgende Codebeispiel zeigt die 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_double) as value, measurement FROM test_data WHERE $__timeFilter(createdAt) GROUP BY time, measurement ORDER BY time

Das folgende Codebeispiel 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

Es gibt keine Unterstützung für eine dynamische Gruppierung nach Zeit auf der Grundlage von Zeitraum und Panelbreite.

Erstellen von Vorlagen

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 MySQL-Abfrage schreiben, die Dinge wie Messnamen, Schlüsselnamen oder Schlüsselwerte zurückgeben kann, die als Drop-down-Auswahlfeld angezeigt werden.

Sie können beispielsweise eine Variable haben, 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 my_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 my_host.hostname, my_other_host.hostname2 FROM my_host JOIN my_other_host ON my_host.city = my_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 verwenden können.

Das folgende Codebeispiel zeigt eine Abfrage mit hostname als Text und id als Wert.

SELECT hostname AS __text, id AS __value FROM my_host

Sie können auch verschachtelte Variablen erstellen. Zum Beispiel, wenn Sie eine andere Variable benannt region haben. Dann könnten Sie die hosts-Variable mit einer Abfrage wie dieser nur Hosts aus der aktuell ausgewählten Region anzeigen lassen (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 my_host WHERE region IN($region)

Wird verwendet__searchFilter, um Ergebnisse in der 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 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

Von Grafana 4.3.0 bis 4.6.0 werden Vorlagenvariablen immer automatisch in Anführungszeichen gesetzt. Wenn es sich also um einen Zeichenkettenwert handelt, setzen Sie sie nicht in Anführungszeichen in WHERE-Klauseln.

Ab Grafana 4.7.0 werden Vorlagenvariablenwerte nur dann in Anführungszeichen gesetzt, wenn die Vorlagenvariable a ist. multi-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 UNIX_TIMESTAMP(atimestamp) as time, aint as value, avarchar as metric FROM my_table WHERE $__timeFilter(atimestamp) and hostname in($hostname) ORDER BY atimestamp ASC

[[varname]]Beispiel mit einer Vorlagenvariablen namenshostname:

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

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

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

${servers:csv}

Weitere Informationen zu den Formatierungsoptionen für Variablen finden Sie unterErweiterte Optionen für das Variablenformat.

Anmerkungen

Mithilfe von Anmerkungen können Sie Grafiken mit ausführlichen Ereignisinformationen überlagern. Sie fügen Annotationsabfragen über das Dashboard-Menü /die Ansicht Anmerkungen hinzu. Weitere Informationen finden Sie unter .

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

SELECT epoch_time as time, metric1 as text, CONCAT(tag1, ',', tag2) as tags FROM public.test_data WHERE $__unixEpochFilter(epoch_time)

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

Anmerkung

Nur in Grafana v6.6+ verfügbar.

SELECT epoch_time as time, epoch_timeend as timeend, metric1 as text, CONCAT(tag1, ',', tag2) as tags FROM public.test_data WHERE $__unixEpochFilter(epoch_time)

Der folgende Beispielcode zeigt eine Abfrage, die eine Zeitspalte des systemeigenen SQL-Datentyps Datum/Uhrzeit verwendet.

SELECT native_date_time as time, metric1 as text, CONCAT(tag1, ',', tag2) 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 systemeigenen SQL-Datentyp für Datum/Uhrzeit oder Epochenwert sein.
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.