Variablen und angepinnte Filter erstellen und verwalten

In diesem Dokument wird beschrieben, wie Sie Filter auf Dashboard-Ebene anpinnen, damit sie dauerhaft sind. Angepinnte Filter, mit denen Sie die in einem Dashboard angezeigten Daten ändern können, ohne jedes Widget einzeln bearbeiten zu müssen, haben einen Standardstatus und werden auf das gesamte Dashboard angewendet. In der Dashboard-Symbolleiste wird jeder angepinnte Filter zusammen mit einem Menü angezeigt, in dem Sie den Wert des Filters vorübergehend ändern können.

Variablen ähneln angepinnten Filtern, werden aber nur auf bestimmte Widgets angewendet. In diesem Dokument wird beschrieben, wie Sie Variablen erstellen und mit einem Widget anwenden. Mit einer Variablen kann die Abfrage des Widgets geändert oder die Sichtbarkeit eines Widgets gesteuert werden. In der Dashboard-Symbolleiste wird jede Variable mit ihrem Namen angezeigt. Außerdem gibt es ein Menü, in dem Sie den Wert der Variable vorübergehend ändern können. Damit Sie Filter und Variablen besser unterscheiden können, wird in der Symbolleiste dem Namen einer Variablen ein Dollarzeichen $ vorangestellt.

In diesem Dokument wird beschrieben, wie Sie in der Google Cloud -Konsole 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.

Diese Funktion wird nur für Google Cloud -Projekte unterstützt. Wählen Sie für App Hub-Konfigurationen das App Hub-Hostprojekt oder das Verwaltungsprojekt des für Apps aktivierten Ordners aus.

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 in Ihrem Dashboard angezeigt werden. Informationen zur Struktur eines Filters finden Sie unter DashboardFilter.

Angepinnte Filter werden nicht auf einzelne Widgets angewendet. Stattdessen gelten die folgenden Regeln, um zu bestimmen, ob der angepinnte Filter die im Widget angezeigten Daten ändern kann:

  • Wenn im Widget Daten angezeigt werden, die den durch einen angepinnten Filter angegebenen Labelschlüssel enthalten, 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 Diagrammen werden dann automatisch nur die Zeitreihen mit dem Label cluster_name und dem Wert mycluster angezeigt. Ebenso werden die Abfragen für die Widgets im Logbereich in resource.labels."cluster_name"="mycluster" geändert und in Ihren Diagrammen werden 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 wenn 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.

In der Dashboard-Symbolleiste wird Variablennamen ein Dollarzeichen $ vorangestellt. Wenn Sie auch das Symbol  Sichtbar sehen, steuert die Variable die Sichtbarkeit von mindestens einem Widget.

Variablen können entweder labelbasiert sein oder nur einen Wert haben:

  • Labelbasierte Variablen sind wie angepinnte Filter. 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 in Ihrem Dashboard angezeigt werden.

  • Variablen, die nur Werte enthalten, haben einen oder mehrere Standardwerte und enthalten möglicherweise alle möglichen Werte. Wenn Sie keinen Standardwert angeben, wird der Platzhalteroperator (*) als Standardwert ausgewählt. Um die Menge aller möglichen Werte zu definieren, geben Sie entweder ein Array von Werten an oder schreiben 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 auf prod festlegen.

    • Texteingabe: Verwenden Sie diese Option, wenn Sie nicht alle möglichen Werte kennen. Sie möchten beispielsweise nach URL filtern, kennen aber beim Erstellen der Variablen nicht die genaue Liste der URLs. 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 für die Variablendefinition speichern.

    • SQL-Abfrage: Verwenden Sie diese Option, wenn Sie die Liste der möglichen Werte mit einer SQL-Abfrage generieren möchten. Diese Variablen sind für Diagramme vorgesehen, 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 SQL-Abfrage darf nicht von einer Variablen abhängen.

