Dataflow-Monitoring-Dashboard anpassen

Auf dieser Seite wird gezeigt, wie Sie das Dataflow-Projektmonitoring-Dashboard anpassen, indem Sie ein Diagramm hinzufügen, in dem Cloud Monitoring-Messwerte abgefragt werden.

Mit dem Dashboard für die Projektüberwachung können Sie eine Sammlung von Jobs überwachen und den allgemeinen Zustand und die Leistung der Jobs sehen. Das Dashboard enthält eine Standardgruppe von Diagrammen, die für die meisten Arbeitslasten nützlich sind. Wenn Sie das Dashboard anpassen, können Sie Diagramme hinzufügen, die speziell auf Ihre geschäftlichen Anforderungen zugeschnitten sind.

Beispielszenario

Um zu zeigen, wie Sie das Dashboard anpassen können, gehen wir davon aus, dass eine Organisation die geschätzten Kosten der 25 wichtigsten Jobs in ihrem Projekt erfassen möchte.

In diesem Szenario wird davon ausgegangen, dass die Jobs die folgenden Merkmale haben:

Messwerte auswählen

Die folgenden Messwerte sind erforderlich, um die Kosten eines Jobs anhand der im vorherigen Abschnitt aufgeführten Annahmen zu schätzen:

RessourceRelevanter Messwert
CPU (vCPU pro Stunde) job/total_vcpu_time
Arbeitsspeicher (GB pro Stunde) job/total_memory_usage_time
Während des Shuffles verarbeitete Daten (GB) job/total_streaming_data_processed
Nutzung von nichtflüchtigem Speicher (GB pro Stunde, Standard und SSD) job/total_pd_usage_time

Weitere Informationen finden Sie unter Dataflow-Preise.

Informationen dazu, welche Ressourcen in Monitoring verfügbar sind, finden Sie unter Überwachte Ressourcentypen.

PromQL-Abfrage schreiben

Zum Abfragen von Messwerten aus Cloud Monitoring verwenden Sie die Prometheus-Abfragesprache (PromQL). In diesem Abschnitt wird gezeigt, wie Sie eine PromQL-Abfrage für das Szenario schreiben, indem Sie sie aus kleineren Klauseln zusammensetzen. Für diesen Abschnitt sind keine Vorkenntnisse in PromQL erforderlich. Weitere Informationen finden Sie unter PromQL in Cloud Monitoring.

Messwertnamen PromQL-Strings zuordnen

Wenn Sie Monitoring-Messwerte in PromQL-Abfragen verwenden möchten, müssen Sie den Messwertnamen einem PromQL-String zuordnen:

MesswertnamePromQL-String
job/total_vcpu_time dataflow_googleapis_com:job_total_vcpu_time
job/total_memory_usage_time dataflow_googleapis_com:job_total_memory_usage_time
job/total_streaming_data_processed dataflow_googleapis_com:job_total_streaming_data_processed
job/total_pd_usage_time dataflow_googleapis_com:job_total_pd_usage_time

Weitere Informationen finden Sie unter Cloud Monitoring-Messwerte PromQL zuordnen.

Abfrage erstellen

Um die geschätzten Kosten zu ermitteln, berechnen Sie die Preise für jede Komponente anhand des aktuellen Werts der einzelnen Messwerte. Die Messwerte werden alle 60 Sekunden erfasst. Wenn Sie den aktuellen Wert abrufen möchten, verwenden Sie eine 1-Minuten-Fensterfunktion und nehmen Sie den Höchstwert in jedem Fenster.

  • Um die geschätzten CPU-Kosten zu ermitteln, müssen Sie job/total_vcpu_time zuerst von Sekunden in Stunden umrechnen. Multiplizieren Sie das Ergebnis mit dem CPU-Preis pro vCPU und Stunde.

    # ((vCPU time)[Bucket 1m] / Seconds per hour * vCPU Price)
    max_over_time(dataflow_googleapis_com:job_total_vcpu_time[1m]) / 3600 * CPU_PRICE
    

    Diese Formel gibt die geschätzten CPU-Kosten für alle Jobs im Projekt an. Wenn Sie die geschätzten CPU-Kosten pro Job abrufen möchten, verwenden Sie den Aggregationsoperator sum und gruppieren Sie nach Job-ID.

    sum(
      max_over_time(dataflow_googleapis_com:job_total_vcpu_time[1m]) / 3600 * CPU_PRICE
    ) by (job_id)
    
  • Um die geschätzten Speicherkosten zu ermitteln, müssen Sie job/total_memory_usage_time von Sekunden in Stunden umrechnen. Multiplizieren Sie mit dem Speicherpreis pro GB und Stunde und gruppieren Sie nach Job-ID.

    #((Memory time)[Bucket 1m] / Seconds per hour) * Memory Price
    sum(
      max_over_time(dataflow_googleapis_com:job_total_memory_usage_time[1m]) / 3600 * MEMORY_PRICE
    ) by (job_id)
    
  • Um die geschätzten Shuffle-Kosten zu ermitteln, konvertieren Sie job/total_streaming_data_processed von Byte in GB. Multiplizieren Sie die Menge mit dem Preis für die während des Shuffles verarbeiteten Daten pro GB und gruppieren Sie die Ergebnisse nach Job-ID.

    # Shuffle Billing. Reported once every 60 seconds, measured in bytes.
    # Formula: (Shuffle Data)[Bucket 1m] / (Bytes in GB) * (Shuffle Price)
    sum(
      max_over_time(
        dataflow_googleapis_com:job_total_streaming_data_processed[1m]
     ) / 1000000000 * SHUFFLE_PRICE
    ) by (job_id)
    
  • Um die geschätzten Kosten für die Nutzung des nichtflüchtigen Speichers zu ermitteln, indexieren Sie das Label storage_type, um nach Festplattentyp (Standard oder SSD) zu trennen. Wandeln Sie jeden Wert von GB-Sekunden in GB-Stunden um und gruppieren Sie die Werte nach Job-ID.

    # Formula: ((Standard PD time)[Bucket 1m] / Seconds per hour) * Standard PD price
    sum(
      max_over_time(
        dataflow_googleapis_com:job_total_pd_usage_time{storage_type="HDD"}[1m]
      ) / 3600 * STANDARD_PD_PRICE
    ) by (job_id)
    
    # Formula: ((SSD PD time)[Bucket 1m] / Seconds per hour) * SSD PD price
    sum(
      max_over_time(
        dataflow_googleapis_com:job_total_pd_usage_time{storage_type="SSD"}[1m]
      ) / 3600 * SSD_PD_PRICE
    ) by (job_id)
    
  • Wenn Sie die vorherigen Werte addieren, erhalten Sie die geschätzten Kosten pro Job. So rufen Sie die 25 wichtigsten Jobs ab:

    topk(25,
      # Sum the individual values.
    )
    

