Die auf dieser Seite beschriebenen Google Cloud-Datendienste umfassen solche, die bereitgestellte Daten verarbeiten und die Ergebnisse dieser Verarbeitung ausgeben, als Reaktion auf eine Anfrage oder kontinuierlich. Statt Verfügbarkeit und Latenz als primäre SLIs für diese Dienste zu verwenden sollten Sie folgende Optionen bedenken:
- Richtigkeit: Ein Maß für die Anzahl der Verarbeitungsfehler, die bei der Pipeline auftreten.
- Aktualität: Ein Messwert, der angibt, wie schnell Daten verarbeitet werden.
Weitere Informationen zu Datenpipelines aus der SRE-Perspektive finden Sie im Handbuch: Site Reliability Engineering unter Datenverarbeitungspipelines.
Um anfragebasierte Richtigkeits-SLIs zu erstellen nutzen Sie die Struktur TimeSeriesRatio
, um das Verhältnis der Elemente, bei denen Verarbeitungsprobleme auftraten, zu den insgesamt verarbeiteten Elementen zu bestimmen.
Sie entscheiden, wie Sie den Messwert filtern. Hierzu verwenden Sie die verfügbaren Labels, um "problematische" und "gültige" Elemente so zu bestimmen, wie Sie es wünschen.
Zur Erstellung von anfragebasierten Aktualitäts-SLIs nutzen Sie eine DistributionCut
-Struktur.
Dataflow
Dataflow ist ein vollständig verwalteter Streaming-Analysedienst, der die Latenz, Verarbeitungszeit und Kosten minimiert. Sie können Dataflow verwenden, um Daten mit dem Apache Beam SDK als Stream oder in Batches zu verarbeiten.
Weitere Informationen finden Sie hier:
- Dokumentation zu Dataflow.
- Liste der
dataflow.googleapis.com
-Messwerttypen.
Richtigkeits-SLIs
Dataflow schreibt Messwertdaten mit dem überwachten Ressourcentyp dataflow_job
und dem Messwert job/element_count
in Cloud Monitoring. Dieser erfasst die Anzahl der Elemente, die bisher zur pcollection hinzugefügt wurden. Die Summe für das Ressourcenlabel job_name
gibt die Anzahl der Elemente an, die vom Job verarbeitet werden sollen.
Außerdem können Sie den Messwerttyp
mit dem überwachten Ressourcentyp logging.googleapis.com
/log_entry_countdataflow_job
verwenden, um die Anzahl der von einem bestimmten Job protokollierten Fehler zu erfassen. Dazu nutzen Sie das Messwertlabel severity
.
Sie können diese Messwerte verwenden, um anfragebasierte Richtigkeits-SLIs als Verhältnis von Fehlern zu den insgesamt verarbeiteten Elementen zu definieren. Dazu nutzen die eine TimeSeriesRatio
-Struktur, wie in folgendem Beispiel gezeigt:
"serviceLevelIndicator": {
"requestBased": {
"goodTotalRatio": {
"totalServiceFilter":
"metric.type=\"dataflow.googleapis.com/job/element_count\"
resource.type=\"dataflow_job\"
resource.label.\"job_name\"=\"my_job\"",
"badServiceFilter":
"metric.type=\"logging.googleapis.com/log_entry_count\"
resource.type=\"dataflow_job\"
resource.label.\"job_name\"=\"my_job\"
metric.label.\"severity\"=\"error\"",
}
}
}
Aktualitäts-SLIs
Dataflow schreibt außerdem Messwertdaten mit dem überwachten Ressourcentyp dataflow_job
und dem Messwerttyp job/per_stage_system_lag
, mit dem die aktuelle maximale Dauer gemessen wird, über die hinweg ein Datenelement verarbeitet wurde oder auf die Verarbeitung wartete, in Cloud Monitoring.
Um Aktualitäts-SLIs mit diesem Messwert zu erstellen nutzen Sie eine DistributionCut
-Struktur.
Im folgenden SLO-Beispiel wird erwartet, dass das älteste Datenelement 99 % der Zeit über einen rollierenden Zeitraum von einer Stunde in weniger als 100 Sekunden verarbeitet wird:
{
"serviceLevelIndicator": {
"requestBased": {
"distributionCut": {
"distributionFilter":
"metric.type=\"dataflow.googleapis.com/job/per_stage_system_lag\"
resource.type=\"dataflow_job\"
resource.label.\"job_name\"=\"my_job\"",
"range": {
"min": 0,
"max": 100
}
}
}
},
"goal": 0.99,
"rollingPeriod": "3600s",
"displayName": "99% data elements processed under 100 s"
}
Sie können Aktualitäts-SLIs auch mit einer WindowsBasedSli
-Struktur ausdrücken.
Das folgende SLO-Beispiel geht davon aus, dass in 99 % der 5-Minuten-Fenster über einen rollierenden Zeitraum von mindestens einem Tag keine Elemente (null) mit einer Verarbeitungsdauer über 100 Sekunden auftreten:
{
"displayName": "Dataflow - windowed freshness",
"serviceLevelIndicator": {
"windowsBased": {
"windowPeriod": "300s",
"metricMeanInRange": {
"timeSeries":
"metric.type=\"dataflow.googleapis.com/job/per_stage_system_lag\"
resource.type=\"dataflow_job\"
resource.label.\"job_name\"=\"my_job\"",
"range": {
"min": "0",
"max": "100"
}
}
}
},
"goal": 0.99,
"rollingPeriod": "86400s"
}
Damit ein Fenster als "Gut" angesehen wird, darf der Messwert während des Bewertungsfensters den in range
angegebenen Schwellenwert zu keiner Zeit erreichen.
Dataproc
Dataproc bietet einen vollständig verwalteten, speziell erstellten Cluster, der automatisch skalieren kann, um beliebige Hadoop- oder Spark-Datenverarbeitungs- oder Analyseverarbeitungsjobs zu unterstützen.
Weitere Informationen finden Sie hier:
- Dokumentation zu Dataproc
- Liste der
dataproc.googleapis.com
-Messwerttypen.
Richtigkeits-SLIs
Dataproc schreibt Messwertdaten mit dem überwachten Ressourcentyp cloud_dataproc_cluster
und folgenden Messwerttypen in Cloud Monitoring:
-
cluster/job/submitted_count
: Erfasst die Gesamtzahl der übermittelten Jobs. -
cluster/job/failed_count
: Erfasst die Gesamtzahl der fehlgeschlagenen Jobs.
Sie können diese Messwerte verwenden, um einen anfragebasierten Richtigkeits-SLI als Verhältnis, TimeSeriesRatio
, von fehlgeschlagenen Jobs zu insgesamt übermittelten Jobs auszudrücken. Beispiel:
"serviceLevelIndicator": {
"requestBased": {
"goodTotalRatio": {
"totalServiceFilter":
"metric.type=\"dataproc.googleapis.com/cluster/job/submitted_count\"
resource.type=\"cloud_dataproc_cluster\"
resource.label.\"cluster_name\"=\"my_cluster\"",
"badServiceFilter":
"metric.type=\"dataproc.googleapis.com/cluster/job/failed_count\"
resource.type=\"cloud_dataproc_cluster\"
resource.label.\"cluster_name\"=\"my_cluster\"",
}
}
}
Aktualitäts-SLIs
Dataproc schreibt auch Messwertdaten mit dem überwachten Ressourcentyp cloud_dataproc_cluster
und folgenden Messwerttypen in Cloud Monitoring:
-
cluster/job/duration
: Misst, wie lange Jobs im Verarbeitungsstatus verbleiben. Sie können Daten nach dem Messwertlabelstate
filtern, um die in bestimmten Zuständen verbrachte Zeit zu ermitteln. Beispiel: Sie können SLIs erstellen, die messen, wie lange Jobs den StatusPENDING
haben, um eine maximal zulässige Wartezeit vor der Verarbeitung des Jobs festzulegen. -
cluster/job/completion_time
misst, wie lange Jobs im Messwertcluster/job/completion_time
bleiben. Verwenden Sie diese Option, wenn der Jobabschluss eine gut verstandene Messgröße ist oder die Datenmenge, die von Jobs in einem Cluster verarbeitet wird, nicht variiert (dies würde sich auf die Verarbeitungszeit auswirken).
Sie können Aktualitäts-SLIs mit diesen Messwerten mit einer DistributionCut
-Struktur erstellen, wie in folgenden Beispielen gezeigt.
Das folgende SLO-Beispiel verwendet cluster/job/duration
und erwartet, dass 99 % der Jobs in "my_cluster" über einen rollierenden Zeitraum von 24 Stunden unter 100 Sekunden den Status PENDING
haben:
{
"serviceLevelIndicator": {
"requestBased": {
"distributionCut": {
"distributionFilter":
"metric.type=\"dataproc.googleapis.com/cluster/job/duration\"
resource.type=\"cloud_dataproc_cluster\"
resource.label.\"cluster_name\"=\"my_cluster\"
metric.label.\"state\"=\"PENDING\"",
"range": {
"min": 0,
"max": 100
}
}
}
},
"goal": 0.99,
"rollingPeriod": "86400s",
"displayName": "Dataproc pending jobs"
}
Das folgende SLO-Beispiel verwendet cluster/job/completion_time
und erwartet, dass 99 % der Jobs in "my_cluster" in einem Zeitraum von 24 Stunden in weniger als 100 Sekunden abgeschlossen werden:
{
"serviceLevelIndicator": {
"requestBased": {
"distributionCut": {
"distributionFilter":
"metric.type=\"dataproc.googleapis.com/cluster/job/completion_time\"
resource.type=\"cloud_dataproc_cluster\"
resource.label.\"cluster_name\"=\"my_cluster\"",
"range": {
"min": 0,
"max": 100
}
}
}
},
"goal": 0.99,
"rollingPeriod": "86400s",
"displayName": "Dataproc completed jobs"
}