Wenn Sie eine Variable auf ein Widget anwenden möchten, aktualisieren Sie entweder die vom Widget ausgegebene Abfrage oder die Sichtbarkeit des Widgets. Sie können das Widget jederzeit bearbeiten, um die zugehörige Abfrage zu aktualisieren. Bei labelbasierten Variablen und einigen Widget-Typen können Sie die Abfrage jedoch durch Menüauswahlen aktualisieren. Wenn Sie die Sichtbarkeit ändern möchten, müssen Sie das Widget bearbeiten. Weitere Informationen finden Sie in den folgenden Abschnitten dieses Dokuments:

Hinweise

Führen Sie die folgenden Schritte für das Google Cloud Projekt aus, in dem Sie Filter und Variablen konfigurieren möchten:

Filter erstellen und anpinnen

So erstellen und fixieren Sie einen Filter, der auf alle Dashboard-Widgets angewendet wird, die Filter unterstützen:

  1. Rufen Sie in der Google Cloud Console die Seite  Dashboards auf:

    Dashboards aufrufen

    Wenn Sie diese Seite über die Suchleiste suchen, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift Monitoring ist.

  2. Wählen Sie in der Symbolleiste der Google Cloud -Console Ihr Google Cloud -Projekt aus. Wählen Sie für App Hub-Konfigurationen das App Hub-Hostprojekt oder das Verwaltungsprojekt des für Apps aktivierten Ordners aus.
  3. Wählen Sie ein Dashboard aus, rufen Sie die Dashboard-Symbolleiste auf und klicken Sie auf  Einstellungen.
  4. Klicken Sie im Abschnitt Filter auf Filter hinzufügen.
  5. Klicken Sie auf  Label und wählen Sie ein Label aus. Sie können beispielsweise zone auswählen.
  6. Wenn ein Nutzer mehrere Werte aus dem Wertmenü der Variablen auswählen soll, wählen Sie Mehrfachauswahl aus. Wenn Mehrfachauswahl nicht aktiviert ist, können Nutzer nur eine Option aus dem Wertmenü auswählen.
  7. Klicken Sie auf  Standardwert und wählen Sie dann den oder die Standardwerte für das Label aus. Wenn alle Werte berücksichtigt werden sollen, wählen Sie * aus.

    Nachdem der Filter erstellt wurde, wird er der Symbolleiste des Dashboards 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ü.

  8. Klicken Sie auf Fertig und dann auf Anwenden.

  9. Klicken Sie zum Speichern des geänderten Dashboards in der Symbolleiste auf Speichern.

Erstellen Sie eine Variable

So erstellen Sie eine Variable, die für bestimmte Dashboard-Widgets gilt:

  1. Rufen Sie in der Google Cloud Console die Seite  Dashboards auf:

    Dashboards aufrufen

    Wenn Sie diese Seite über die Suchleiste suchen, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift Monitoring ist.

  2. Wählen Sie in der Symbolleiste der Google Cloud -Console Ihr Google Cloud -Projekt aus. Wählen Sie für App Hub-Konfigurationen das App Hub-Hostprojekt oder das Verwaltungsprojekt des für Apps aktivierten Ordners aus.
  3. Wählen Sie ein Dashboard aus, rufen Sie die Dashboard-Symbolleiste auf und klicken Sie auf  Einstellungen.
  4. Klicken Sie im Bereich Variablen auf Variable hinzufügen.
  5. Wählen Sie den Variablentyp aus und füllen Sie das Dialogfeld aus.

    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 in Ihrem Dashboard angezeigt werden. Im Menü Auf Diagramme anwenden können Sie die Widgets auswählen, deren Abfrage durch die Variable geändert werden soll. Sie können die Abfrage auch aktualisieren, indem Sie das Widget bearbeiten.

    Für Variablen, die nur Werte enthalten, haben Sie die folgenden Optionen:

    • SQL: Verwenden Sie diese Option, wenn die Liste aller möglichen Werte aus den Ergebnissen einer SQL-Abfrage generiert werden soll.

      Geben Sie einen oder mehrere Standardwerte und eine SQL-Abfrage ein, mit der die Liste aller möglichen Werte generiert wird. Das Ergebnis der Abfrage muss eine Tabelle mit einer Spalte sein, deren Datentyp „string“ ist. 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 auf prod festlegen.

    • Texteingabe: Verwenden Sie diese Option, wenn Sie eine Liste von Werten angeben möchten, die als Standardwerte angewendet werden.

  6. Klicken Sie auf Fertig und dann auf Anwenden.

  7. Klicken Sie zum Speichern des geänderten Dashboards in der Symbolleiste auf Speichern.

  8. Wenden Sie die Variable auf Widgets an. Wenn Sie die Abfrage eines Widgets aktualisieren und dann den Wert der Variablen ändern, wird die Abfrage geändert und die Daten, die im Widget angezeigt werden, werden ebenfalls geändert. Sie können auch eine Variable verwenden, um zu steuern, ob ein Widget sichtbar ist. Weitere Informationen finden Sie in den folgenden Abschnitten dieses Dokuments:

