Plug-in StatsD

StatsD è un protocollo per l'invio di metriche e un demone per l'aggregazione dei dati metrici. Configurando il plug-in StatisticheD dell'agente Monitoring, l'agente deve funzionare come daemon StatisticheD che scrive le metriche Monitoraggio.

L’utilizzo del plug-in StatisticheD con la sua configurazione predefinita è il modo più semplice per ottenere le metriche definite dall'utente in Monitoring. Il plug-in StatsD è disponibile solo nell'agente Stackdriver Monitoring per Linux.

L'agente Monitoring può anche esportare altre metriche collectd come metriche definite dall'utente, ma non esiste una semplice configurazione predefinita. Per maggiori dettagli, consulta Metriche definite dall'utente dell'agente.

Questa funzionalità è disponibile solo per gli agenti in esecuzione su Linux. Non è disponibile su Windows.

Discovery

Il monitoraggio non rileva automaticamente StatsD. Per utilizzare StatisticheD configura il plug-in StatisticheD come descritto nella sezione successiva.

Configurazione del plug-in StatsD

Prerequisiti

Il plug-in StatsD richiede la versione 5.5.2-356 o successive dell'agente di monitoraggio. Per aggiornare l'agente, consulta Aggiornamento dell'agente.

Attivazione del plug-in