Vollständige Abfrage schreiben

Das Folgende zeigt die vollständige Abfrage:

topk(25,
sum(
  max_over_time(
    dataflow_googleapis_com:job_total_vcpu_time[1m]) / 3600 * CPU_PRICE
  )
  by (job_id) +
sum(
  max_over_time(
    dataflow_googleapis_com:job_total_memory_usage_time[1m]) / 3600 * MEMORY_PRICE
  )
  by (job_id) +
sum(
  max_over_time(
    dataflow_googleapis_com:job_total_streaming_data_processed[1m]) / 1000000000 * SHUFFLE_PRICE
  )
  by (job_id) +
sum(
  max_over_time(
    dataflow_googleapis_com:job_total_pd_usage_time{storage_type="HDD"}[1m]) / 3600 * STANDARD_PD_PRICE
  )
  by (job_id) +
sum(
  max_over_time(
    dataflow_googleapis_com:job_total_pd_usage_time{storage_type="SSD"}[1m]) / 3600 * SSD_PD_PRICE
  )
  by (job_id)
)

Ersetzen Sie die folgenden Variablen durch Werte aus der Dataflow-Preisseite für Ihre Region.

  • CPU_PRICE: CPU-Preis pro vCPU und Stunde
  • MEMORY_PRICE: Speicherpreis pro GB und Stunde
  • SHUFFLE_PRICE: Shuffle-Preis pro GB
  • STANDARD_PD_PRICE: Preis für Standard-Persistent Disk, pro GB und Stunde
  • SSD_PD_PRICE: Preis für nichtflüchtige SSD-Speicher pro GB und Stunde

Dashboard bearbeiten

Wenn Sie in diesem Projekt noch kein benutzerdefiniertes Dashboard für Dataflow erstellt haben, gehen Sie so vor:

  1. Rufen Sie in der Google Cloud Console die Seite Dataflow > Monitoring auf.

    Zu Monitoring

  2. Klicken Sie im Drop-down-Menü Vordefiniert auf Dashboard anpassen.

  3. Optional: Geben Sie im Feld Name der benutzerdefinierten Ansicht einen Namen für das Dashboard ein.

Wenn Sie bereits ein benutzerdefiniertes Dashboard erstellt haben, gehen Sie so vor, um es zu bearbeiten:

  1. Rufen Sie in der Google Cloud Console die Seite Dataflow > Monitoring auf.

    Zu Monitoring

  2. Wählen Sie im Drop-down-Menü Vordefiniert das benutzerdefinierte Dashboard aus.

  3. Klicken Sie auf Dashboard bearbeiten.

Messwertdiagramm hinzufügen

So fügen Sie dem Dashboard ein Messwertdiagramm hinzu:

  1. Klicken Sie auf Widget hinzufügen.
  2. Wählen Sie im Bereich Widget hinzufügen die Option Messwert aus.
  3. Geben Sie im Feld Widget-Titel einen Titel für das Diagramm ein, z. B. Estimated cost (top 25).
  4. Klicken Sie auf PROMQL.
  5. Fügen Sie die zuvor gezeigte PromQL-Abfrage ein.
  6. Klicken Sie auf Abfrage ausführen.
  7. Klicken Sie auf Übernehmen.
  8. Optional: Ziehen Sie das Diagramm an die gewünschte Position im Dashboard.

Nächste Schritte