Variablen und angepinnte Filter erstellen und verwalten

Mit angepinnten Filtern und Variablen in einem benutzerdefinierten Dashboard in Cloud Monitoring können Sie die im Dashboard angezeigten Daten dynamisch über die Symbolleiste ändern, ohne einzelne Widgets bearbeiten zu müssen. Angepinnte Filter gelten für alle Widgets, die das Label des Filters unterstützen. Variablen hingegen gelten für bestimmte Widgets, um deren Abfragen zu ändern oder ihre Sichtbarkeit zu steuern.

In diesem Dokument wird beschrieben, wie Sie angepinnte Filter und Variablen in derGoogle Cloud Console konfigurieren. Informationen zum Konfigurieren von Dashboard-Filtern mit der Cloud Monitoring API finden Sie unter Dashboards mithilfe der API erstellen und verwalten: Dashboard-Filter. Informationen zum Anwenden von Filtern oder Gruppierungen nur für die aktuelle Sitzung 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.

Angepinnte Filter werden nicht auf einzelne Widgets angewendet. Stattdessen wird anhand der folgenden Regeln bestimmt, ob der angepinnte Filter die vom Widget angezeigten Daten ändern kann:

  • Wenn das Widget Daten anzeigt, die den durch einen angepinnten Filter angegebenen Labelschlüssel enthalten, und wenn das Widget keinen Wert für diesen Labelschlüssel angibt, 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 angezeigt, die ein cluster_name-Label mit dem Wert mycluster haben. Ebenso werden die Abfragen in den Widgets des Logs-Bereichs in resource.labels."cluster_name"="mycluster" geändert und in den 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 nicht den im angepinnten Filter angegebenen Labelschlüssel enthalten.

In der API werden angepinnte Filter durch die Struktur DashboardFilter definiert. In der folgenden Struktur wird beispielsweise ein angepinnter Filter definiert. Zeitreihen mit dem Label zone, dessen Wert us-central1-c ist, entsprechen dem angepinnten Filter.

{
   "labelKey": "zone",
   "stringValue": "us-central1-c",
   "valueType": "STRING",
   "filterType": "RESOURCE_LABEL"
},

Variablen

Ähnlich wie angepinnte Filter hat eine Variable einen Namen und einen Typ sowie einen oder mehrere Standardwerte. Im Gegensatz zu angepinnten Filtern, die immer labelbasiert sind, müssen Variablen jedoch nicht von Labels abhängen.

Eine Variable wird auf ein bestimmtes Widget angewendet, indem die Abfrage geändert wird, die das Widget enthält.

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.

Benutzerdefinierte 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 auf Ihrem Dashboard angezeigt werden.

  • Variablen, die nur Werte enthalten, 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 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. Wenn Sie diese Variable erstellen, können Sie einen oder mehrere Werte angeben. Mit der Menüoption können Sie jedoch neue Werte hinzufügen, die für Ihre aktuelle Sitzung gelten.

    • 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 vorgesehen, die mit Observability 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 `VIEW`
      GROUP BY log_name
      

      Die SQL-Abfrage darf nicht von einer Variablen abhängen.

Es gibt eine systemdefinierte Variable, @__project_id. Sie können diese Variable nur in der FROM-Klausel für SQL-Abfragen verwenden. Informationen zum Anwenden dieser Variable auf eine Abfrage finden Sie unter Diagramme mit SQL-Abfragen.

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 Abfrage zu aktualisieren. Bei labelbasierten Variablen und einigen Widget-Typen können Sie die Abfrage jedoch über die Menüauswahl aktualisieren. Wenn Sie die Sichtbarkeit steuern möchten, müssen Sie das Widget bearbeiten. Weitere Informationen finden Sie in den folgenden Abschnitten dieses Dokuments:

In der API werden Variablen durch die Struktur DashboardFilter definiert. In der folgenden Struktur wird beispielsweise die Variable my_zone_variable definiert, die auf dem Ressourcenlabel zone operiert. Zeitreihen mit dem Label zone, dessen Wert us-central1-c ist, entsprechen der Variablen.

{
   "labelKey": "zone",
   "stringValue": "us-central1-c",
   "templateVariable": "my_zone_variable",
   "valueType": "STRING",
   "filterType": "RESOURCE_LABEL",
},