Sichtbarkeit eines Widgets festlegen

Wenn ein Widget Daten abfragt, können Sie mit einer Variablen steuern, ob das Widget in einem Dashboard sichtbar ist. Angenommen, ein Dashboard enthält Widgets, in denen Daten für Ihre Produktionssysteme angezeigt werden, und eine weitere Gruppe von Widgets, in denen Daten für Ihre Staging-Systeme angezeigt werden. Beim Debuggen während der Entwicklung möchten Sie möglicherweise nur die Staging-Daten sehen. Wenn Sie die Sichtbarkeit der Dashboard-Widgets mit einer Variablen konfigurieren, können Sie zwischen Produktionsdaten, Stagingdaten und allen Daten wechseln.

Mit jeder Art von Variable kann gesteuert werden, ob ein Widget sichtbar oder ausgeblendet ist.

So konfigurieren Sie die Sichtbarkeit eines Widgets:

  1. Rufen Sie in der Google Cloud Console die Seite  Dashboards auf:

    Dashboards aufrufen

    Wenn Sie diese Seite über die Suchleiste suchen, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift Monitoring ist.

  2. Wählen Sie ein Dashboard aus.
  3. Klicken Sie in der Symbolleiste des Widgets, dessen Sichtbarkeit Sie konfigurieren möchten, auf  Bearbeiten.
  4. Maximieren Sie im Bereich Anzeige die Option Sichtbarkeit des Widgets.
  5. Wählen Sie eine Variable aus und füllen Sie das Dialogfeld aus.

  6. Klicken Sie auf Fertig und dann auf Anwenden.

  7. Klicken Sie zum Speichern des geänderten Dashboards in der Symbolleiste auf Speichern.

    Das Dashboard wird aktualisiert. Wenn mindestens ein Widget im Dashboard aufgrund von Sichtbarkeitskontrollen ausgeblendet ist, wird im Dashboard ein Banner angezeigt. Wenn Sie alle Widgets sehen möchten, klicken Sie auf Alle Widgets anzeigen.

Wenn Sie eine Variable verwenden, um die Sichtbarkeit von mindestens einem Widget in Ihrem Dashboard zu steuern, wird der Variablenname in der Symbolleiste mit dem Symbol  Sichtbar gekennzeichnet.

Beschränkungen

Beim Konfigurieren der Sichtbarkeit eines Widgets gelten die folgenden Einschränkungen:

  • Organisations-Widgets wie das Widget für eine minimierbare Gruppe, die Abschnittsüberschrift und die Einzelansicht sind immer sichtbar.

  • Sie können eine Variable löschen, auf die von den Sichtbarkeitssteuerungen eines Widgets verwiesen wird. Durch das Löschen der Variablen werden auch alle Verweise auf die Variable entfernt.

  • Nicht alle Dashboards unterstützen das Erstellen von Variablen. Wenn ein Dashboard jedoch Variablen enthält, können Sie damit die Sichtbarkeit von Widgets im Dashboard verwalten.

