Dashboards nach API erstellen und verwalten

In diesem Dokument wird beschrieben, wie Sie benutzerdefinierte Dashboards und die Widgets in diesen Dashboards mithilfe der Ressource Dashboard in der Cloud Monitoring API erstellen und verwalten. Die Beispiele hier veranschaulichen, wie Sie Ihre Dashboards mit curl verwalten, um die API aufzurufen, und wie Sie die Google Cloud CLI verwenden. Sie können zwar auch Ihre benutzerdefinierten Dashboards über die Google Cloud Console verwalten, aber die API bietet Ihnen eine programmatische Möglichkeit, viele Dashboards gleichzeitig zu verwalten.

Der Endpunkt unterstützt die folgenden Methoden zum Verwalten und Konfigurieren von Dashboards:

Sie können die API direkt mit dem curl-Dienstprogramm oder über die Google Cloud CLI aufrufen.

Sie können vordefinierte Dashboards nicht abrufen, bearbeiten oder löschen.

Hinweise

Beim Erstellen eines Dashboards müssen Sie angeben, welche Komponenten oder Widgets angezeigt werden sollen. Außerdem müssen Sie das Layout für diese Widgets festlegen. Sie können Ihrem Dashboard auch dauerhafte Filter hinzufügen.

Dashboard-Layouts

Layouts definieren die Reihenfolge der Komponenten eines Dashboards. Die API stellt die folgenden Layouts zur Verfügung:

  • GridLayout: Teilt den verfügbaren Platz in vertikale Spalten mit gleicher Breite und ordnet einen Satz von Widgets mit einer Strategie an, bei der zuerst die Zeilen berücksichtigt werden (Row-first).

  • MosaicLayout: Teilt den verfügbaren Speicherplatz in ein Raster. Jedes Widget kann einen oder mehrere Rasterblöcke einnehmen.

  • RowLayout: Teilt den verfügbaren Platz in Zeilen und ordnet einen Satz von Widgets horizontal in jeder Zeile an.

  • ColumnLayout: Teilt den verfügbaren Platz in vertikale Spalten und ordnet einen Satz von Widgets vertikal in jeder Spalte an.

Im Folgenden wird die JSON-Darstellung eines Dashboards in RowLayout mit drei Text-Widgets dargestellt:

{
  "displayName": "Row-layout example",
  "rowLayout": {
    "rows": [
      {
        "widgets": [
          {
            "text": {
              "content": "Text Widget 1",
              "format": "RAW"
            }
          },
          {
            "text": {
              "content": "**Text Widget 2**",
              "format": "MARKDOWN"
            }
          },
          {
            "text": {
              "content": "_Text Widget 3_",
              "format": "MARKDOWN"
            }
          }
        ]
      }
    ]
  }
}

Dashboardwidgets