Hinweis

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

Filter erstellen und anpinnen

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

  1. Öffnen Sie in der Google Cloud Console die Seite Dashboards :

    Zu Dashboards

    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 aus.
  3. Wählen Sie ein Dashboard aus, rufen Sie die Symbolleiste des Dashboards auf und klicken Sie dann 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 Sie möchten, dass Nutzer mehrere Werte aus dem Wertemenü des Filters auswählen können, wählen Sie Mehrfachauswahl aus. Wenn die Mehrfachauswahl nicht aktiviert ist, können Nutzer nur eine Option aus dem Wertemenü auswählen.
  7. Klicken Sie auf Standardwert und wählen Sie dann den Standardwert 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 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 Übernehmen.

  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. Öffnen Sie in der Google Cloud Console die Seite Dashboards :

    Zu Dashboards

    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 aus.
  3. Wählen Sie ein Dashboard aus, rufen Sie die Symbolleiste des Dashboards auf und klicken Sie dann 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.

    Wählen Sie Label aus, um eine labelbasierte Variable zu erstellen. Verwenden Sie diese Option, wenn Sie eine Variable mit einem Labelschlüssel und einem Labelwert benötigen, die wie ein angepinnter Filter verwendet werden kann. Die Liste aller möglichen Werte wird dynamisch aus den Zeitreihendaten abgeleitet, die auf Ihrem Dashboard angezeigt werden. Im Menü Auf Diagramme anwenden können Sie 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 Ergebnisse einer SQL-Abfrage die Liste aller möglichen Werte generieren sollen.

      Geben Sie einen oder mehrere Standardwerte und eine SQL-Abfrage ein, die die Liste aller möglichen Werte generiert. 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 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 Übernehmen.

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

    Die Variable wird von Monitoring der Dashboard-Symbolleiste hinzugefügt. Der Name in der Symbolleiste ist ein Dollarzeichen $, gefolgt vom Namen der Variablen. Die Symbolleiste enthält ein Menü, über das Sie den Wert der Variable ändern können.

  8. Optional: Verschieben Sie die Variable von der Dashboard-Symbolleiste in ein Dashboard-Widget.

    Sie können Ihrem Dashboard ein Widget hinzufügen, mit dem Sie den Wert Ihrer Variable ändern können. Wenn Sie diese Änderung vornehmen, wird die Symbolleistenvariable entfernt. Sie können das Widget, das die Variable steuert, jedoch neben den Widgets platzieren, die davon betroffen sind. Informationen zum Vornehmen dieser Änderung finden Sie unter Widget zum Verwalten des Werts einer Variablen hinzufügen.

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

Widget zum Verwalten des Werts einer Variablen hinzufügen

Da Variablen auf eine Teilmenge von Dashboard-Widgets angewendet werden, ist es sinnvoll, die Steuerung der Variablen und die Widgets, auf die sie angewendet wird, zu gruppieren. Sie können beispielsweise eine minimierbare Gruppe oder einen Abschnitt im Dashboard für das Variablenmenü und die zugehörigen Widgets erstellen. Diese Strategie vereinfacht auch die Symbolleiste, da Variablen entfernt werden, die nicht für alle Widgets gelten.

So verwalten Sie den Wert einer Variablen mithilfe eines Dashboard-Widgets:

  1. Öffnen Sie in der Google Cloud Console die Seite Dashboards :

    Zu Dashboards

    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 aus.
  3. Gehen Sie im Dialogfeld Widget hinzufügen zum Abschnitt Layout und wählen Sie dann Variable aus.
  4. Füllen Sie das Dialogfeld aus und wählen Sie dann Speichern aus.

    Im Dashboard wird ein Widget angezeigt, mit dem Sie den Wert für die Variable auswählen können. Sie können dieses Widget in eine minimierbare Gruppe verschieben oder anderweitig neu positionieren.

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

Sichtbarkeit eines Widgets festlegen

Wenn ein Widget Daten abfragt, können Sie mit einer Variablen steuern, ob das Widget auf 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 Debugging 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 nur Produktionsdaten, nur Staging-Daten und allen Daten wechseln.

