Les services de données Google Cloud décrits sur cette page incluent ceux qui traitent les données fournies et produisent les résultats de ce traitement, soit en réponse à une requête, soit en continu. Plutôt que d'utiliser la disponibilité et la latence comme SLI principal pour ces services, vous avez le choix entre les options suivantes:
- L'exactitude est une mesure du nombre d'erreurs de traitement engendrées par le pipeline.
- La fréquence d'actualisation, qui mesure la rapidité avec laquelle les données sont traitées.
Pour plus d'informations sur les pipelines de données du point de vue de l'ingénierie SRE, consultez la section Pipelines de traitement des données du manuel sur l'ingénierie en fiabilité des sites.
Vous pouvez exprimer un SLI d'exactitude basé sur des requêtes à l'aide de la structure TimeSeriesRatio
pour configurer un ratio des éléments qui présentent des problèmes de traitement par rapport à tous les éléments traités.
Vous décidez de la manière de filtrer la métrique à l'aide de ses libellés disponibles afin d'obtenir votre détermination souhaitée du total de problèmes et des éléments "valides".
Vous pouvez exprimer un SLI d'actualisation basé sur des requêtes à l'aide d'une structure DistributionCut
.
Dataflow
Dataflow est un service entièrement géré d'analyse de flux qui permet de réduire la latence, la durée de traitement et les coûts. Vous pouvez utiliser Dataflow pour traiter des données sous forme de flux ou par lot à l'aide du SDK Apache Beam.
Pour en savoir plus, consultez les ressources suivantes:
- Documentation pour Dataflow.
- Liste des types de métriques
dataflow.googleapis.com
.
SLI d'exactitude
Dataflow écrit des données de métriques dans Cloud Monitoring à l'aide du type de ressource surveillée dataflow_job
et du type de métrique job/element_count
, qui compte le nombre d'éléments ajoutés à la pcollection pour le moment. Lorsque vous additionnez l'étiquette de ressource job_name
, vous obtenez le nombre d'éléments à traiter par la tâche.
Vous pouvez également utiliser le type de métrique
avec le type de ressource surveillée logging.googleapis.com
/log_entry_countdataflow_job
pour compter le nombre d'erreurs enregistrées par une tâche donnée, à l'aide du libellé de métrique severity
.
Vous pouvez utiliser ces métriques pour exprimer un SLI d'exactitude basé sur des requêtes en tant que fraction d'erreurs et de tous les éléments traités à l'aide d'une structure TimeSeriesRatio
, comme indiqué dans l'exemple suivant :
"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\"",
}
}
}
SLI d'actualisation
Dataflow écrit également les données de métriques dans Cloud Monitoring à l'aide du type de ressource surveillée dataflow_job
et du type de métrique job/per_stage_system_lag
, qui mesure la durée maximale actuelle de traitement ou d'attente de traitement d'un élément de données.
Vous pouvez exprimer un SLI d'actualisation à l'aide de cette métrique à l'aide d'une structure DistributionCut
.
L'exemple de SLO suivant s'attend à ce que l'élément de données le plus ancien soit traité en moins de 100 secondes 99% du temps sur une période glissante d'une heure:
{
"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"
}
Vous pouvez également exprimer un SLI d'actualisation à l'aide d'une structure WindowsBasedSli
.
L'exemple de SLO suivant s'attend à ce que 99% des fenêtres de cinq minutes sur une période glissante d'un jour ne comportent pas (zéro) d'éléments traités en plus de 100 secondes :
{
"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"
}
Notez que pour qu'une fenêtre soit considérée comme "bonne", la métrique ne peut pas dépasser le seuil spécifié dans range
à tout moment au cours de la période d'évaluation.
Dataproc
Dataproc fournit un cluster entièrement géré et conçu pour une utilisation spécifique qui peut évoluer automatiquement pour prendre en charge toutes les données Hadoop ou Spark, ou les tâches de traitement d'analyse.
Pour en savoir plus, consultez les ressources suivantes:
- Documentation pour Dataproc.
- Liste des types de métriques
dataproc.googleapis.com
.
SLI d'exactitude
Dataproc écrit des données de métriques dans Cloud Monitoring à l'aide du type de ressource surveillée cloud_dataproc_cluster
et des types de métriques suivants:
-
cluster/job/submitted_count
, qui compte le nombre total de tâches envoyées. -
cluster/job/failed_count
, qui compte le nombre total de tâches ayant échoué.
Vous pouvez utiliser ces métriques pour exprimer un SLI d'exactitude basé sur des requêtes en tant que ratio, TimeSeriesRatio
, de tâches ayant échoué sur toutes les tâches envoyées, comme illustré dans l'exemple suivant:
"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\"",
}
}
}
SLI d'actualisation
Dataproc écrit également les données de métriques dans Cloud Monitoring à l'aide du type de ressource surveillée cloud_dataproc_cluster
et des types de métriques suivants:
-
cluster/job/duration
, qui mesure la durée des états de traitement des tâches. Vous pouvez filtrer les données du libellé de métriquestate
pour identifier le temps passé dans des états spécifiques. Par exemple, vous pouvez créer un SLI qui mesure la durée des tâches dans l'étatPENDING
afin de définir un délai d'attente maximal autorisé avant le début du traitement de la tâche. -
cluster/job/completion_time
, qui mesure la durée de la tâche pendant la métriquecluster/job/completion_time
. Utilisez cette option lorsque l'achèvement de la tâche est une métrique bien comprise ou que le volume de données traitées par tâche dans un cluster ne varie pas, ce qui peut affecter le temps de traitement.
Vous pouvez exprimer un SLI d'actualisation à l'aide de ces métriques à l'aide d'une structure DistributionCut
, comme illustré dans les exemples suivants.
L'exemple de SLO suivant utilise cluster/job/duration
et prévoit que 99% des tâches de "my_cluster" sont à l'état PENDING
pendant moins de 100 secondes sur une période glissante de 24 heures:
{
"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"
}
L'exemple de SLO suivant utilise cluster/job/completion_time
et s'attend à ce que 99% des tâches de "my_cluster" soient terminées en moins de 100 secondes sur une période de 24 heures glissantes:
{
"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"
}