Ein Widget enthält eine einzelne Dashboard-Komponente und die Konfiguration, wie die Komponente im Dashboard dargestellt wird. Ein Dashboard kann mehrere Widgets enthalten. Es gibt mehrere Typen von Widget-Objekten:

  • Diagramm- und Tabellen-Widgets:

    • XyChart: Zeigt Daten mithilfe der X- und Y-Achse an. Die folgenden Diagramme sind Instanzen des XyChart-Widgets:

    • Liniendiagramme

    • Balkendiagramme

    • Gestapelte Flächendiagramme

    • Heatmaps

    • Loganalyse-Diagramme

    • SLO-Widgets. Das Erstellen von SLO-Diagrammen mithilfe der API wird jedoch nicht unterstützt.

    Wenn Sie ein Liniendiagramm, ein gestapeltes Balkendiagramm oder ein gestapeltes Flächendiagramm erstellen, können Sie angeben, dass sich ein Messwert auf die linke oder rechte Y-Achse bezieht. Wenn mehrere Messwerte grafisch dargestellt werden, können Sie beide Y-Achsen verwenden.

    • PieChart: Zeigt den neuesten Wert eines Messwerts an, wobei jede Zeitachse einen Teil des Kreises berücksichtigt.

    • Scorecard: Zeigt den aktuellsten Wert eines Messwerts an und wie sich dieser Wert auf einen oder mehrere Grenzwerte bezieht.

    • TimeSeriesTable: Der neueste Wert eines Messwerts wird angezeigt. Sie können die Tabelle nach Spalten sortieren, sie filtern und Spalten zur Anzeige hinzufügen oder daraus entfernen.

  • Benachrichtigungsdiagramm und Widgets für Vorfälle:

    • AlertChart: Zeigt eine Zusammenfassung einer Benachrichtigungsrichtlinie mit einer einzelnen Bedingung an. Dieses Widget zeigt Daten als Liniendiagramm an, zeigt den Grenzwert an und listet die Anzahl der offenen Vorfälle auf.

    • IncidentList: zeigt eine Liste der Vorfälle an. Sie können das Widget so konfigurieren, dass Vorfälle für bestimmte Benachrichtigungsrichtlinien oder für bestimmte Ressourcentypen angezeigt werden.

  • Log- und Fehler-Widgets:

  • Text- und Organisations-Widgets:

    Damit diese Widgets in ein Dashboard aufgenommen werden können, muss das Dashboard ein MosaicLayout haben.

    • CollapsibleGroup: Zeigt eine Sammlung von Widgets an. Sie können die Ansicht einer Gruppe minimieren.

    • SingleViewGroup: Es wird ein Widget in einer Reihe von Widgets angezeigt. Sie können auswählen, welches Widget angezeigt werden soll.

    • SectionHeader: Erstellt eine horizontale Trennlinie im Dashboard und einen Eintrag in der Inhaltstabelle des Dashboards.

    • Text: Zeigt den Textinhalt entweder als Rohtext oder als Markdown-String an.

Zusätzlich zu diesen Objekten können Sie auch einen leeren Platzhalter zu einem Dashboard hinzufügen.

Im Folgenden sehen Sie beispielsweise die JSON-Darstellung eines XyChart-Widgets, dessen rechte Y-Achse konfiguriert ist:

{
  "displayName": "Demo dashboard",
  "gridLayout": {
    "widgets": [
      {
        "title": "Sample line chart",
        "xyChart": {
          "dataSets": [
            {
              "timeSeriesQuery": {
                "timeSeriesFilter": {
                  "filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\" resource.type=\"gce_instance\"",
                  "aggregation": {
                    "perSeriesAligner": "ALIGN_MEAN",
                    "crossSeriesReducer": "REDUCE_MAX",
                    "groupByFields": [
                      "resource.label.zone"
                    ]
                  }
                },
                "unitOverride": "1"
              },
              "plotType": "LINE"
            }
          ],
          "timeshiftDuration": "0s",
          "yAxis": {
            "label": "y1Axis",
            "scale": "LINEAR"
          },
          "chartOptions": {
            "mode": "COLOR"
          }
        }
      }
    ]
  }
}

Dashboard-Filter

Wenn Sie ein Dashboard entwerfen, identifizieren Sie möglicherweise mehrere Möglichkeiten, die im Dashboard angezeigten Daten anzuzeigen. Wenn in einem Dashboard beispielsweise Messwerte für VM-Instanzen angezeigt werden, möchten Sie sich vielleicht Messwerte für alle VMs und Messwerte für eine bestimmte Zone ansehen. In diesem Fall empfehlen wir, einen dauerhaften Filter zu erstellen und als Standardwert die am häufigsten verwendete Ansicht festzulegen. Dauerhafte Filter können auf einige oder alle Dashboard-Widgets angewendet werden. Wenn Sie das Dashboard mit der Google Cloud Console aufrufen, werden in der Dashboard-Symbolleiste Ihre dauerhaften Filter und ein Menü angezeigt, mit dem Sie den Wert des Filters vorübergehend ändern können.

Es gibt mehrere Arten von dauerhaften Dashboard-Filtern:

  • Dashboardweite Filter werden auf alle Widgets in einem Dashboard angewendet, die das Filterlabel unterstützen und keinen Wert für dieses Label angeben.

    Wenn ein Diagramm beispielsweise den Filter zone = us-central1-a enthält, wird in diesem Diagramm ein Dashboardfilter auf Grundlage des Labels zone ignoriert. Ebenso werden Dashboardfilter mit diesem Label in Diagrammen ohne das Label zone ignoriert.

  • Vorlagenvariablen sind benannte Variablen, die für bestimmte Widgets gelten. Jede Variable steht für ein bestimmtes Label und einen bestimmten Wert. Sie legen fest, für welche Widgets eine Vorlagenvariable gilt.