Jeder Variablentyp kann steuern, ob ein Widget sichtbar oder ausgeblendet ist.

So konfigurieren Sie die Sichtbarkeit eines Widgets:

  1. Öffnen Sie in der Google Cloud Console die Seite Dashboards :

    Zu Dashboards

    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. Rufen Sie die Symbolleiste des Widgets auf, dessen Sichtbarkeit Sie konfigurieren möchten, und klicken Sie dann auf Bearbeiten.
  4. Maximieren Sie im Bereich Anzeige die Option Widget-Sichtbarkeit.
  5. Wählen Sie eine Variable aus und füllen Sie das Dialogfeld aus.

  6. Klicken Sie auf Fertig und dann auf Übernehmen.

  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 Sichtbarkeitseinstellungen ausgeblendet ist, wird im Dashboard ein Banner angezeigt. Wenn Sie alle Widgets aufrufen möchten, klicken Sie auf Alle Widgets einblenden.

Wenn Sie eine Variable verwenden, um die Sichtbarkeit mindestens eines Widgets auf 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:

  • Organisatorische Widgets wie minimierbare Gruppen, Abschnittsüberschriften und Widgets mit Einzelansicht sind immer sichtbar.

  • Sie können eine Variable löschen, auf die in den Sichtbarkeitseinstellungen eines Widgets verwiesen wird. Durch das Löschen der Variable 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 diese Variablen verwenden, um die Sichtbarkeit von Widgets im Dashboard zu verwalten.

Abfrage eines Widgets aktualisieren

In diesem Abschnitt wird beschrieben, wie Sie Variablen in die Abfrage einfügen, die das Widget ausgibt. Wenn Sie den Wert der Variablen ändern, wird die Abfrage und damit auch die im Widget angezeigten Daten geändert:

  • Bei Diagrammen, die SQL- oder PromQL-Abfragen verwenden, und bei Widgets für Logbereiche 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, bearbeitet Monitoring die Abfrage, wenn Sie das Widget über das Menü Auf Diagramme anwenden auswählen. Alternativ können Sie das Widget bearbeiten, das Feld Filter aufrufen und dann die Variable auswählen.

Informationen zum Aktualisieren der Abfrage eines Widgets mit einer labelbasierten Variablen oder einer Variablen, die nur Werte enthält, 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:

REST

Verwenden Sie zum Definieren angepinnter Filter und Variablen die Datenstruktur dashboardFilters.

  • Legen Sie zum Erstellen einer Variable 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 Wert verwenden 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ü der Werte oder mehrere Werte auswählen kann.

  • Wenn Sie einen einzelnen Standardwert festlegen und Nutzer auf die Auswahl von genau einer Option im Wertemenü beschränken möchten, legen Sie das Feld valueType auf STRING fest und legen Sie auch das Feld stringValue fest:

    "valueType": "STRING",
    "stringValue": "my-default-value",
    
  • Wenn Sie mindestens einen Standardwert festlegen und Nutzern die Möglichkeit geben 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 reine Wertvariable 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. In den Feldern valueType und stringValue wird der einzelne Standardwert angegeben. Weitere Informationen finden Sie auf der Seite mit den API-Referenzen für die Datenstruktur dashboardFilters.

  • Die labelbasierte Variable hat den Namen my_label_based_variable und der Labelschlüssel ist instance_id. Der Standardwert für diese Variable ist auf eine bestimmte Instanz-ID festgelegt. Sie können den Standardwert auch mithilfe eines Arrays 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. In diesem Eintrag wird kein Standardwert angegeben, daher 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.

Beachten Sie, dass im dashboardFilters-Objekt die Widgets, für die die Variable gilt, nicht aufgeführt sind. Stattdessen aktualisieren Sie die Abfrage eines Widgets so, dass sie von einer Variablen abhängt.

Allgemeine Syntax zum Dereferenzieren einer Variablen

Verwenden Sie für alle Widgets, mit Ausnahme derer, die durch 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 Variable 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 Nur-Wert-Variable anwenden 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 im Logbereich

Wenn Sie eine Variable auf ein Widget im Logbereich anwenden möchten, aktualisieren Sie den Abfragebereich. 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}"