Abfrage eines Widgets aktualisieren

In diesem Abschnitt wird beschrieben, wie Sie Variablen in die Abfrage einfügen, die vom Widget ausgegeben wird. Wenn Sie den Wert der Variablen ändern, wird die Abfrage entsprechend angepasst und die Daten, die im Widget angezeigt werden, werden geändert:

  • Bei Diagrammen, für die SQL-, PromQL- oder MQL-Abfragen verwendet werden, und bei Logfeld-Widgets 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 von Monitoring bearbeitet, wenn Sie das Widget über das Menü Auf Diagramme anwenden auswählen. Alternativ können Sie das Widget bearbeiten, zum Feld Filter wechseln und die Variable auswählen.

Informationen zum Aktualisieren der Abfrage eines Widgets mit einer labelbasierten oder einer reinen Wertvariablen finden Sie in den folgenden Abschnitten:

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.

  • Um eine Variable zu erstellen, legen Sie den Wert des Felds templateVariable auf den Namen der Variable fest. Lassen Sie dieses Feld weg 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 weg, wenn Sie eine Variable nur mit einem Wert haben möchten.
  • 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 oder mehrere Werte auswählen kann.

    • Wenn Sie einen einzelnen Standardwert festlegen und Nutzer darauf beschränken möchten, genau eine Option im Menü „Werte“ auszuwählen, legen Sie das Feld valueType auf STRING und das Feld stringValue fest:
    "valueType": "STRING",
    "stringValue": "my-default-value",
    
    • Wenn Sie mindestens einen Standardwert festlegen und Nutzern erlauben möchten, mehrere Optionen im Menü „Werte“ auszuwählen, legen Sie das Feld valueType auf STRING_ARRAY fest und legen Sie auch das Feld stringArrayValue fest. Im folgenden Beispiel gibt es drei Standardwerte.
    "valueType": "STRING_ARRAY",
    "stringArrayValue": {
      "values": [ "a", "b", "c" ]
    },
    
  • Optional: Wenn Sie die Liste aller möglichen Werte für eine Variable mit nur einem Wert angeben möchten, legen Sie entweder das Feld stringArray oder das Feld timeSeriesQuery 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 Felder valueType und stringValue geben den einzelnen Standardwert an. Weitere Informationen finden Sie auf der Seite „API-Referenzen“ für die Datenstruktur dashboardFilters.

  • Die labelbasierte Variable hat den Namen my_label_based_variable und den Labelschlüssel instance_id. Der Standardwert für diese Variable ist auf eine bestimmte Instanz-ID festgelegt. Sie können den Standardwert auch mit einem Array konfigurieren. In der Symbolleiste wird der Filter mit dem Namen my_label_based_variable angezeigt.

  • Die Variable, die nur den Wert enthält, heißt my_value_only_variable. Für diesen Eintrag ist kein Standardwert angegeben. Daher wird automatisch der Platzhalteroperator (*) 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 die Widgets, auf die sich die Variable bezieht, nicht aufgeführt. Stattdessen aktualisieren Sie die Abfrage eines Widgets, sodass sie von einer Variablen abhängt.

Allgemeine Syntax zum Dereferenzieren einer Variablen

Verwenden Sie für alle Widgets, die nicht durch SQL definiert werden, die folgende Syntax, um eine Variable auf eine Abfrage anzuwenden:

  • Wenn Sie eine labelbasierte Variable anwenden und der Labelschlüssel und der Labelwert in einen gültigen Filterausdruck für die Abfragesprache aufgelöst werden sollen, 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, die nur einen Wert enthält, verwenden Sie ${my_value_only_variable}. Für Variablen, die nur Werte enthalten, darf keine .value-Klausel angegeben werden. 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 „Logs“ 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 ein regulärer Ausdruck verwendet, um den Wert des Felds jsonPayload.message mit einem Stringwert zu vergleichen, der den Wert einer labelbasierten Variablen enthält:

jsonPayload.message=~"Connected to instance: ${my_label_based_variable.value}"

Nehmen wir als weiteres Beispiel eine Variable mit nur Werten, value_only_severity_variable, an und gehen wir davon aus, dass im Menü der Werte drei Werte ausgewählt sind: ERROR, INFO und NOTICE. Fügen Sie als Nächstes Folgendes in den Abfragebereich des Logbereich-Widgets ein:

severity =~ "${value_only_severity_variable}"

Das folgende Beispiel zeigt die gerenderte Form:

severity =~ "^(ERROR|INFO|NOTICE)$"

API

Das folgende JSON-Beispiel zeigt, wie Sie die Abfrage eines Protokollbereichs-Widgets mit einer labelbasierten Variablen aktualisieren:

"logsPanel": {
  "filter": "${my_label_based_variable}",
  "resourceNames": [
    "projects/1234512345"
  ]
},

In der folgenden Abfrage wird beispielsweise ein regulärer Ausdruck verwendet, um den Wert des Felds jsonPayload.message mit einem Stringwert zu vergleichen, 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"
  ]
}

Ein weiteres Beispiel: Angenommen, Sie haben eine Variable, die nur Werte enthält, 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 Logbereich-Widgets ein:

"logsPanel": {
  "filter": "severity =~ \"${value_only_severity_variable}\"\n",
  ...
}

Das folgende Beispiel zeigt die Abfrage, wie sie vom Widget für den Logbereich ausgeführt wird:

severity =~ "^(ERROR|INFO|NOTICE)$"

Wenn Sie eine Abfrage für den Logbereich konfiguriert haben und dann die Schaltfläche zum Öffnen des Log-Explorers auswählen, werden die Variablen aufgelöst, bevor der Log-Explorer geöffnet wird.

In der folgenden Tabelle wird veranschaulicht, wie die Beispielvariablen im Logbereich aufgelöst werden. Wie bereits erwähnt, müssen Sie einen regulären Ausdruck als Vergleichsoperator verwenden, wenn nur der Wert einer Variablen verwendet wird:

Syntax Ausgewählter
Wert
Aufgelöster Ausdruck für das Logfeld
${my_label_based_variable} 12345 resource.labels."instance_id"="12345"

Die Beispielvariable basiert auf dem Ressourcenlabel instance_id.

