Servizi di elaborazione dati

I Google Cloud servizi di dati descritti in questa pagina includono quelli che elaborano i dati forniti e restituiscono i risultati dell'elaborazione, in risposta a una richiesta o in modo continuo. Anziché utilizzare la disponibilità e la latenza come SLI principali per questi servizi, le scelte più appropriate sono le seguenti:

  • Correttezza, una misura del numero di errori di elaborazione in cui incorre la pipeline.
  • Aggiornamento, una misura della velocità con cui vengono elaborati i dati.

Per ulteriori informazioni sulle pipeline di dati dal punto di vista SRE, consulta Data Processing Pipelines in Site Reliability Engineering Workbook.

Esprimi un indicatore SLI di correttezza basato sulle richieste utilizzando la struttura TimeSeriesRatio per impostare un rapporto tra gli elementi che hanno avuto problemi di elaborazione e tutti gli elementi elaborati. Decidi come filtrare la metrica utilizzando le etichette disponibili per ottenere la tua determinazione preferita dei totali "problema" e "valido".

Esprimi un SLI di aggiornamento basato su richiesta utilizzando una struttura DistributionCut.

Dataflow

Dataflow è un servizio completamente gestito di analisi dei flussi di dati che riduce al minimo la latenza, i tempi di elaborazione e i costi. Puoi utilizzare Dataflow per elaborare i dati come flusso o in batch utilizzando l'SDK Apache Beam.

Per ulteriori informazioni, consulta le seguenti risorse:

SLI di correttezza

Dataflow scrive i dati delle metriche in Cloud Monitoring utilizzando il tipo di risorsa monitorata dataflow_job e il tipo di metrica job/element_count, che conteggia il numero di elementi aggiunti finora alla PCollection. La somma dell'etichetta della risorsa job_name fornisce il numero di elementi da elaborare dal job.

Separatamente, puoi utilizzare il tipo di metrica logging.googleapis.com/log_entry_count con il tipo di risorsa monitorata dataflow_job per conteggiare il numero di errori registrati da un determinato job utilizzando l'etichetta della metrica severity.

Puoi utilizzare queste metriche per esprimere un indicatore SLI di correttezza basato sulle richieste come frazione di errori e di tutti gli elementi elaborati utilizzando una struttura TimeSeriesRatio, come mostrato nell'esempio seguente:

"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 di aggiornamento

Dataflow scrive anche i dati delle metriche in Cloud Monitoring utilizzando il tipo di risorsa monitorata dataflow_job e il tipo di metrica job/per_stage_system_lag, che misura la durata massima attuale per cui un elemento di dati è stato elaborato o è in attesa di elaborazione.

Puoi esprimere un indicatore SLI di aggiornamento utilizzando questa metrica con una struttura DistributionCut.

Il seguente SLO prevede che l'elemento di dati meno recente venga elaborato in meno di 100 secondi il 99% delle volte in un periodo di un'ora:

{
  "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"
}

Puoi anche esprimere un indicatore SLI di aggiornamento utilizzando una struttura WindowsBasedSli.

Il seguente SLO di esempio prevede che il 99% delle finestre di cinque minuti in un periodo di un giorno continuativo non veda l'elaborazione di elementi in più di 100 secondi:

{
  "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"
}

Tieni presente che, affinché una finestra venga considerata "buona", la metrica non può superare la soglia specificata in range in nessun momento durante la finestra di valutazione.

Dataproc

Dataproc fornisce un cluster creato appositamente e completamente gestito che può scalare automaticamente per supportare qualsiasi job di elaborazione di dati o analisi Hadoop o Spark.

Per ulteriori informazioni, consulta le seguenti risorse:

SLI di correttezza

Dataproc scrive i dati delle metriche in Cloud Monitoring utilizzando il tipo di risorsa monitorata cloud_dataproc_cluster e i seguenti tipi di metriche:

Puoi utilizzare queste metriche per esprimere un SLI di correttezza basato su richiesta come rapporto, TimeSeriesRatio, tra i job non riusciti e tutti i job inviati, come mostrato nell'esempio seguente:

"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 di aggiornamento

Dataproc scrive anche i dati delle metriche in Cloud Monitoring utilizzando il tipo di risorsa monitorata cloud_dataproc_cluster e i seguenti tipi di metriche:

  • cluster/job/duration, che misura il tempo di permanenza dei job negli stati di elaborazione. Puoi filtrare i dati in base all'etichetta della metrica state per identificare il tempo trascorso in stati specifici. Ad esempio, puoi creare un indicatore SLI che misuri il tempo in cui i job si trovano nello stato PENDING, per impostare un tempo di attesa massimo consentito prima dell'inizio dell'elaborazione del job.
  • cluster/job/completion_time, che misura per quanto tempo i job rimangono nella metrica cluster/job/completion_time. Utilizza questa opzione quando il completamento del job è una metrica ben compresa o quando il volume di dati elaborati dai job in un cluster non varia, il che influirebbe sul tempo di elaborazione.

Puoi esprimere un indicatore SLI di aggiornamento utilizzando queste metriche con una struttura DistributionCut, come mostrato negli esempi seguenti.

Il seguente SLO di esempio utilizza cluster/job/duration e prevede che il 99% dei job in "my_cluster" si trovi nello stato PENDING per meno di 100 secondi in un periodo mobile di 24 ore:

{
  "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"
}

Il seguente SLO di esempio utilizza cluster/job/completion_time e prevede che il 99% dei job in "my_cluster" venga completato in meno di 100 secondi in un periodo di 24 ore continuative:

{
  "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"
}