Ein weiteres Beispiel ist eine reine Wertvariable, value_only_severity_variable. Angenommen, im Menü der Werte sind drei Werte ausgewählt: ERROR, INFO und NOTICE. Als Nächstes fügen Sie dem Abfragebereich des Logbereich-Widgets Folgendes hinzu:

severity =~ "${value_only_severity_variable}"

Im Folgenden wird das gerenderte Formular dargestellt:

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

REST

Das folgende JSON-Beispiel zeigt, wie die Abfrage eines Logfeld-Widgets mit einer labelbasierten Variablen aktualisiert wird:

"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 ist eine reine Wertvariable, value_only_severity_variable. Angenommen, im Menü sind drei Werte ausgewählt: ERROR, INFO und NOTICE. Als Nächstes fügen Sie dem Abfragebereich des Logbereich-Widgets Folgendes hinzu:

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

Im Folgenden wird die Abfrage dargestellt, die vom Widget im Logbereich ausgeführt wird:

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

Wenn Sie eine Abfrage für den Logbereich konfiguriert haben und dann den Button 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 im Logbereich
${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 nur mit einem Wert haben, lassen Sie die .value-Klausel weg. Wenn Sie beispielsweise nach Zone filtern möchten und eine Variable nur mit Wert verwenden, würde die Abfrage in etwa so aussehen:

zone=~"${my_value_only_variable}"

REST

Die folgende JSON-Datei zeigt beispielsweise eine Abfrage, die auf der labelbasierten Variable my_label_based_variable basiert, die 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 nur mit einem Wert haben, lassen Sie die .value-Klausel weg. Wenn Sie beispielsweise nach Zone filtern möchten und eine Variable nur mit Wert verwenden, 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 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

Es gibt zwei Stellen, an denen Sie Variablen in Ihren SQL-Abfragen verwenden können:

  • Die FROM-Klausel kann von der systemdefinierten Variable @__project_id abhängen, die in den Wert des ausgewählten Projekts aufgelöst wird.

  • Die WHERE-Klausel kann von benutzerdefinierten Variablen abhängen.

FROM-Klausel aktualisieren, damit sie von einer systemdefinierten Variable abhängt

Wenn Sie Dashboard-Vorlagen erstellen und diese Vorlagen die Ergebnisse von SQL-Abfragen darstellen, ersetzen Sie die Projekt-ID in Ihrer Abfrage durch die Variable @__project_id. Wenn Sie die Vorlage in einem Projekt installieren, wird die Variable automatisch in die Projekt-ID aufgelöst. Sie müssen das Widget nicht manuell bearbeiten und die FROM-Klausel aktualisieren.

Im Folgenden wird eine FROM-Klausel dargestellt, die von der systemdefinierten Variable abhängt:

FROM `@__project_id.global._Default._Default`

Die FROM-Klausel darf nicht von benutzerdefinierten Variablen abhängen.

WHERE-Klausel so aktualisieren, dass sie von einer benutzerdefinierten Variable abhängt

In diesem Abschnitt wird beschrieben, wie Sie die WHERE-Klausel eines SQL-definierten Widgets so aktualisieren, dass sie von einer benutzerdefinierten Variable abhängt. Stellen Sie allen Variablen das @-Zeichen voran, 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 Variablenersetzung auf BigQuery und ist vor SQL-Injections geschützt. Weitere Informationen finden Sie unter Parametrisierte Abfragen ausführen.

Console

Da SQL den Platzhalteroperator nicht als „beliebiger Wert“ interpretiert, empfehlen wir, immer eine IF-Anweisung zu verwenden, wenn Sie Variablen in einer SQL-Abfrage verwenden. Das folgende Beispiel zeigt die Verwendung einer Nur-Wert-Variable, 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 Variable 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 SQL den Platzhalteroperator nicht als „beliebiger Wert“ interpretiert. Wenn Sie also die IF-Anweisung 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 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. Prüfen Sie im Dialogfeld, das sich öffnet, den generierten Code 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 Lognamen 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 und 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 Übernehmen.

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

REST

Da SQL den Platzhalteroperator nicht als „beliebiger Wert“ interpretiert, empfehlen wir, immer eine IF-Anweisung zu verwenden, wenn Sie Variablen in einer SQL-Abfrage verwenden. Das folgende Beispiel zeigt die Verwendung einer Nur-Wert-Variable, 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 mit dem Namen 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 Lognamen 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 Variable 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 SQL den Platzhalteroperator nicht als „beliebiger Wert“ interpretiert. Wenn Sie also die IF-Anweisung 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 konvertiert.

Diagramme mit Monitoring-Filterabfragen

Wenn Sie ein Diagramm mit einer Abfrage in Form eines Monitoring-Filters so aktualisieren möchten, dass es von einer labelbasierten Variablen abhängt, folgen Sie der Anleitung unter Allgemeine Syntax.

Console

Wenn Sie die Google Cloud Console zum Erstellen Ihrer Diagramme und die menügesteuerte Oberfläche verwenden, können Sie die Abfrage des Diagramms über das Feld Auf Diagramme anwenden der Variablen aktualisieren oder das Widget bearbeiten und die labelbasierte Variable im Menü Filter 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 Variable abhängt:

  1. Das Diagramm bearbeiten.
  2. Klicken Sie im Abfragebereich 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 nur mit Wert aus.
  4. Klicken Sie auf Übernehmen.
  5. Klicken Sie zum Speichern des geänderten Dashboards in der Symbolleiste auf Speichern.

Die folgende JSON-Datei zeigt beispielsweise eine Abfrage, die auf einer labelbasierten Variablen (my_label_based_variable) basiert, die in einen Filterausdruck aufgelöst wird:

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

Widgets, die eine Abfrage in Form eines Monitoring-Filters verwenden, können die Zeitreihe nicht nach dem Wert in einer labelbasierten Variablen filtern. Sie können jedoch nach Variablen filtern, die nur Werte enthalten. Die folgende Abfrage zeigt beispielsweise den Wert des Felds Filter einer Abfrage, die nach zone filtert, basierend auf dem Wert einer Nur-Wert-Variablen:

metric.type="compute.googleapis.com/instance/cpu/utilization"
resource.type="gce_instance"
resource.label."zone"=monitoring.regex.full_match(${my_value_only_variable})

REST

Die folgende JSON-Datei zeigt beispielsweise eine Abfrage, die auf einer labelbasierten Variablen (my_label_based_variable) basiert, die 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
},