${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 ein Diagramm mit einer PromQL-Abfrage so aktualisieren möchten, dass es von einer labelbasierten Variablen abhängt, folgen Sie der Anleitung unter Allgemeine Syntax.

Console

In der folgenden Abfrage wird beispielsweise die labelbasierte Variable my_label_based_variable in einen Filterausdruck aufgelöst:

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 aufgelöst wird. Im folgenden Beispiel wird ein regulärer Ausdruck verwendet, um den Wert einer labelbasierten Abfrage mit instance_id zu vergleichen:

compute_googleapis_com:instance_cpu_utilization{
    instance_id=~"${my_label_based_variable.value}"
}

Wenn Sie eine Variable haben, die nur einen Wert enthält, lassen Sie die .value-Klausel weg. Wenn Sie beispielsweise nach Zone filtern möchten und dazu eine Variable verwenden, die nur Werte enthält, würde die Abfrage etwa so aussehen:

zone=~"${my_value_only_variable}"

API

Das folgende JSON-Beispiel zeigt eine Abfrage, bei der die labelbasierte Variable my_label_based_variable in einen Filterausdruck aufgelöst 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 aufgelöst wird. Im folgenden Beispiel wird ein regulärer Ausdruck verwendet, um den Wert einer labelbasierten Abfrage mit instance_id zu vergleichen:

"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 Sie eine Variable haben, die nur einen Wert enthält, lassen Sie die .value-Klausel weg. Wenn Sie beispielsweise nach Zone filtern möchten und dazu eine Variable verwenden, die nur Werte enthält, würde die Abfrage etwa so aussehen:

zone=~\"${my_value_only_variable}\"

Die folgende Tabelle veranschaulicht, wie die Beispielvariablen von PromQL aufgelöst werden. Wie bereits erwähnt, müssen Sie einen regulären Ausdruck als Vergleichsoperator 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 instance_id.

${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 ein SQL-definiertes Widget aktualisieren möchten, sodass es von einer Variablen abhängt, müssen Sie die WHERE-Klausel so aktualisieren, dass sie auf den Wert der Variablen verweist. Setzen Sie vor den Variablennamen das „at“-Zeichen, z. B. @variable_name. Hängen Sie bei labelbasierten Variablen .value an den Variablennamen @my_label_based_variabe.value an.

Bei SQL-Abfragen basiert die Variablensubstitution auf 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, bei der Verwendung von Variablen in einer SQL-Abfrage immer eine IF-Anweisung zu verwenden. Im folgenden Beispiel wird die Verwendung für eine Variable 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 mit 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 Platzhalteroperator in SQL nicht als „beliebiger Wert“ interpretiert wird. Wenn Sie die IF-Anweisung weglassen und den Platzhalteroperator auswählen, ist das Ergebnis der Abfrage also eine leere Tabelle. Im zweiten Beispiel wird das Array mit der Funktion UNNEST in eine Tabelle konvertiert.

So fügen Sie eine korrekt formatierte WHERE-Klausel hinzu:

  1. Bearbeiten Sie das Widget.
  2. Wählen Sie in der Symbolleiste Variablenfilter einfügen und dann die Variable aus, deren WHERE-Klausel Sie aktualisieren möchten.
  3. Sehen Sie sich den generierten Code im angezeigten Dialogfeld an und klicken Sie dann auf Kopieren und schließen.
  4. Fügen Sie den kopierten Code in den Bereich Abfrage ein und nehmen Sie die erforderlichen Änderungen vor.

    Angenommen, Sie erstellen eine Variable mit dem Namen LogName, die eine Liste von Log-Namen generiert und das Ergebnis in einer Tabelle mit einer einzelnen Spalte namens log_name ausgibt. Als Nächstes erstellen Sie ein Diagramm, wählen Variablenfilter einfügen aus und wählen dann die Variable LogName aus. Der folgende Code wird generiert:

    WHERE IF(@LogName = '*', TRUE, LogName = @LogName)
    

    In diesem Beispiel müssen Sie den generierten Code bearbeiten und LogName = durch log_name = ersetzen, damit die Tabellenverknüpfung erfolgen kann:

    WHERE IF(@LogName = '*', TRUE, log_name = @LogName)
    
  5. Klicken Sie auf Ausführen und dann auf Anwenden.

  6. Klicken Sie zum Speichern des geänderten Dashboards in der Symbolleiste auf Speichern.

API

Da der Platzhalteroperator in SQL nicht als „beliebiger Wert“ interpretiert wird, empfehlen wir, bei der Verwendung von Variablen in einer SQL-Abfrage immer eine IF-Anweisung zu verwenden. Im folgenden Beispiel wird die Verwendung für eine Variable 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. Damit die Ergebnisse nach dem Namen eines Logs gefiltert werden 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 führt auch eine Anfrage 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 mit 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 Platzhalteroperator in SQL nicht als „beliebiger Wert“ interpretiert wird. Wenn Sie die IF-Anweisung weglassen und den Platzhalteroperator auswählen, ist das Ergebnis der Abfrage also eine leere Tabelle. Im zweiten Beispiel wird das Array mit der Funktion UNNEST in eine Tabelle konvertiert.

Diagramme mit MQL-Abfragen

Wenn Sie in einem Diagramm, für das eine MQL-Abfrage verwendet wird, eine labelbasierte Variable verwenden möchten, hängen Sie ein Pipe-Zeichen ((|)) an und folgen Sie dann der Anleitung unter Allgemeine Syntax.

Wenn Sie die menügesteuerte Benutzeroberfläche verwenden, um ein Diagramm mit Zeitachsendaten zu erstellen, werden Ihre Auswahlmöglichkeiten in einen Monitoring-Filter umgewandelt.

Console

In der folgenden Abfrage wird beispielsweise eine labelbasierte Variable, my_label_based_variable, in einen Filterausdruck aufgelöst:

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 aufgelöst wird. Im folgenden Beispiel wird ein regulärer Ausdruck verwendet, um den Wert einer labelbasierten Abfrage mit instance_id zu vergleichen:

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 Sie eine Variable haben, die nur einen Wert enthält, lassen Sie die .value-Klausel weg. Wenn Sie beispielsweise nach Zone filtern möchten und dazu eine Variable verwenden, die nur Werte enthält, würde die Abfrage etwa so aussehen:

resource.zone=~'${my_value_only_variable}'

API

Das folgende JSON-Beispiel zeigt eine Abfrage, bei der eine labelbasierte Variable (my_label_based_variable) in einen Filterausdruck aufgelöst 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 aufgelöst wird. Im folgenden Beispiel wird ein regulärer Ausdruck verwendet, um den Wert einer labelbasierten Abfrage mit instance_id zu vergleichen:

"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 Sie eine Variable haben, die nur einen Wert enthält, lassen Sie die .value-Klausel weg. Wenn Sie beispielsweise nach Zone filtern möchten und dazu eine Variable verwenden, die nur Werte enthält, würde die Abfrage etwa so aussehen:

resource.zone=~'${my_value_only_variable}'

In der folgenden Tabelle sehen Sie, wie die Beispielvariablen von MQL aufgelöst werden. Wie bereits erwähnt, müssen Sie einen regulären Ausdruck als Vergleichsoperator 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 instance_id.

${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 ein Diagramm mit einer Abfrage in Form eines Monitoring-Filters aktualisieren möchten, damit es von einer labelbasierten Variablen abhängt, folgen Sie der Anleitung unter Allgemeine Syntax.

Console

Wenn Sie die Google Cloud -Konsole zum Erstellen von Diagrammen verwenden und die menügesteuerte Oberfläche nutzen, können Sie die Abfrage des Diagramms über das Feld Auf Diagramme anwenden der Variablen aktualisieren. Alternativ können Sie das Widget bearbeiten und im Menü Filter eine labelbasierte Variable auswählen. Im Menü Filter werden alle labelbasierten Variablen und alle Labelschlüssel aufgeführt.

So aktualisieren Sie die Abfrage eines Diagramms, damit sie von einer wertbasierten Variablen abhängt:

  1. Das Diagramm bearbeiten.
  2. Klicken Sie im Bereich „Abfrage“ auf Filter hinzufügen und wählen Sie einen Labelschlüssel aus. Sie können beispielsweise Zone auswählen.
  3. Wählen Sie im Menü Wert die Variable aus, die nur Werte enthält.
  4. Klicken Sie auf Übernehmen.
  5. Klicken Sie zum Speichern des geänderten Dashboards in der Symbolleiste auf Speichern.

Das folgende JSON-Beispiel zeigt eine Abfrage, bei der eine labelbasierte Variable (my_label_based_variable) in einen Filterausdruck aufgelöst wird:

metric.type="compute.googleapis.com/instance/cpu/utilization"
resource.type="gce_instance" ${my_label_based_variable}"

Bei Widgets, für die eine Abfrage in Form eines Monitoring-Filters verwendet wird, kann die Zeitachse nicht nach dem Wert einer labelbasierten Variablen gefiltert werden. Sie können jedoch nach Variablen filtern, die nur Werte enthalten. Die folgende Abfrage zeigt beispielsweise den Wert des Felds Filters einer Abfrage, die nach zone filtert, basierend auf dem Wert einer Variable, die nur einen Wert enthält:

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 eine Abfrage, bei der eine labelbasierte Variable (my_label_based_variable) in einen Filterausdruck aufgelöst 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, für die eine Abfrage in Form eines Monitoring-Filters verwendet wird, kann die Zeitachse nicht nach dem Wert einer labelbasierten Variablen gefiltert werden. Sie können jedoch nach Variablen filtern, die nur Werte enthalten. Die folgende Abfrage zeigt beispielsweise das Feld "filter" einer Abfrage, die nach zone gefiltert wird, basierend auf dem Wert einer Variable, die nur einen Wert enthält:

"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 sehen Sie, wie die Beispielvariablen vom Monitoring-Filter aufgelöst werden. Wie bereits erwähnt, müssen Sie einen regulären Ausdruck als Vergleichsoperator 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 instance_id.

${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 Symbolleiste des Dashboards angezeigt wird, vorübergehend ändern möchten, klicken Sie auf den Filternamen und geben Sie einen Wert ein oder treffen Sie eine Auswahl im Menü.

Wenn Ihr Dashboard eine Tabelle mit Zeitreihendaten enthält, können Sie temporäre Filter hinzufügen oder permanente Filter und Variablen ändern, indem Sie die Schaltfläche Dashboard nach diesem Wert filtern in einer Zelle verwenden. 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 wird aktualisiert. Vorhandene Filter und Variablen werden aktualisiert, wenn der Labelschlüssel für die Tabellenspalte mit dem Labelschlüssel für einen Filter oder eine Variable übereinstimmt.

So ändern Sie die Konfiguration eines angepinnten Filters oder einer angepinnten Variablen:

  1. Rufen Sie in der Google Cloud Console die Seite  Dashboards auf:

    Dashboards aufrufen

    Wenn Sie diese Seite über die Suchleiste suchen, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift Monitoring ist.

  2. Wählen Sie in der Symbolleiste der Google Cloud -Console Ihr Google Cloud -Projekt aus. Wählen Sie für App Hub-Konfigurationen das App Hub-Hostprojekt oder das Verwaltungsprojekt des für Apps aktivierten Ordners aus.
  3. Klicken Sie in der Dashboard-Symbolleiste auf  Einstellungen.
  4. Suchen Sie nach dem Filter oder der Variablen, die Sie ändern möchten, und maximieren Sie die Definition.
  5. Wenn Sie mit den Änderungen fertig sind, klicken Sie auf Übernehmen.
  6. Klicken Sie zum Speichern des geänderten Dashboards in der Symbolleiste auf Speichern.

Angepinnten Filter oder angepinnte Variable löschen

So löschen Sie einen angepinnten Filter oder eine angepinnte Variable:

  1. Rufen Sie in der Google Cloud Console die Seite  Dashboards auf:

    Dashboards aufrufen

    Wenn Sie diese Seite über die Suchleiste suchen, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift Monitoring ist.

  2. Wählen Sie in der Symbolleiste der Google Cloud -Console Ihr Google Cloud -Projekt aus. Wählen Sie für App Hub-Konfigurationen das App Hub-Hostprojekt oder das Verwaltungsprojekt des für Apps aktivierten Ordners aus.
  3. Klicken Sie in der Dashboard-Symbolleiste auf  Einstellungen.
  4. Suchen Sie den Filter oder die Variable, die Sie entfernen möchten, und klicken Sie dann auf  Löschen.
  5. Klicken Sie auf Übernehmen.
  6. Klicken Sie zum Speichern des geänderten Dashboards in der Symbolleiste auf Speichern.

Nächste Schritte