StatsD è un protocollo per l'invio di metriche e un daemon per l'aggregazione dei dati delle metriche. Se configuri il plug-in StatsD dell'agente Monitoring, l'agente funziona come daemon StatsD che scrive le metriche in Monitoring.
L'utilizzo del plug-in StatsD con la configurazione predefinita è il modo più semplice per trasferire le metriche definite dall'utente in Monitoring. Il plug-in StatsD è disponibile solo nell'agente Linux Stackdriver Monitoring.
L'agente Monitoring può esportare anche altre metriche raccolte come metriche definite dall'utente, ma non esiste una semplice configurazione predefinita. Per maggiori dettagli, consulta Metriche definite dall'utente dall'agente.
Questa funzionalità è disponibile solo per gli agenti in esecuzione su Linux. Non è disponibile su Windows.
Scoperta
Il monitoraggio non rileva automaticamente StatsD. Per utilizzare le metriche StatsD, configura il plug-in StatsD come descritto nella sezione successiva.
Configurazione del plug-in StatsD
Prerequisiti
Il plug-in StatsD richiede la versione 5.5.2-356 o successiva dell'agente Monitoring. Per aggiornare l'agente, consulta Aggiornamento dell'agente.
Attivazione del plug-in
Esegui le seguenti operazioni sull'istanza VM supportata che esegue Linux:
Scarica statsd.conf e inseriscilo in
/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)
Il file di configurazione predefinito indica all'agente di accettare le metriche StatsD sulla porta StatsD predefinita, 8125.
Se vuoi inviare alcune metriche al tuo daemon StatsD e altre metriche al daemon StatsD dell'agente, modifica le impostazioni della porta nel file di configurazione.
Riavvia l'agente Monitoring per recuperare la configurazione StatsD eseguendo questo comando:
sudo service stackdriver-agent restart
Per ulteriori informazioni sul plug-in statsd
collectd
, consulta
Plugin:StatsD.
Mappatura predefinita alle metriche definite dall'utente
Per iniziare rapidamente, il plug-in StatsD dell'agente include una configurazione di raccolta predefinita che mappa le metriche StatsD alle metriche di Stackdriver definite dall'utente:
Tutte le metriche del plug-in StatsD hanno
statsd
nel componenteplugin
raccolto.A ogni tipo di metrica StatsD, presente nel componente
type
raccolto, è associato un nome di tipo di metrica definito dall'utente.Il nome metrica StatsD, presente nel componente
type_instance
raccolto, viene memorizzato come valore di un'etichetta denominatametric
.Il valore dell'etichetta
metric
è diverso per il tipo di metricaTimer
: include sia il nome della metrica sia un nome del contatore (media, superiore, inferiore, somma, percentile-50 e percentile-95).
Ad esempio, la tabella seguente mostra in che modo i tipi di metriche StatsD supportati e il nome della metrica vengono mappati alle metriche di Monitoring definite dall'utente:
Tipo StatsD | Nome StatsD | Tipo di metrica Stackdriver | Tipo di metrica | Tipo di valore | Etichette metriche |
---|---|---|---|---|---|
Contatore | my.counter | custom.googleapis.com/statsd/derive | Cumulativa | Int64 | metric:my.counter |
Gauge | my.gauge | custom.googleapis.com/statsd/gauge | Gauge | Double | metric:my.gauge |
Imposta | my.set | custom.googleapis.com/statsd/objects | Gauge | Double | metric:my.set |
Timer1 | my.timer | custom.googleapis.com/statsd/latency | Gauge | Double | metric:my.timer-average |
(uguale) | (uguale) | (uguale) | metric:my.timer-upper | ||
(uguale) | (uguale) | (uguale) | metric:my.timer-lower | ||
(uguale) | (uguale) | (uguale) | metric:my.timer-sum | ||
(uguale) | (uguale) | (uguale) | metric:my.timer-percentile-50 | ||
(uguale) | (uguale) | (uguale) | metric:my.timer-percentile-95 | ||
custom.googleapis.com/statsd/gauge | Gauge | (uguale) | metric:my.timer-count |
Note:
1 È presente una sequenza in arrivo di metriche relative al timer alle statistiche con lo stesso nome. L'agente aggrega le metriche del timer StatsD ed esporta i dati di riepilogo in 7 diverse serie temporali.
Per ulteriori informazioni sui tipi di StatsD, consulta la specifica StatsD.
Personalizzazione delle metriche esportate
La configurazione StatsD predefinita è progettata per aiutarti a iniziare rapidamente. Questa sezione consente di personalizzare la configurazione per soddisfare esigenze più complesse.
Dovresti avere familiarità con le metriche definite dall'utente. Per un'introduzione alle metriche, consulta Metriche, serie temporali e risorse. Per ulteriori informazioni, consulta la 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 delle etichette comporta un maggior numero di serie temporali nella metrica definita dall'utente. Se utilizzi meno valori di etichetta, verranno generati meno serie temporali.Puoi modificare i tipi di metriche definite dall'utente. Non è necessario utilizzare i tipi predefiniti forniti nella configurazione predefinita. Ad esempio, potresti identificare le metriche con un determinato nome e utilizzare per esse un tipo di metrica diverso definito dall'utente.
Se modifichi i tipi di metrica definita dall'utente, puoi anche modificare le etichette associate a ciascun tipo. La configurazione predefinita ha una sola etichetta, ma puoi aggiungere altre etichette o modificare la chiave di etichetta.
Se modifichi i tipi di metriche, devi definire i nuovi tipi di metriche definite dall'utente nell'API Monitoring. Per maggiori dettagli, consulta la sezione seguente, Progettazione di un tipo di metrica.
Esempio
Supponi di utilizzare StatsD per monitorare un'applicazione composta da due
servizi, my_service_a
e my_service_b
. Per ogni servizio, vuoi esportare in Monitoring una metrica del contatore che rappresenti il numero di richieste non riuscite. Non vuoi utilizzare i tipi di metriche StatsD predefiniti.
Metriche raccolte in entrata
Prima di definire i tuoi tipi di metriche, è importante comprendere la struttura di una metrica raccolta e il modo in cui una metrica StatsD viene mappata per impostazione predefinita all'interno di metriche definite dall'utente.
Le metriche raccolte, incluse le metriche StatsD, includono i seguenti componenti:
Host, Plugin, Plugin-instance, Type, Type-instance
In questo esempio, le metriche StatsD che vuoi esportare hanno i seguenti identificatori in raccolta:
Componente | Valori previsti |
---|---|
Organizzatore | qualsiasi |
Plug-in | statsd |
Istanza plug-in | non impostato1 |
Tipo | derive 2 |
Digita istanza | [SERVICE_NAME].GET.[CODE] 3 |
[VALUE] |
qualsiasi valore4 |
Note:
1 al momento il plug-in StatsD lascia vuoto questo componente.
2 Una metrica Contatore StatsD è mappata al tipo derive
raccolto.
3 Ad esempio, un'istanza di tipo potrebbe essere my_service_a.GET.500
.
4 [VALUE] è in genere un timestamp e un numero a precisione doppia.
La tabella seguente mostra come verrebbe 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 | Cumulativa | Int64 | metric:my_servce_a.GET.500 |
Contatore | my_service_b.GET.403 | custom.googleapis.com/statsd/derive | Cumulativa | Int64 | metric:my_servce_b.GET.403 |
La mappatura predefinita potrebbe presentare alcune difficoltà per te:
Questa particolare metrica del contatore (
[SERVICE_NAME].GET.[CODE]
) è nello stesso tipo di metrica definita dall'utente di tutte le altre metriche del contatore. Non puoi recuperare facilmente solo i dati di questa metrica, perché al momento Stackdriver non supporta le ricerche di espressioni regolari sulle etichette.Non puoi ottenere facilmente dati per singoli servizi o singoli codici di risposta nei tuoi dati. Ad esempio, non è facile recuperare il numero totale di errori (di ogni tipo) 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 dei tipi di metriche, consulta Creare un tipo di metrica definita dall'utente.
Il seguente tipo di metrica definita dall'utente è una scelta ragionevole per i dati di questo esempio, perché contiene solo la metrica StatsD che ti interessa e perché la sua scelta di 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 StatsD | 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 | Cumulativa | Int64 | nome_servizio:mio_servizio_a, codice_risposta:500 |
Contatore | my_service_b.GET.403 | custom.googleapis.com/http/request_errors | Cumulativa | Int64 | nome_servizio:mio_servizio_b, codice_risposta:403 |
Una volta progettato il tipo di metrica, crealo utilizzando metricDescriptors.create. Per informazioni su come consentire a Monitoring di creare il tipo di metrica, consulta Creazione automatica dei descrittori delle metriche.
Configurazione mappatura
Per esportare la metrica StatsD nel nuovo tipo di metrica definita dall'utente, sostituisci i contenuti della configurazione predefinita del plug-in StatsD, /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 recuperare la nuova configurazione eseguendo questo comando sull'istanza VM:
sudo service stackdriver-agent restart
Le informazioni sulle metriche definite dall'utente iniziano a confluire immediatamente in Monitoring.
Passaggi successivi
La personalizzazione del plug-in StatsD equivale alla personalizzazione delle metriche raccolte per Monitoring. Per ulteriori informazioni, consulta la sezione Riferimento e risoluzione dei problemi della pagina Metriche definite dall'utente dall'agente.