Alle Filtertypen werden mit derselben Datenstruktur dargestellt. Weitere Informationen zu DashboardFilter.

Das folgende Beispiel zeigt die JSON-Teildarstellung eines Dashboards, das eine Vorlagenvariable und einen Dashboard-weiten Filter definiert:

{
  "dashboardFilters": [
      {
        "filterType": "RESOURCE_LABEL",
        "labelKey": "instance_id",
        "stringValue": "3133577226154888113",
        "templateVariable": "iid"
      },
      {
        "filterType": "RESOURCE_LABEL",
        "labelKey": "zone"
      }
    ],
  "displayName": "Illustrate Template Variables",
  ...

In der angezeigten JSON-Datei ist der erste Eintrag in der dashboardFilters-Struktur für eine Vorlagenvariable mit dem Namen iid und einen Filter für das gesamte Dashboard mit dem Labelschlüssel zone. Die Vorlagenvariable ist ein Alias des Labels instance_id.

Die Datenstruktur für eine Vorlagenvariable listet die Widgets, für die sie gilt, nicht auf. Stattdessen verknüpfen Sie ein Widget mit einer Vorlagenvariable. Ändern Sie dazu die Abfrage des Widgets so, dass sie einen Verweis auf die Variable enthält. Wenn das Widget auf dem Dashboard angezeigt wird, wird der Wert der Vorlagenvariablen aufgelöst.

In den folgenden Abschnitten wird beschrieben, wie Sie Logbereiche und Diagramme mit Anmerkungen versehen:

Logbereich

Wenn Sie einen Logbereich so konfigurieren möchten, dass die Anzeige anhand des Werts einer Vorlagenvariablen gefiltert wird, fügen Sie die Variable dem Abfragebereich hinzu. Das folgende Beispiel veranschaulicht eine Abfrage, die nach dem Wert der Vorlagenvariablen iid filtert:

${iid}

Bevor im Bereich „Logs“ die anzuzeigenden Logs abgefragt werden, wird die Vorlagenvariable aufgelöst. Wenn der Wert der Vorlagenvariablen in diesem Beispiel "12345" ist, wird ${iid} durch die Anweisung resource.labels."instance_id"="12345" ersetzt.

Sie können auch nur den Wert einer Vorlagenvariablen in eine Abfrage aufnehmen. Wir empfehlen, den Wert nur als Teil eines mit einem regulären Ausdruck definierten Filters zu verwenden. Die folgende Abfrage verwendet beispielsweise einen regulären Ausdruck zum Abgleich von Logeinträgen, deren JSON-Nutzlast den beschriebenen String enthält:

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

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

In der folgenden Tabelle sehen Sie, wie die Vorlagenvariable vom Bereich „Logs“ aufgelöst wird:

Syntax Ausgewählter
Wert
Ausdruck des aufgelösten Logbereichs
${iid} 12345 resource.labels."instance_id"="12345"
${iid} * ""
${iid.value} 12345 12345
${iid.value} * .*

MQL-definierte Diagramme und Tabellen

Wenn Sie ein Diagramm mit Monitoring Query Language (MQL) konfigurieren, hängen Sie eine Pipe und die Variable an den Abfragestring an:

fetch gce_instance
| metric 'compute.googleapis.com/instance/cpu/utilization'
| every 1m
| ${iid}

Bevor das Diagramm die anzuzeigenden Zeitachsen abfragt, wird die Vorlagenvariable aufgelöst. Wenn der Wert der Vorlagenvariablen in diesem Beispiel "12345" ist, wird ${iid} durch die Anweisung filter (resource.instance_id == '12345') ersetzt. Dieser Filter stimmt nur mit Zeitachsen überein, die ein Label namens resource.instance_id haben, und nur, wenn der Wert dieses Labels genau 12345 ist.

Wenn Sie Zeitreihen mithilfe eines regulären Ausdrucks filtern möchten, konfigurieren Sie die Abfrage so, dass sie nur den Wert der Vorlagenvariablen enthält. Das folgende Beispiel zeigt, wie Sie mit einem regulären Ausdruck bestimmen, ob der Wert des Labels resource.instance_id den Wert der Vorlagenvariablen iid enthält:

fetch gce_instance
| metric 'compute.googleapis.com/instance/cpu/utilization'
| filter resource.instance_id=~"${iid.value}"
| group_by 1m, [value_utilization_mean: mean(value.utilization)]
| every 1m

Die folgende Tabelle zeigt, wie die Vorlagenvariable für MQL-Abfragen aufgelöst wird:

Syntax Ausgewählter
Wert
MQL-Ausdruck aufgelöst
${iid} 12345 filter (resource.instance_id == '12345')
${iid} * filter (true)
${iid.value} 12345 12345
${iid.value} * .*

PromQL-definierte Diagramme und Tabellen

Wenn Sie ein Diagramm mit PromQL definieren, hängen Sie die Variable in geschweiften Klammern an den Abfragestring an:

compute_googleapis_com:instance_cpu_utilization {
    project_id="my-project", ${iid}
}

Bevor das Diagramm die anzuzeigenden Zeitachsen abfragt, wird die Vorlagenvariable aufgelöst. Wenn der Wert der Vorlagenvariablen in diesem Beispiel "12345" ist, wird ${iid} durch die Anweisung instance_id == '12345' ersetzt.

Ähnlich wie bei MQL kann die Abfrage nur den Wert der Vorlagenvariablen extrahieren, wenn Sie ein Widget mit PromQL definieren. Wir empfehlen, den Wert nur als Teil eines mit einem regulären Ausdruck definierten Filters zu verwenden. Das folgende Beispiel zeigt, wie Sie mit einem regulären Ausdruck ermitteln, ob der Wert des Labels instance_id den Wert der Vorlagenvariablen iid enthält:

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

Die folgende Tabelle zeigt, wie die Vorlagenvariable für PromQL-Abfragen aufgelöst wird:

Syntax Ausgewählter
Wert
PromQL-Ausdruck aufgelöst
${iid} 12345 instance_id == '12345'
${iid} * noop_filter=~".*"
${iid.value} 12345 12345
${iid.value} * .+

Mit Zeitreihenfiltern definierte Diagramme und Tabellen

Wenn Sie ein Diagramm mit Zeitreihenfiltern definieren, hängen Sie die Variable an den Filterstring an:

"filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\"
           resource.type=\"gce_instance\" ${iid}"

Im Gegensatz zu MQL- und PromQL-definierten Diagrammen können Sie den Wert einer Vorlagenvariablen nicht in einem Zeitreihenfilter verwenden.

In der folgenden Tabelle sehen Sie, wie die Vorlagenvariable aufgelöst wird:

Syntax Ausgewählter
Wert
Filterausdruck aufgelöst
${iid} 12345 resource.instance_id == "12345"
${iid} * Ausgelassen
${iid.value} 12345 Nicht unterstützt
${iid.value} * Nicht unterstützt

Dashboard erstellen

Zum Erstellen eines neuen benutzerdefinierten Dashboards rufen Sie dieMethode dashboards.create auf und geben das Layout und die Widgets zur Anzeige im Dashboard an.

Wenn Sie ein Dashboard erstellen, generiert die API automatisch die dashboard_id. Wenn Sie eine benutzerdefinierte dashboard_id angeben möchten, können Sie das name-Feld eines Dashboard-Objekts festlegen. Das Format des Namensfelds sieht so aus:

"name": "projects/${PROJECT_ID}/dashboards/${DASHBOARD_ID}"

Protokoll

Um ein neues Dashboard zu erstellen, senden Sie eine POST-Anfrage an den Endpunkt Dashboard.

curl -d @my-dashboard.json -H "Authorization: Bearer $ACCESS_TOKEN" -H 'Content-Type: application/json' -X POST https://monitoring.googleapis.com/v1/projects/${PROJECT_ID}/dashboards

gcloud

Verwenden Sie den Befehl gcloud monitoring dashboards create, um ein Dashboard in einem Projekt zu erstellen.

gcloud monitoring dashboards create --config-from-file=my-dashboard.json

So duplizieren Sie beispielsweise ein Dashboard:

  1. Führen Sie die Schritte unter Dashboard abrufen aus, um die Definition des ursprünglichen Dashboards herunterzuladen.
  2. Bearbeiten Sie die zurückgegebene JSON-Datei, um die Felder etag und name zu entfernen, und ändern Sie den Wert des Felds displayName.
  3. Führen Sie den Befehl aus, um das Dashboard zu erstellen.

Weitere Informationen finden Sie in der Referenz zu gcloud monitoring dashboards create.

In den Beispielen wird ein Beispiel-Dashboard mithilfe der Datei my-dashboard.json erstellt. Sie können Ihr Dashboard über die Google Cloud Console verwalten.

Weitere Dashboard-Konfigurationen finden Sie unter Beispiele für Dashboards und Layouts.

Dashboards löschen

Um ein benutzerdefiniertes Dashboard zu löschen, rufen Sie die Methode dashboards.delete auf und geben Sie das zu löschende Dashboard an.

Protokoll

Senden Sie zum Löschen eines benutzerdefinierten Dashboards eine DELETE-Anfrage an den Endpunkt Dashboard, der mit der ID des zu löschenden Dashboards qualifiziert ist.

curl -H "Authorization: Bearer $ACCESS_TOKEN" -X DELETE https://monitoring.googleapis.com/v1/projects/${PROJECT_ID}/dashboards/${DASHBOARD_ID}

Bei Erfolg gibt die Methode eine leere Antwort zurück. Andernfalls wird ein Fehler zurückgegeben.

gcloud

Verwenden Sie zum Löschen eines benutzerdefinierten Dashboards gcloud monitoring dashboards delete und geben Sie die vollständig qualifizierte ID des zu löschenden Dashboards an:

gcloud monitoring dashboards delete projects/${PROJECT_ID}/dashboards/${DASHBOARD_ID}

Weitere Informationen finden Sie in der Referenz zu gcloud monitoring dashboards delete.

Dashboards auflisten

Zum Auflisten aller Dashboards, die zu einem Projekt gehören, rufen Sie die Methode dashboards.list auf und geben die Projekt-ID an.

Protokoll

Wenn Sie alle benutzerdefinierten Dashboards eines Projekts auflisten möchten, senden Sie die Projekt-ID an den Endpunkt Dashboard.

curl -H "Authorization: Bearer $ACCESS_TOKEN" https://monitoring.googleapis.com/v1/projects/${PROJECT_ID}/dashboards

gcloud

Verwenden Sie den Befehl gcloud monitoring dashboards list, um alle benutzerdefinierten Dashboards eines Projekts aufzulisten:

gcloud monitoring dashboards list

Weitere Informationen finden Sie in der Referenz zu gcloud monitoring dashboards list.

Die Beispiele geben die mit Ihrem Projekt verknüpften benutzerdefinierten Dashboards zurück.

Listenantwort paginieren

Die dashboards.list-Methode unterstützt die Paginierung, sodass Sie die Ergebnisse jeweils pro Seite statt alle gleichzeitig verarbeiten können.

Protokoll

Geben Sie für die erste Seite der Ergebnisliste den Suchparameter pageSize mit der Anfrage an:

curl -H "Authorization: Bearer $ACCESS_TOKEN" https://monitoring.googleapis.com/v1/projects/${PROJECT_ID}/dashboards?page_size=1

Die Methode gibt die erste Seite der Liste und das nextPageToken zurück. Beispiel:

{
  "dashboards" : [
    {
       "displayName" : "Grid Layout Example",
       "gridLayout" : {
         "widgets" : [
            { ... },
            { ... },
            { ... },
          ]
       }
    }
  ]
},
"nextPageToken": "ChYqFDEyMzkzMzUwNzg0OTE1MDI4MjM3"

Für jede verbleibende Seite müssen Sie das entsprechende nextPageToken in der Anfrage angeben.

gcloud

Um die Anzahl der Ressourcen pro Seite anzugeben, übergeben Sie das Flag --page-size mit dem Befehl. Beispiel:

gcloud monitoring dashboards list --page-size=1

Dashboard abrufen

Wenn Sie ein bestimmtes benutzerdefiniertes Dashboard für ein Projekt abrufen möchten, rufen Sie die Methode dashboards.get auf, die mit der Dashboard-ID qualifiziert ist.

Protokoll

Wenn Sie ein bestimmtes benutzerdefiniertes Dashboard abrufen möchten, senden Sie die Dashboard-ID an den Endpunkt Dashboard.

curl -H "Authorization: Bearer $ACCESS_TOKEN" https://monitoring.googleapis.com/v1/projects/${PROJECT_ID}/dashboards/${DASHBOARD_ID}

Die Methode gibt eine Antwort in etwa wie im folgenden Beispiel zurück:

{
  "columnLayout": {
    "columns": [
      {
        "widgets": [
          {
            "text": {
              "content": "Text Widget 1",
              "format": "RAW"
            }
          },
          {
            "text": {
              "content": "**Text Widget 2**",
              "format": "MARKDOWN"
            }
          },
          {
            "text": {
              "content": "_Text Widget 3_",
              "format": "MARKDOWN"
            }
          }
        ]
      }
    ]
  },
  "displayName": "Column-layout example",
  "etag": "cb3070baf15de7c79d78761baac3a386",
  "name": "projects/730041941835/dashboards/e4cd063e-5414-4e07-9e1e-450d6d3a531d"
}

gcloud

Um ein bestimmtes benutzerdefiniertes Dashboard abzurufen, verwenden Sie den Befehl gcloud monitoring dashboards describe und geben die Dashboard-ID an:

gcloud monitoring dashboards describe ${DASHBOARD_ID} --format=json

Der Befehl gibt das angeforderte Dashboard zurück:

{
  "columnLayout": {
    "columns": [
      {
        "widgets": [
          {
            "text": {
              "content": "Text Widget 1",
              "format": "RAW"
            }
          },
          {
            "text": {
              "content": "**Text Widget 2**",
              "format": "MARKDOWN"
            }
          },
          {
            "text": {
              "content": "_Text Widget 3_",
              "format": "MARKDOWN"
            }
          }
        ]
      }
    ]
  },
  "displayName": "Column-layout example",
  "etag": "cb3070baf15de7c79d78761baac3a386",
  "name": "projects/730041941835/dashboards/e4cd063e-5414-4e07-9e1e-450d6d3a531d"
}

Weitere Informationen finden Sie in der Referenz zu gcloud monitoring dashboards describe.

Dashboard aktualisieren

Rufen Sie zum Aktualisieren eines vorhandenen benutzerdefinierten Dashboards die Methode dashboards.patch auf. Zum Abrufen des aktuellen etag-Werts können Sie die Methode dashboards.get aufrufen und ihn in der Antwort finden.

Protokoll

Senden Sie zum Aktualisieren eines benutzerdefinierten Dashboards eine PATCH-Anfrage an den Endpunkt Dashboard und geben Sie das überarbeitete Dashboard-Objekt und den etag-Wert aus der letzten dashboards.get-Antwort.

curl -d @my-updated-dashboard.json -H "Authorization: Bearer $ACCESS_TOKEN" -H 'Content-Type: application/json' -X PATCH https://monitoring.googleapis.com/v1/projects/${PROJECT_ID}/dashboards/${DASHBOARD_ID}

gcloud

Verwenden Sie gcloud monitoring dashboards update zum Aktualisieren eines benutzerdefinierten Dashboards, geben Sie die ID des zu aktualisierenden Dashboards an und geben Sie die Änderungen im Dashboard an.

gcloud monitoring dashboards update ${DASHBOARD_ID} --config-from-file=my-updated-dashboard.json

Weitere Informationen finden Sie in der Referenz zu gcloud monitoring dashboards update.

In den Beispielen wird ein vorhandenes benutzerdefiniertes Dashboard mithilfe der Datei my-updated-dashboard.json aktualisiert und eine Kopie des aktualisierten Dashboard-Eintrags zurückgegeben. Die Rückgabedaten enthalten einen neuen etag-Wert.

Nächste Schritte