Widgets, die eine Abfrage in Form eines Monitoring-Filters verwenden, können die Zeitreihe nicht nach dem Wert in einer labelbasierten Variablen filtern. Sie können jedoch nach Variablen filtern, die nur Werte enthalten. Die folgende Abfrage zeigt beispielsweise das Feld "filter" einer Abfrage, die nach zone filtert, basierend auf dem Wert einer Nur-Wert-Variablen:

"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 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} * Auslassung
${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 angepinnten Filters oder einer angepinnten Variable in der Dashboard-Symbolleiste vorübergehend ändern möchten, klicken Sie auf den Namen des Filters oder der Variable und geben Sie entweder 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. Verwenden Sie dazu die Schaltfläche Dashboard nach diesem Wert filtern einer Zelle. Wenn Sie auf diese Schaltfläche klicken, 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 Variablen:

  1. Öffnen Sie in der Google Cloud Console die Seite Dashboards :

    Zu Dashboards

    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 aus.
  3. Klicken Sie in der Symbolleiste des Dashboards auf Einstellungen.
  4. Suchen Sie den Filter oder die Variable, 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 Variable:

  1. Öffnen Sie in der Google Cloud Console die Seite Dashboards :

    Zu Dashboards

    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 aus.
  3. Klicken Sie in der Symbolleiste des Dashboards 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.

Beschränkungen

  • Filter auf Dashboard-Ebene basieren auf dem Filtern von Daten nach Schlüssel/Wert-Paaren. Diese Filter werden nicht angewendet, wenn die Daten keine Schlüssel/Wert-Paare oder den spezifischen Schlüssel nicht unterstützen. Sie können beispielsweise keinen Filter auf Dashboard-Ebene verwenden, um die Daten zu ändern, die in einem Trace-Widget angezeigt werden.

  • Wenn Sie eine Variable auf ein Widget anwenden möchten, müssen Sie die Abfrage des Widgets ändern. Nicht alle Widgets können geändert werden.

Nächste Schritte