Esegui i seguenti passaggi nell'istanza VM supportata che esegue Linux:

  1. Scarica statsd.conf e inseriscilo nel /etc/stackdriver/collectd.d/ utilizzando questo comando:

    (cd /etc/stackdriver/collectd.d/ && sudo curl -O https://raw.githubusercontent.com/Stackdriver/stackdriver-agent-service-configs/master/etc/collectd.d/statsd.conf)
    
  2. Il file di configurazione predefinito indica all'agente di accettare le metriche StatisticheD sulla porta StatisticheD predefinita, 8125.

    Se desideri inviare alcune metriche al tuo daemon StatisticheD e altre metriche al daemon StatisticheD dell'agente, quindi modifica le impostazioni della porta di configurazione del deployment.

  3. Riavviare l'agente di monitoraggio per acquisire la configurazione di StatsD eseguendo il seguente comando:

    sudo service stackdriver-agent restart
    

Per ulteriori informazioni sul plug-in collectd statsd, consulta Plug-in: StatsD.

Mappatura predefinita alle metriche definite dall'utente

Per iniziare rapidamente, il plug-in StatsD dell'agente è dotato di una configurazione collectd predefinita che esegue la mappatura dalle metriche StatsD alle metriche predefinite dall'utente di Stackdriver:

  • Tutte le metriche del plug-in StatsD hanno statsd nel componente plugin collectd.

  • Ogni tipo di metrica StatsD, contenuto nel componente collectd type, ha un nome corrispondente definito dall'utente.

  • Il nome della metrica StatisticheD, presente nella sezione type_instance raccolta componente: viene memorizzato come valore di un'etichetta denominata metric.

    Il valore dell'etichetta metric è diverso per il tipo di metrica Timer: include sia il nome della metrica sia il nome di un contatore: media, superiore, inferiore, somma, percentile-50 e percentile-95.

Ad esempio, la tabella seguente mostra come i tipi di metriche StatsD supportati e il nome della metrica vengono mappati alle metriche definite dall'utente di monitoraggio:

Tipo StatsD Nome StatsD Tipo di metrica Stackdriver Tipo di metrica Tipo di valore Etichette delle metriche
Contatore my.counter custom.googleapis.com/statsd/derive Cumulativo Int64 metric:my.counter
Misuratore my.gauge custom.googleapis.com/statsd/gauge Misuratore Doppio metric:my.gauge
Imposta my.set custom.googleapis.com/statsd/objects Misuratore Doppio metric:my.set
Timer1 my.timer custom.googleapis.com/statsd/latency Misuratore Doppio metrica:my.timer-average
(uguale) (stessa) (uguale) metrica:my.timer-upper
(uguale) (stessa) (uguale) metric:my.timer-lower
(uguale) (stessa) (stessa) metric:my.timer-sum
(uguale) (stessa) (uguale) metrica:my.timer-percentile-50
(uguale) (stessa) (stessa) metrica:my.timer-percentile-95
custom.googleapis.com/statsd/gauge Misuratore (stessa) metric:my.timer-count

Note:
1 Esiste una sequenza in entrata di metriche del timer statsd con lo stesso nome. L'agente aggrega le metriche del timer StatisticheD ed esporta i dati di riepilogo a 7 diverse serie temporali.

Per ulteriori informazioni sui tipi StatsD, consulta la specifica StatsD.

Personalizzazione delle metriche esportate

La configurazione predefinita di StatisticheD è progettata per aiutarti a iniziare rapidamente. Questo ti aiuta a personalizzare la configurazione per soddisfare esigenze più complesse.

Devi conoscere le metriche definite dall'utente. Per un introduzione alle metriche, consulta Metriche, serie temporali e risorse. Per ulteriori informazioni, vedi Panoramica delle metriche definite dall'utente.

Puoi personalizzare i seguenti elementi:

  • Puoi modificare i valori assegnati all'etichetta predefinita metric. L'utilizzo di più valori di etichetta comporta un aumento delle serie temporali nella metrica definita dall'utente. L'utilizzo di meno valori delle etichette comporta meno serie temporali.

  • Puoi modificare i tipi di metriche definite dall'utente. Non è necessario utilizzare i tipi predefiniti forniti nella configurazione predefinita. Ad esempio, puoi identificare le metriche con un determinato nome e utilizzare un diverso tipo di metrica definita dall'utente per queste.

  • Se modifichi i tipi di metriche definite dall'utente, puoi anche modificare le etichette associate a ciascun tipo. La configurazione predefinita ha un singolo ma puoi aggiungerne altre o modificare la chiave di etichetta.

Se modifichi i tipi di metriche, devi definire la nuova metrica definita dall'utente. nell'API Monitoring. Per maggiori dettagli, consulta la sezione che segue. Progettare un tipo di metrica.

Esempio

Supponiamo che tu stia utilizzando StatsD per monitorare un'applicazione composta da due servizi, my_service_a e my_service_b. Per ogni servizio, vuoi esportare in Monitoraggio una metrica del contatore che rappresenti il numero di richieste non riuscite. Non vuoi utilizzare i tipi di metriche StatsD predefiniti.

Metriche collectd in entrata

Prima di definire i tuoi tipi di metriche, è importante comprendere la struttura di una metrica collectd e in che modo una metrica StatsD viene mappata per impostazione predefinita alle metriche definite dall'utente.

Le metriche raccolte, incluse quelle StatisticheD, includono i seguenti componenti:

    Host, Plugin, Plugin-instance, Type, Type-instance

In questo esempio, le metriche StatsD che vuoi esportare hanno i seguenti identificativi in collectd:

Componente Valori previsti
Organizzatore any
Link statsd
Istanza plug-in unset1
Tipo derive2
Digita istanza [SERVICE_NAME].GET.[CODE]3
[VALUE] Qualsiasi valore4

Note:
1 Al momento il plug-in StatisticheD lascia vuoto questo componente.
2 Una metrica del contatore StatsD è mappata al tipo derive di collectd. 3 Ad esempio, un'istanza di tipo potrebbe essere my_service_a.GET.500. 4 [VALUE] è generalmente un timestamp e un numero a precisione doppia.

La seguente tabella mostra come viene mappata questa metrica per impostazione predefinita:

Tipo StatsD Nome StatsD Tipo di metrica Stackdriver Tipo di metrica Tipo di valore Etichette metriche
Contatore my_service_a.GET.500 custom.googleapis.com/statsd/derive Cumulativo Int64 metrica:my_servce_a.GET.500
Contatore my_service_b.GET.403 custom.googleapis.com/statsd/derive Cumulativo Int64 metrica:my_servce_b.GET.403

La mappatura predefinita potrebbe presentare alcune difficoltà:

  • Questa specifica metrica del contatore ([SERVICE_NAME].GET.[CODE]) è nella stessa tipo di metrica definita dall'utente come tutte le altre metriche del contatore. Non puoi ottenere facilmente solo i dati di questa metrica, perché al momento Stackdriver non supporta le ricerche con espressioni regolari nelle etichette.

  • Non riesci a recuperare facilmente i dati relativi ai singoli servizi o alle singole risposte i codici nei tuoi dati. Ad esempio, non è facile ottenere il numero totale errori (di tutti i tipi) che si sono verificati in my_service_a.

  • La configurazione predefinita esporta tutte le metriche StatsD in Stackdriver, il che potrebbe essere costoso se ti interessano solo determinate metriche.

Progettazione di un tipo di metrica

Per una discussione completa sulla creazione di tipi di metriche, consulta Crea un tipo di metrica definita dall'utente.

Il seguente tipo di metrica definita dall'utente è una scelta ragionevole per i dati in questo esempio, poiché contiene solo la metrica StatisticheD che ti interessa e perché la scelta delle etichette aiuta a organizzare meglio i dati:

  • Tipo: custom.googleapis.com/http/request_errors
  • Etichette:
    • service_name (STRING): il nome del servizio.
    • response_code (INT64): il codice di risposta HTTP.
  • Tipo: CUMULATIVO
  • Tipo di valore: INT64

La tabella seguente mostra la mappatura desiderata da StatsD a Stackdriver:

Tipo di Statistiche Nome StatsD Tipo di metrica Stackdriver Tipo di metrica Tipo di valore Etichette metriche
Contatore my_service_a.GET.500 custom.googleapis.com/http/request_errors Cumulativo Int64 service_name:my_service_a, response_code:500
Contatore my_service_b.GET.403 custom.googleapis.com/http/request_errors Cumulativo Int64 nome_servizio:mio_servizio_b, codice_risposta:403

Dopo aver progettato il tipo di metrica, creala utilizzando metricDescriptors.create. Per informazioni su come consentire a Monitoring di creare il tipo di metrica consulta Creazione automatica di descrittori delle metriche.

Configurazione mappatura

Per esportare la metrica StatisticheD nel nuovo tipo di metrica definito dall'utente, sostituire i contenuti della configurazione predefinita del plug-in StatisticheD, /etc/stackdriver/collectd.d/statsd.conf, con il seguente codice:

<Plugin statsd>
  Host "127.0.0.1"
  Port "8125"
  DeleteSets true
  TimerPercentile 50.0
  TimerPercentile 95.0
  TimerLower true
  TimerUpper true
  TimerSum true
  TimerCount true
</Plugin>

LoadPlugin match_regex
LoadPlugin target_set
LoadPlugin target_replace

# Insert a new rule in the default "PreCache" chain, to divert your metrics.
PreCacheChain "PreCache"
<Chain "PreCache">
  # The following rule does all the work for your metric:
  <Rule "rewrite_request_errors">
    # Do a careful match for just your metrics; if it fails, drop down
    # to the next rule:
    <Match regex>
      Plugin "^statsd$"
      TypeInstance "^.*\\.GET\\..*$"    # Match on type instance.
    </Match>

    <Target "set">
      # Specify the metric descriptor type:
      MetaData "stackdriver_metric_type" "custom.googleapis.com/http/request_errors"
      # Initialize the labels from the "type_instance" label; clean the values up in the next Target below.
      MetaData "label:service_name" "%{type_instance}"
      MetaData "label:response_code" "%{type_instance}"
    </Target>

    <Target "replace">
      # Remove ".GET.[code]" to get the real service name.
      MetaData "label:service_name" "\\.GET\\.[0-9]*$" ""
      # Remove "[service].GET." to get the real response code.
      MetaData "label:response_code" "^[^\\.]*\\.GET\\." ""
    </Target>
  </Rule>
</Chain>

Riavvia l'agente

Riavvia l'agente per riprendere la nuova configurazione eseguendo questo comando sull'istanza VM:

sudo service stackdriver-agent restart

Le informazioni sulle metriche definite dall'utente iniziano a confluire in Monitoraggio immediatamente.

Passaggi successivi

La personalizzazione del plug-in StatisticheD equivale alla personalizzazione dei dati raccolti metriche per Monitoring. Per ulteriori informazioni, consulta le sezioni di riferimento e risoluzione dei problemi di Metriche definite dall'utente dall'agente.