In diesem Dokument wird beschrieben, wie Sie Filter auf Dashboardebene anpinnen, damit sie dauerhaft sind. Angepinnte Filter, mit denen Sie die in einem Dashboard angezeigten Daten ändern können, ohne jedes Widget ändern zu müssen, haben einen Standardstatus und können auf das gesamte Dashboard oder nur auf bestimmte Widgets angewendet werden. In der Dashboard-Symbolleiste werden alle angepinnten Filter sowie ein Menü angezeigt, mit dem Sie den Filterwert vorübergehend ändern können.
Variablen ähneln angepinnten Filtern, gelten aber nur für bestimmte Widgets. In diesem Dokument wird beschrieben, wie Sie Variablen erstellen und mit einem Widget anwenden. In der Dashboard-Symbolleiste werden alle Variablen zusammen mit einem Menü angezeigt, über das Sie den Wert der Variablen vorübergehend ändern können.
In diesem Dokument wird beschrieben, wie Sie mit der Google Cloud Console Variablen und angepinnte Filter erstellen. Informationen zur Verwendung der Cloud Monitoring API finden Sie unter Dashboards mithilfe der API erstellen und verwalten: Dashboardfilter.
Informationen zum Hinzufügen und Ändern temporärer Gruppierungen und Filter, die nur für die aktuelle Sitzung gelten, finden Sie unter Temporäre Filter zu einem benutzerdefinierten Dashboard hinzufügen.
Angepinnte Filter
Ein angepinnter Filter enthält ein Label, einen oder mehrere Standardwerte und eine Liste aller möglichen Werte. Die Liste aller möglichen Werte wird dynamisch aus den Zeitreihendaten abgeleitet, die auf Ihrem Dashboard angezeigt werden.
Informationen zur Struktur eines Filters finden Sie unter DashboardFilter
.
Angepinnte Filter werden nicht auf einzelne Widgets angewendet. Stattdessen werden die folgenden Regeln verwendet, um zu bestimmen, ob der angepinnte Filter die vom Widget angezeigten Daten ändern kann:
Wenn im Widget Daten mit dem Labelschlüssel angezeigt werden, der in einem angepinnten Filter angegeben ist, und im Widget kein Wert für diesen Labelschlüssel angegeben ist, kann der angepinnte Filter die angezeigten Daten ändern.
Angenommen, Sie fügen den angepinnten Filter cluster_name: mycluster hinzu. In den Diagrammen werden dann automatisch nur die Zeitreihen angezeigt, die das Label cluster_name mit dem Wert mycluster haben. Ebenso werden die Abfragen in den Widgets des Bereichs „Protokolle“ in resource.labels."cluster_name"="mycluster" geändert. In Ihren Diagrammen werden dann automatisch nur die Zeitreihen angezeigt, die das Label im angepinnten Filter enthalten.
Ein angepinnter Filter wird von einem Widget ignoriert, wenn das Widget einen Filter für denselben Labelschlüssel enthält oder die vom Widget angezeigten Daten den im angepinnten Filter angegebenen Labelschlüssel nicht enthalten.
Variablen
Eine Variable hat einen Namen und einen Typ. Eine Variable wird auf ein bestimmtes Widget angewendet, indem die Abfrage, die das Widget enthält, geändert wird.
Informationen zur Struktur eines Filters finden Sie unter DashboardFilter
.
Variablen können entweder labelbasiert sein oder nur einen Wert haben:
Labelbasierte Variablen ähneln angepinnten Filtern. Diese Variablen enthalten einen Labelschlüssel, einen oder mehrere Standardlabelwerte und eine Liste aller möglichen Labelwerte. Die Liste aller möglichen Werte wird dynamisch aus den Zeitreihendaten abgeleitet, die auf Ihrem Dashboard angezeigt werden.
Nur-Wert-Variablen enthalten einen oder mehrere Standardwerte und können alle möglichen Werte auflisten. Wenn Sie keinen Standardwert angeben, wird der Platzhalteroperator
(*)
als Standardwert ausgewählt. Um den Satz aller möglichen Werte zu definieren, geben Sie entweder ein Array von Werten an oder schreiben Sie eine SQL-Abfrage.Es gibt drei Arten von Variablen, die nur Werte enthalten: Benutzerdefiniert, Texteingabe und SQL-Abfrage.
Benutzerdefiniert: Verwenden Sie diese Option, wenn Sie sowohl die Liste aller möglichen Werte aufzählen als auch einen oder mehrere Standardwerte festlegen möchten. Sie können beispielsweise die Liste aller möglichen Werte auf
prod, staging, dev
und den Standardwert aufprod
festlegen.Textfeld: Verwenden Sie diese Option, wenn Sie nicht alle möglichen Werte kennen. Angenommen, Sie möchten beispielsweise nach URL filtern, aber beim Erstellen der Variablen kennen Sie die genaue Liste der URLs nicht. Wenn Sie dann das Filtermenü für das Widget verwenden, können Sie neue URLs eingeben und die Änderungen für die aktuelle Sitzung oder die Variablendefinition speichern.
SQL-Abfrage: Verwenden Sie diese Option, wenn Sie die Liste der möglichen Werte mithilfe einer SQL-Abfrage generieren möchten. Diese Variablen sind für Diagramme gedacht, die mit Log Analytics erstellt wurden.
Achten Sie bei diesen Variablen darauf, dass das Abfrageergebnis eine Tabelle mit einer Spalte ist, dass der Datentyp dieser Spalte „String“ ist und dass jede Zeile in der Tabelle einen eindeutigen Stringwert enthält:
SELECT log_name FROM `TABLE_NAME_OF_LOG_VIEW` GROUP BY log_name
Die Variable sollte dieselbe Tabelle abfragen wie das Diagramm.
Wenn Sie eine Variable auf ein Widget anwenden möchten, aktualisieren Sie die darin enthaltene Abfrage. Wenn Sie die Google Cloud Console verwenden, können Sie diese Verknüpfung für labelbasierte Variablen und einige Widgettypen über eine Menüauswahl vornehmen. Sie können die Abfrage des Widgets jedoch jederzeit bearbeiten, um eine Variable anzuwenden. Weitere Informationen finden Sie unter Variable auf ein Widget anwenden.
Hinweise
Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Monitoring Editor (roles/monitoring.editor
) für Ihr Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Hinzufügen oder Ändern von Variablen oder angepinnten Filtern in der Google Cloud Console benötigen.
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
Weitere Informationen zu Rollen finden Sie unter Zugriff mit Identity and Access Management steuern.
Filter erstellen und anpinnen
So erstellen und pinnen Sie einen Filter, der auf alle Dashboard-Widgets angewendet wird, die Filter unterstützen:
-
Rufen Sie in der Google Cloud Console die Seite Dashboards auf.
Wenn Sie diese Seite über die Suchleiste suchen, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift Monitoring ist.
- Klicken Sie in der Symbolleiste des Dashboards auf settings Einstellungen.
- Klicken Sie im Abschnitt Filter auf Filter hinzufügen.
- Klicken Sie auf arrow_drop_down Label und wählen Sie ein Label aus. Sie können beispielsweise
zone
auswählen. - Wenn Nutzer mehrere Werte aus dem Wertmenü der Variablen auswählen sollen, wählen Sie Mehrfachauswahl aus. Wenn Mehrfachauswahl nicht aktiviert ist, können Nutzer nur eine Option aus dem Menü mit Werten auswählen.
Klicken Sie auf arrow_drop_down Standardwert und wählen Sie dann den oder die Standardwerte für das Label aus. Wenn Sie alle Werte abgleichen möchten, wählen Sie
*
aus.Nachdem der Filter erstellt wurde, wird er der Dashboard-Symbolleiste hinzugefügt. Wenn Sie den Filterwert vorübergehend ändern möchten, wählen Sie den Filter aus und treffen Sie dann eine Auswahl im Menü.
Klicken Sie auf Fertig und dann auf Übernehmen.
Klicken Sie in der Symbolleiste auf Speichern, um das geänderte Dashboard zu speichern.
Erstellen Sie eine Variable
So erstellen Sie eine Variable, die auf bestimmte Dashboard-Widgets angewendet wird:
-
Rufen Sie in der Google Cloud Console die Seite Dashboards auf.
Wenn Sie diese Seite über die Suchleiste suchen, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift Monitoring ist.
- Klicken Sie in der Symbolleiste des Dashboards auf settings Einstellungen.
- Klicken Sie im Bereich Variablen auf Variable hinzufügen.
Wählen Sie den Variablentyp aus und schließen Sie das Dialogfeld ab.
Wenn Sie eine labelbasierte Variable erstellen möchten, wählen Sie Label aus. Verwenden Sie diese Option, wenn Sie eine Variable mit einem Labelschlüssel und einem Labelwert benötigen, die wie ein Filter verwendet werden kann. Die Liste aller möglichen Werte wird dynamisch aus den Zeitreihendaten abgeleitet, die auf Ihrem Dashboard angezeigt werden.
Für Variablen mit nur einem Wert haben Sie folgende Möglichkeiten:
SQL: Verwenden Sie diese Option, wenn die Ergebnisse einer SQL-Abfrage die Liste aller möglichen Werte generieren sollen.
Geben Sie einen oder mehrere Standardwerte und eine SQL-Abfrage ein, mit der die Liste aller möglichen Werte generiert wird. Das Abfrageergebnis muss eine Tabelle mit einer Spalte sein, der Datentyp dieser Spalte muss „String“ sein und jede Zeile in der Tabelle muss einen eindeutigen Stringwert enthalten.
Benutzerdefiniert: Verwenden Sie diese Option, wenn Sie sowohl die Liste der möglichen Werte als auch einen Standardwert angeben möchten. Sie können beispielsweise das Feld Werte auf
prod, staging, dev
und den Standardwert aufprod
festlegen.Texteingabe: Verwenden Sie diese Option, wenn Sie eine Liste von Werten angeben möchten, die als Standardwerte angewendet werden.
Geben Sie einen Namen für die Variable ein. Der Name wird in der Symbolleiste des Dashboards angezeigt.
Klicken Sie auf Fertig und dann auf Übernehmen.
Sie können die Variable auf Widgets im Logbereich und auf Widgets anwenden, die mit SQL, MQL oder PromQL konfiguriert wurden. Weitere Informationen finden Sie unter Variable auf ein Widget anwenden.
Klicken Sie in der Symbolleiste auf Speichern, um das geänderte Dashboard zu speichern.
Variable auf ein Widget anwenden
Wenn Sie eine Variable auf ein Widget anwenden möchten, müssen Sie die vom Widget verwendete Abfrage bearbeiten:
Bei Diagrammen mit SQL-, PromQL- oder MQL-Abfragen und bei Widgets im Bereich „Protokolle“ müssen Sie das Widget bearbeiten und die Abfrage ändern. In diesem Abschnitt wird beschrieben, wie Sie diese Änderungen vornehmen.
Bei Diagrammen, die Sie über Menüs oder im Direktfiltermodus konfiguriert haben, wird die Abfrage in Monitoring bearbeitet, wenn Sie das Widget über das Menü Auf Diagramme anwenden auswählen.
Weitere Informationen dazu, wie Sie eine labelbasierte Variable oder eine reine Wertvariable auf ein Widget anwenden, finden Sie in den folgenden Abschnitten:
- Allgemeine Syntax zum Aufheben der Dereferenzierung einer Variablen
- Widgets im Bereich „Protokolle“
- Diagramme mit PromQL-Abfragen
- Diagramme mit SQL-Abfragen
- Diagramme mit MQL-Abfragen
Diagramme mit Monitoring-Filterabfragen
Wenn Sie über die menügesteuerte Benutzeroberfläche ein Diagramm mit Zeitreihendaten erstellen, werden Ihre Auswahlen in einen Monitoring-Filter umgewandelt.
Filter und Variablen erstellen
Console
Informationen zum Erstellen angepinnter Filter und Variablen mit der Google Cloud Console finden Sie in den folgenden Dokumenten:
API
Verwenden Sie die Datenstruktur dashboardFilters
, um angepinnte Filter und Variablen zu definieren.
- Wenn Sie eine Variable erstellen möchten, legen Sie den Wert des Felds
templateVariable
auf den Namen der Variablen fest. Lassen Sie dieses Feld aus oder legen Sie den Wert auf einen leeren String fest, wenn Sie einen angepinnten Filter erstellen möchten. - Wenn Sie einen angepinnten Filter oder eine labelbasierte Variable erstellen möchten, müssen Sie das Feld
labelKey
angeben. Lassen Sie dieses Feld aus, wenn Sie eine Variable mit nur einem Wert benötigen. Legen Sie den Standardwert für den Filter oder die Variable fest. Die Konfiguration dieses Felds bestimmt, ob ein Nutzer genau eine Option aus dem Menü mit Werten auswählen kann oder mehrere Werte.
- Wenn Sie einen einzelnen Standardwert festlegen und Nutzer darauf beschränken möchten, genau eine Option im Wertemenü auszuwählen, legen Sie das Feld
valueType
aufSTRING
und das FeldstringValue
fest:
"valueType": "STRING", "stringValue": "my-default-value",
- Wenn Sie mindestens einen Standardwert festlegen und Nutzer mehrere Optionen im Wertemenü auswählen lassen möchten, legen Sie das Feld
valueType
alsSTRING_ARRAY
und das FeldstringArrayValue
fest. Im folgenden Beispiel gibt es drei Standardwerte.
"valueType": "STRING_ARRAY", "stringArrayValue": { "values": [ "a", "b", "c" ] },
- Wenn Sie einen einzelnen Standardwert festlegen und Nutzer darauf beschränken möchten, genau eine Option im Wertemenü auszuwählen, legen Sie das Feld
Optional: Wenn Sie eine Liste aller möglichen Werte für eine Variable mit nur einem Wert angeben möchten, legen Sie entweder das Feld
stringArray
oder das FeldtimeSeriesQuery
fest. Wenn Sie eine Abfrage angeben, muss es sich um eine Analyseabfrage handeln.
Betrachten Sie beispielsweise das folgende dashboardFilters
-Objekt:
{ "dashboardFilters": [ { "labelKey": "zone" "stringValue": "us-central1-c", "valueType": "STRING", "filterType": "RESOURCE_LABEL" }, { "labelKey": "instance_id", "stringValue": "3133577226154888113", "valueType": "STRING", "filterType": "RESOURCE_LABEL", "templateVariable": "my_label_based_variable" }, { "filterType": "VALUE_ONLY", "templateVariable": "my_value_only_variable", timeSeriesQuery: { opsAnalyticsQuery: { sql: " SELECT log_name FROM `MY_TABLE` GROUP BY log_name ", } } } ], "displayName": "Illustrate Variables", ... }
Im vorherigen JSON-Code werden ein angepinnter Filter und zwei Variablen definiert:
Der angepinnte Filter hat den Labelschlüssel
zone
, der in der Symbolleiste angezeigt wird. Die FeldervalueType
undstringValue
geben den einzelnen Standardwert an. Weitere Informationen finden Sie auf der Seite „API-Referenzen“ für die DatenstrukturdashboardFilters
.Die labelbasierte Variable hat den Namen
my_label_based_variable
und den Labelschlüsselinstance_id
. Der Standardwert für diese Variable ist eine bestimmte Instanz-ID. Sie können den Standardwert auch mithilfe eines Arrays konfigurieren. In der Symbolleiste wird der Filter mit dem Namenmy_label_based_variable
angezeigt.Die Variable mit nur einem Wert heißt
my_value_only_variable
. Da für diesen Eintrag kein Standardwert angegeben ist, wird der Platzhalteroperator(*)
automatisch angewendet. Außerdem wird für diese Variable eine SQL-Abfrage verwendet, um die Liste der möglichen Werte für die Variable zu generieren.
Im dashboardFilters
-Objekt sind nicht die Widgets aufgeführt, auf die sich die Variable bezieht. Wenn Sie eine Variable auf ein Widget anwenden möchten, ändern Sie die Abfrage für das Widget.
Allgemeine Syntax zum Aufheben der Dereferenzierung einer Variablen
Verwenden Sie für alle Widgets, mit Ausnahme derjenigen, die per SQL definiert sind, die folgende Syntax, um eine Variable auf eine Abfrage anzuwenden:
Wenn Sie eine labelbasierte Variable anwenden und den Labelschlüssel und den Labelwert in einen gültigen Filterausdruck für die Abfragesprache auflösen möchten, verwenden Sie
${my_label_based_variable}
.Wenn Sie nur den Wert einer labelbasierten Variablen anwenden möchten, verwenden Sie
${my_label_based_variable.value}
. Für den Vergleich muss ein regulärer Ausdruck verwendet werden.Wenn Sie nur den Wert einer Variablen verwenden möchten, verwenden Sie
${my_value_only_variable}
. Fügen Sie für Variablen, die nur Werte enthalten, keine.value
-Klausel ein. Für den Vergleich muss ein regulärer Ausdruck verwendet werden.
Widgets für den Logbereich
Wenn Sie eine Variable auf ein Widget im Bereich „Protokolle“ anwenden möchten, aktualisieren Sie den Bereich „Abfragen“. Die Syntax für diese Widgets entspricht der unter Allgemeine Syntax angegebenen Syntax.
Console
In der folgenden Abfrage wird beispielsweise mit einem regulären Ausdruck der Wert des Felds jsonPayload.message
mit einem Stringwert verglichen, der den Wert einer labelbasierten Variablen enthält:
jsonPayload.message=~"Connected to instance: ${my_label_based_variable.value}"
Angenommen, Sie haben eine Variable vom Typ „Nur Wert“, value_only_severity_variable
, und im Menü mit den Werten sind drei Werte ausgewählt: ERROR
, INFO
und NOTICE
.
Fügen Sie als Nächstes Folgendes in den Abfragebereich des Widgets für den Logbereich ein:
severity =~ "${value_only_severity_variable}"
Im Folgenden ist das gerenderte Formular zu sehen:
severity =~ "^(ERROR|INFO|NOTICE)$"
API
Im folgenden JSON-Beispiel wird beispielsweise veranschaulicht, wie eine labelbasierte Variable auf die Abfrage eines Logs-Steuerfeld-Widgets angewendet wird:
"logsPanel": { "filter": "${my_label_based_variable}", "resourceNames": [ "projects/1234512345" ] },
In der folgenden Abfrage wird beispielsweise mit einem regulären Ausdruck der Wert des Felds jsonPayload.message
mit einem Stringwert verglichen, der den Wert einer labelbasierten Variablen enthält:
"logsPanel": { "filter": "resource.type=\"gce_instance\"\n resource.labels.project_id=~\"${my_label_based_variable.value}\"\n", "resourceNames": [ "projects/012345" ] }
Angenommen, Sie haben eine Variable vom Typ „Nur Wert“, value_only_severity_variable
, und im Menü sind drei Werte ausgewählt: ERROR
, INFO
und NOTICE
.
Fügen Sie als Nächstes Folgendes in den Abfragebereich des Widgets für den Logbereich ein:
"logsPanel": {
"filter": "severity =~ \"${value_only_severity_variable}\"\n",
...
}
Im Folgenden wird die Abfrage dargestellt, die vom Widget „Logbereich“ ausgeführt wird:
severity =~ "^(ERROR|INFO|NOTICE)$"
Wenn Sie eine Abfrage für den Logbereich konfiguriert und dann die Schaltfläche zum Öffnen des Log-Explorers ausgewählt haben, werden die Variablen aufgelöst, bevor der Log-Explorer geöffnet wird.
In der folgenden Tabelle wird veranschaulicht, wie die Beispielvariablen im Bereich „Protokolle“ aufgelöst werden. Wie bereits erwähnt, müssen Sie als Vergleichsoperator einen regulären Ausdruck verwenden, wenn nur der Wert einer Variablen verwendet wird:
Syntax | Ausgewählter Wert |
Ausdruck für den Bereich mit den gelösten Protokollen |
---|---|---|
${my_label_based_variable} |
12345 |
resource.labels."instance_id"="12345"
Die Beispielvariable basiert auf dem Ressourcenlabel |
${my_label_based_variable} |
* |
"" |
${my_label_based_variable.value} ${my_value_based_variable} |
12345 |
12345 |
${my_label_based_variable.value} ${my_value_based_variable} |
* |
.* |
Diagramme mit PromQL-Abfragen
Wenn Sie eine labelbasierte Variable auf ein Diagramm mit einer PromQL-Abfrage anwenden möchten, folgen Sie der Anleitung unter Allgemeine Syntax.
Console
In der folgenden Abfrage wird beispielsweise davon ausgegangen, dass die labelbasierte Variable my_label_based_variable
in einen Filterausdruck aufgelöst wird:
compute_googleapis_com:instance_cpu_utilization{ monitored_resource="gce_instance", ${my_label_based_variable} }
Sie können die Abfrage auch so ändern, dass nur der Wert einer Variablen ermittelt wird.
Im folgenden Beispiel wird mit einem regulären Ausdruck der Wert einer labelbasierten Abfrage mit dem instance_id
verglichen:
compute_googleapis_com:instance_cpu_utilization{ instance_id=~"${my_label_based_variable.value}" }
Wenn es sich um eine Variable mit nur einem Wert handelt, lassen Sie die .value
-Klausel weg. Wenn Sie beispielsweise mit einer Variablen, die nur Werte enthält, nach Zone filtern möchten, würde die Abfrage in etwa so aussehen:
zone=~"${my_value_only_variable}"
API
Das folgende JSON-Beispiel zeigt beispielsweise eine Abfrage, bei der die labelbasierte Variable my_label_based_variable
in einen Filterausdruck umgewandelt wird:
"timeSeriesQuery": { "prometheusQuery": "avg_over_time( compute_googleapis_com:instance_cpu_utilization{ monitored_resource=\"gce_instance\", ${my_label_based_variable} }[${__interval}])", "unitOverride": "", "outputFullDuration": false },
Sie können die Abfrage auch so ändern, dass nur der Wert einer Variablen ermittelt wird.
Im folgenden Beispiel wird mit einem regulären Ausdruck der Wert einer labelbasierten Abfrage mit dem instance_id
verglichen:
"timeSeriesQuery": { "prometheusQuery": "avg_over_time( compute_googleapis_com:instance_cpu_utilization{ monitored_resource=\"gce_instance\", instance_id=~\"${my_label_based_variable.value}\" }[${__interval}])", "unitOverride": "", "outputFullDuration": false },
Wenn es sich um eine Variable mit nur einem Wert handelt, lassen Sie die .value
-Klausel weg. Wenn Sie beispielsweise mit einer Variablen, die nur Werte enthält, nach Zone filtern möchten, würde die Abfrage in etwa so aussehen:
zone=~\"${my_value_only_variable}\"
In der folgenden Tabelle wird veranschaulicht, wie die Beispielvariablen von PromQL aufgelöst werden. Wie bereits erwähnt, müssen Sie als Vergleichsoperator einen regulären Ausdruck verwenden, wenn nur der Wert einer Variablen verwendet wird:
Syntax | Ausgewählter Wert |
Aufgelöster PromQL-Ausdruck |
---|---|---|
${my_label_based_variable} |
12345 |
instance_id == '12345'
Die Beispielvariable basiert auf dem Ressourcenlabel |
${my_label_based_variable} |
* |
noop_filter=~".*" |
${my_label_based_variable.value} ${my_value_based_variable} |
12345 |
12345 |
${my_label_based_variable.value} ${my_value_based_variable} |
* |
.+ |
Diagramme mit SQL-Abfragen
Wenn Sie eine Variable auf ein SQL-definiertes Widget anwenden möchten, aktualisieren Sie die WHERE
-Klausel, damit sie auf den Wert der Variablen verweist.
Setzen Sie vor allen Variablennamen das At-Zeichen, z. B.: @variable_name
. Fügen Sie bei labelbasierten Variablen dem Variablennamen @my_label_based_variabe.value
das Präfix .value
hinzu.
Bei SQL-Abfragen erfolgt die Variablensubstitution über BigQuery und ist vor SQL-Injection geschützt. Weitere Informationen finden Sie unter Parametrisierte Abfragen ausführen.
Console
Da der Platzhalteroperator in SQL nicht als „beliebiger Wert“ interpretiert wird, empfehlen wir, immer eine IF
-Anweisung zu verwenden, wenn Sie Variablen auf eine SQL-Abfrage anwenden. Im folgenden Beispiel wird die Verwendung einer Variablen mit nur einem Wert veranschaulicht, deren Datentyp ein String ist:
WHERE IF(@my_value_only_variable = "*", TRUE, log_name = @my_value_only_variable)
Wenn Nutzer über die Menüoption für die Variable mehrere Werte auswählen können, müssen Sie den Wert der Variablen mithilfe der Funktion CAST
in einen GoogleSQL-Datentyp umwandeln.
Die folgende Abfrage veranschaulicht diese Syntax:
IF(ARRAY_LENGTH(CAST(@my_value_only_variable)) = 0, TRUE, severity IN UNNEST(@my_value_only_variable))
Die in den vorherigen Beispielen gezeigte IF
-Anweisung wird empfohlen, da der Platzhalter in SQL nicht als „beliebiger Wert“ interpretiert wird. Wenn Sie die Anweisung IF
weglassen und den Platzhalteroperator auswählen, ist das Ergebnis der Abfrage eine leere Tabelle. Im zweiten Beispiel wird das Array mit der Funktion UNNEST
in eine Tabelle umgewandelt.
So fügen Sie eine korrekt formatierte WHERE
-Klausel hinzu:
- Bearbeiten Sie das Widget.
- Wählen Sie in der Symbolleiste Variablenfilter einfügen und dann die Variable aus, die Sie auf die
WHERE
-Klausel anwenden möchten. - Prüfen Sie im angezeigten Dialogfeld den generierten Code und klicken Sie dann auf Kopieren und schließen.
Fügen Sie den kopierten Code in den Bereich Abfrage ein und nehmen Sie die erforderlichen Änderungen vor.
Angenommen, Sie erstellen eine Variable namens
LogName
, die eine Liste von Protokollnamen generiert und das Ergebnis in einer Tabelle mit einer einzelnen Spalte namenslog_name
ausgibt. Als Nächstes erstellen Sie ein Diagramm, wählen Variablenfilter einfügen und dann die VariableLogName
aus. Der folgende Code wird generiert:WHERE IF(@LogName = '*', TRUE, LogName = @LogName)
In diesem Beispiel müssen Sie den generierten Code bearbeiten und
LogName =
durchlog_name =
ersetzen, damit die Tabellenverknüpfung erfolgen kann:WHERE IF(@LogName = '*', TRUE, log_name = @LogName)
Klicken Sie auf Ausführen und dann auf Übernehmen.
Klicken Sie in der Symbolleiste auf Speichern, um das geänderte Dashboard zu speichern.
API
Da der Platzhalteroperator in SQL nicht als „beliebiger Wert“ interpretiert wird, empfehlen wir, immer eine IF
-Anweisung zu verwenden, wenn Sie Variablen auf eine SQL-Abfrage anwenden. Im folgenden Beispiel wird die Verwendung einer Variablen mit nur einem Wert veranschaulicht, deren Datentyp ein String ist:
WHERE IF(@my_value_only_variable = "*", TRUE, log_name = @my_value_only_variable)
Im Folgenden sehen Sie beispielsweise eine teilweise JSON-Darstellung eines Diagramms, in dem die Ergebnisse einer SQL-Abfrage angezeigt werden. Um die Ergebnisse nach dem Namen eines Protokolls filtern zu können, wurde eine WHERE
-Klausel hinzugefügt, die auf die Variable LogName
verweist:
"plotType": "STACKED_BAR", "targetAxis": "Y1", "timeSeriesQuery": { "opsAnalyticsQuery": { "queryExecutionRules": {}, "queryHandle": "", "sql": "SELECT\n timestamp, severity, resource.type, log_name, text_payload, proto_payload, json_payload\n FROM\n `my-project.global._Default._Default`\n WHERE \n IF (@LogName = \"*\", TRUE, log_name=@LogName)\nLIMIT 10000" } }
Die Variable LogName
gibt auch eine Abfrage aus, um die Liste der möglichen Protokollnamen zu ermitteln:
"dashboardFilters": [ { "filterType": "VALUE_ONLY", "templateVariable": "LogName", "valueType": "STRING", "timeSeriesQuery": { "opsAnalyticsQuery": { "savedQueryId": "", "sql": "SELECT log_name FROM `my-project.global._Default._Default` GROUP BY log_name LIMIT 1000", "queryHandle": "" }, "unitOverride": "", "outputFullDuration": false } } ],
Wenn Nutzer über die Menüoption für die Variable mehrere Werte auswählen können, müssen Sie den Wert der Variablen mithilfe der Funktion CAST
in einen GoogleSQL-Datentyp umwandeln.
Die folgende Abfrage veranschaulicht diese Syntax:
IF(ARRAY_LENGTH(CAST(@my_value_only_variable)) = 0, TRUE, severity IN UNNEST(@my_value_only_variable))
Die in den vorherigen Beispielen gezeigte IF
-Anweisung wird empfohlen, da der Platzhalter in SQL nicht als „beliebiger Wert“ interpretiert wird. Wenn Sie die Anweisung IF
weglassen und den Platzhalteroperator auswählen, ist das Ergebnis der Abfrage eine leere Tabelle. Im zweiten Beispiel wird das Array mit der Funktion UNNEST
in eine Tabelle umgewandelt.
Diagramme mit MQL-Abfragen
Wenn Sie eine labelbasierte Variable auf ein Diagramm mit einer MQL-Abfrage anwenden möchten, fügen Sie ein Pipesymbol (|)
an und folgen Sie der Anleitung unter Allgemeine Syntax.
Wenn Sie über die menügesteuerte Benutzeroberfläche ein Diagramm mit Zeitreihendaten erstellen, werden Ihre Auswahlen in einen Monitoring-Filter umgewandelt.
Console
In der folgenden Abfrage wird beispielsweise eine labelbasierte Variable (my_label_based_variable
) in einen Filterausdruck umgewandelt:
fetch gce_instance | metric 'compute.googleapis.com/instance/cpu/utilization' | every 1m | ${my_label_based_variable}
Sie können die Abfrage auch so ändern, dass nur der Wert einer Variablen ermittelt wird.
Im folgenden Beispiel wird mit einem regulären Ausdruck der Wert einer labelbasierten Abfrage mit dem instance_id
verglichen:
fetch gce_instance | metric 'compute.googleapis.com/instance/cpu/utilization' | filter resource.instance_id=~'${my_label_based_variable.value}' | group_by 1m, [value_utilization_mean: mean(value.utilization)] | every 1m
Wenn es sich um eine Variable mit nur einem Wert handelt, lassen Sie die .value
-Klausel weg. Wenn Sie beispielsweise mit einer Variablen, die nur Werte enthält, nach Zone filtern möchten, würde die Abfrage in etwa so aussehen:
resource.zone=~'${my_value_only_variable}'
API
Das folgende JSON-Beispiel zeigt beispielsweise eine Abfrage, bei der eine labelbasierte Variable (my_label_based_variable
) in einen Filterausdruck umgewandelt wird:
"timeSeriesQuery": { "timeSeriesQueryLanguage": "fetch gce_instance\n | metric 'compute.googleapis.com/instance/cpu/utilization'\n | group_by 1m, [value_utilization_mean: mean(value.utilization)]\n | every 1m\n | ${my_label_based_variable}", "unitOverride": "", "outputFullDuration": false },
Sie können die Abfrage auch so ändern, dass nur der Wert einer Variablen ermittelt wird.
Im folgenden Beispiel wird mit einem regulären Ausdruck der Wert einer labelbasierten Abfrage mit dem instance_id
verglichen:
"timeSeriesQuery": { "timeSeriesQueryLanguage": "fetch gce_instance\n | metric 'compute.googleapis.com/instance/cpu/utilization'\n | filter resource.instance_id=~'${my_label_based_variable.value}'\n | group_by 1m, [value_utilization_mean: mean(value.utilization)]\n | every 1m\n", "unitOverride": "", "outputFullDuration": false },
Wenn es sich um eine Variable mit nur einem Wert handelt, lassen Sie die .value
-Klausel weg. Wenn Sie beispielsweise mit einer Variablen, die nur Werte enthält, nach Zone filtern möchten, würde die Abfrage in etwa so aussehen:
resource.zone=~'${my_value_only_variable}'
In der folgenden Tabelle wird veranschaulicht, wie die Beispielvariablen in der MQL aufgelöst werden. Wie bereits erwähnt, müssen Sie als Vergleichsoperator einen regulären Ausdruck verwenden, wenn nur der Wert einer Variablen verwendet wird:
Syntax | Ausgewählter Wert |
Aufgelöster MQL-Ausdruck |
---|---|---|
${my_label_based_variable} |
12345 |
filter (resource.instance_id == '12345')
Die Beispielvariable basiert auf dem Ressourcenlabel |
${my_label_based_variable} |
* |
filter (true) |
${my_label_based_variable.value} ${my_value_based_variable} |
12345 |
12345 |
${my_label_based_variable.value} ${my_value_based_variable} |
* |
.* |
Diagramme mit Monitoring-Filterabfragen
Wenn Sie eine labelbasierte Variable auf ein Diagramm mit einer Abfrage in Form eines Überwachungsfilters anwenden möchten, folgen Sie der Anleitung unter Allgemeine Syntax.
Console
Wenn Sie die Google Cloud Console zum Erstellen von Diagrammen verwenden und die menübasierte Benutzeroberfläche nutzen, können Sie eine labelbasierte Variable auf ein Diagramm anwenden. Verwenden Sie dazu das Feld Auf Diagramme anwenden der Variablen oder bearbeiten Sie das Widget und wählen Sie im Menü Filter die Option „Labelbasierte Variable“ aus. Im Menü Filter werden alle labelbasierten Variablen und alle Labelschlüssel aufgeführt.
So wenden Sie eine wertbezogene Variable auf diese Diagrammtypen an:
- Das Diagramm bearbeiten.
- Klicken Sie im Abfragebereich auf Filter hinzufügen und wählen Sie einen Labelschlüssel aus. Sie können beispielsweise zone auswählen.
- Wählen Sie im Menü Wert die Variable aus, die nur einen Wert enthält.
- Klicken Sie auf Anwenden.
- Klicken Sie in der Symbolleiste auf Speichern, um das geänderte Dashboard zu speichern.
Das folgende JSON-Beispiel zeigt beispielsweise eine Abfrage, bei der eine labelbasierte Variable (my_label_based_variable
) in einen Filterausdruck umgewandelt wird:
metric.type="compute.googleapis.com/instance/cpu/utilization" resource.type="gce_instance" ${my_label_based_variable}"
Bei Widgets, die eine Abfrage in Form eines Monitoring-Filters verwenden, kann die Zeitreihe nicht nach dem Wert in einer labelbasierten Variablen gefiltert werden. Sie können jedoch nach Variablen filtern, die nur Werte enthalten.
In der folgenden Abfrage wird beispielsweise der Wert des Felds Filter einer Abfrage angezeigt, die nach zone
filtert, basierend auf dem Wert einer Variablen vom Typ „Nur Wert“:
metric.type="compute.googleapis.com/instance/cpu/utilization" resource.type="gce_instance" resource.label."zone"=monitoring.regex.full_match(${my_value_only_variable})
API
Das folgende JSON-Beispiel zeigt beispielsweise eine Abfrage, bei der eine labelbasierte Variable (my_label_based_variable
) in einen Filterausdruck umgewandelt wird:
"timeSeriesQuery": { "timeSeriesFilter": { "filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\" resource.type=\"gce_instance\" ${my_label_based_variable} ", "aggregation": { "alignmentPeriod": "60s", "perSeriesAligner": "ALIGN_MEAN", "groupByFields": [] } }, "unitOverride": "", "outputFullDuration": false },
Bei Widgets, die eine Abfrage in Form eines Monitoring-Filters verwenden, kann die Zeitreihe nicht nach dem Wert in einer labelbasierten Variablen gefiltert werden. Sie können jedoch nach Variablen filtern, die nur Werte enthalten.
In der folgenden Abfrage ist beispielsweise das Feld "filter"
einer Abfrage zu sehen, die nach zone
filtert, basierend auf dem Wert einer Variablen vom Typ „Nur Wert“:
"filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\" resource.type=\"gce_instance\" resource.labels.\"zone\"=monitoring.regex.full_match(${my_value_only_variable})"
In der folgenden Tabelle wird veranschaulicht, wie die Beispielvariablen vom Monitoring-Filter aufgelöst werden. Wie bereits erwähnt, müssen Sie als Vergleichsoperator einen regulären Ausdruck verwenden, wenn nur der Wert einer Variablen verwendet wird:
Syntax | Ausgewählter Wert |
Aufgelöster Filterausdruck |
---|---|---|
${my_label_based_variable} |
12345 |
resource.instance_id == "12345"
Die Beispielvariable basiert auf dem Ressourcenlabel |
${my_label_based_variable} |
* |
Ausgelassen |
${my_label_based_variable.value} |
12345 |
Nicht unterstützt |
${my_label_based_variable.value} |
* |
Nicht unterstützt |
${my_value_based_variable} |
12345 |
"12345" |
${my_value_based_variable} |
* |
".*" |
Angepinnten Filter oder angepinnte Variable ändern
Wenn Sie den Wert eines Filters, der in der Dashboard-Symbolleiste angezeigt wird, vorübergehend ändern möchten, klicken Sie auf den Filternamen und geben Sie entweder einen Wert ein oder wählen Sie eine Option aus dem Menü aus.
Wenn Ihr Dashboard eine Tabelle mit Zeitreihendaten enthält, können Sie vorübergehende Filter hinzufügen oder permanente Filter und Variablen ändern. Klicken Sie dazu in einer Zelle auf die Schaltfläche filter_list Dashboard nach diesem Wert filtern. Wenn diese Schaltfläche ausgewählt ist, wird entweder ein neuer temporärer Filter angewendet oder der Wert für einen vorhandenen Filter oder eine vorhandene Variable aktualisiert. Vorhandene Filter und Variablen werden aktualisiert, wenn der Labelschlüssel der Tabellenspalte mit dem Labelschlüssel eines Filters oder einer Variablen übereinstimmt.
So ändern Sie die Konfiguration eines angepinnten Filters oder einer Variablen:
-
Rufen Sie in der Google Cloud Console die Seite Dashboards auf.
Wenn Sie diese Seite über die Suchleiste suchen, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift Monitoring ist.
- Klicken Sie in der Symbolleiste des Dashboards auf settings Einstellungen.
- Suchen Sie den Filter oder die Variable, die Sie ändern möchten, und maximieren Sie die Definition.
- Klicken Sie abschließend auf Übernehmen.
- Klicken Sie in der Symbolleiste auf Speichern, um das geänderte Dashboard zu speichern.
Angepinnten Filter oder angepinnte Variable löschen
So löschen Sie einen angepinnten Filter oder eine Variable:
-
Rufen Sie in der Google Cloud Console die Seite Dashboards auf.
Wenn Sie diese Seite über die Suchleiste suchen, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift Monitoring ist.
- Klicken Sie in der Symbolleiste des Dashboards auf settings Einstellungen.
- Suchen Sie den Filter oder die Variable, die Sie entfernen möchten, und klicken Sie dann auf Löschen.
- Klicken Sie auf Anwenden.
- Klicken Sie in der Symbolleiste auf Speichern, um das geänderte Dashboard zu speichern.