2016-11-23 3 views
1

Mein Team bei Moloco führt viele Dataflow-Pipelines durch (stündlich und täglich, meist Batch-Jobs). Von Zeit zu Zeit möchten wir die Gesamtkosten jeder Pipeline berechnen, um festzustellen, welche Verbesserungen wir vornehmen können Kosten. In den letzten Wochen geht einer unserer Techniker normalerweise zur Website für die Jobüberwachung (über https://console.cloud.google.com/dataflow?project= $ Projektname) und berechnet die Kosten manuell, indem er die Anzahl der Arbeiter, den Maschinentyp, die Gesamt-PD und den verwendeten Arbeitsspeicher nachschlägt usw.Kosten für jeden Pipeline-Job

Vor kurzem haben wir festgestellt, dass die Seite jetzt die "Ressourcenmetriken" zeigt, die uns helfen, unsere Zeit bei der Berechnung der Kosten zu sparen (zusammen mit dem neuen Preismodell, das vor einiger Zeit angekündigt wurde).

Da wir jeden Tag ungefähr 60-80 Datenflussjobs ausführen, ist es zeitaufwendig, die Kosten pro Job zu berechnen. Gibt es eine Möglichkeit, vollständige vCPU-, Speicher- und PD/SSD-Nutzungsmetriken über die API bei einer Job-ID zu erhalten, möglicherweise über '' PipelineResult '' oder über das Protokoll des Master-Knotens? Wenn es jetzt nicht unterstützt wird, planen Sie in naher Zukunft? Wir fragen uns, ob wir in Erwägung ziehen sollten, unser eigenes Skript oder etwas zu schreiben, das die Metriken pro Job-ID extrahiert und die Kosten berechnet, aber wir möchten, dass wir das nicht tun müssen.

Danke!

Antwort

3

Ich bin einer der Ingenieure im Dataflow-Team.

Ich würde die Verwendung des Befehlszeilentools empfehlen, um diese Metriken aufzulisten und ein Skript zu schreiben, um die Metriken aus der Ausgabezeichenfolge zu analysieren und Ihre Kosten basierend auf diesen zu berechnen. Wenn Sie dies für viele Jobs tun möchten, können Sie Ihre Jobs auch mit der gcloud beta dataflow-Jobliste auflisten. Wir arbeiten an Lösungen, um dies in Zukunft leichter zu erreichen.

Vergewissern Sie sich, dass Sie gcloud 135.0 verwenden.0+:

gcloud version 

Wenn nicht, können Sie es aktualisieren mit:

gcloud components update 

Anmeldung mit einem Konto, das Zugriff auf das Projekt läuft Ihre Arbeit hat:

cloud auth login 

Stellen Sie Ihr Projekt

gcloud config set project <my_project_name> 

Führen Sie diese com mand auf die Metriken Liste und die Ressourcenmetriken grep:

gcloud beta dataflow metrics list <job_id> --project=<my_project_name> | grep Service -B 1 -A 3 

Ihre Ergebnisse sollten wie so strukturiert sein:

name: 
    name: Service-mem_mb_seconds 
    origin: dataflow/v1b3 
scalar: 192001 
updateTime: '2016-11-07T21:23:46.452Z' 
-- 
name: 
    name: Service-pd_ssd_gb_seconds 
    origin: dataflow/v1b3 
scalar: 0 
updateTime: '2016-11-07T21:23:46.452Z' 
-- 
name: 
    name: Service-cpu_num 
    origin: dataflow/v1b3 
scalar: 0 
updateTime: '2016-11-07T21:23:46.452Z' 
-- 
name: 
    name: Service-pd_gb 
    origin: dataflow/v1b3 
scalar: 0 
updateTime: '2016-11-07T21:23:46.452Z' 
-- 
name: 
    name: Service-pd_gb_seconds 
    origin: dataflow/v1b3 
scalar: 12500 
updateTime: '2016-11-07T21:23:46.452Z' 
-- 
name: 
    name: Service-cpu_num_seconds 
    origin: dataflow/v1b3 
scalar: 50 
updateTime: '2016-11-07T21:23:46.452Z' 
-- 
name: 
    name: Service-pd_ssd_gb 
    origin: dataflow/v1b3 
scalar: 0 
updateTime: '2016-11-07T21:23:46.452Z' 
-- 
name: 
    name: Service-mem_mb 
    origin: dataflow/v1b3 
scalar: 0 
updateTime: '2016-11-07T21:23:46.452Z' 

Die relevantesten für Sie sind:

  • -Service-cpu_num_seconds
  • Service-mem_mb_seconds
  • Service-pd_gb_seconds
  • Service pd_ssd_gb_seconds

Hinweis: Diese Metrik-Namen in Zukunft bald ändern wird, zu:

  • TotalVCPUUsage
  • TotalMemoryUsage
  • TotalHDDPersistentDiskUsage
  • TotalSSDPersistentDiskUsage
+0

Dies ist genau das, was ich brauchte. Nach dem Upgrade auf den neuesten gcloud sdk (135.0.0) funktioniert alles perfekt! –

+0

Wie berechnen Sie die Kosten anhand der oben genannten Messwerte? – ghostcoder