StatsD è un protocollo per l'invio di metriche e un demone per l'aggregazione dei dati metrici. Configurando il plug-in StatsD dell'agente Monitoring, lo fai funzionare come un demone StatsD che scrive le metriche in monitoring.
L'utilizzo del plug-in StatsD con la relativa configurazione predefinita è il modo più semplice per inserire le tue 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 dall'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 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 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:
Scarica statsd.conf e inseriscilo in
/etc/stackdriver/collectd.d/
utilizzando il seguente 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 al daemon StatsD dell'agente, modifica le impostazioni della porta nel file di configurazione.
Riavviare l'agente di monitoraggio per acquisire la configurazione di StatsD eseguendo il seguente comando:
sudo service stackdriver-agent restart
Per saperne di più 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 componenteplugin
collectd.Ogni tipo di metrica StatsD, contenuto nel componente collectd
type
, ha un nome corrispondente definito dall'utente.Il nome della metrica StatsD, contenuto nel componente collectd
type_instance
, 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 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 | metrica:my.counter |
Misuratore | my.gauge | custom.googleapis.com/statsd/gauge | Misuratore | Doppio | metrica:my.gauge |
Imposta | my.set | custom.googleapis.com/statsd/objects | Misuratore | Doppio | metrica:my.set |
Timer1 | my.timer | custom.googleapis.com/statsd/latency | Misuratore | Doppio | metrica:my.timer-average |
(stessa) | (stessa) | (stessa) | metrica:my.timer-upper | ||
(stessa) | (stessa) | (stessa) | metrica:my.timer-lower | ||
(stessa) | (stessa) | (stessa) | metrica:my.timer-sum | ||
(stessa) | (stessa) | (stessa) | metric:my.timer-percentile-50 | ||
(stessa) | (stessa) | (stessa) | metric:my.timer-percentile-95 | ||
custom.googleapis.com/statsd/gauge | Misuratore | (stessa) | metrica: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 StatsD ed esporta i dati di riepilogo
in 7 diverse serie temporali.
Per ulteriori informazioni sui tipi StatsD, consulta la specifica StatsD.
Personalizzazione delle metriche esportate
La configurazione predefinita di StatsD è progettata per consentirti di iniziare rapidamente. Questa sezione ti aiuta a personalizzare la configurazione in base a esigenze più complesse.
Devi conoscere 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
metric
predefinita. 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 tipo di metrica definito dall'utente diverso per ciascuna.
Se modifichi i tipi di metriche definite dall'utente, puoi anche modificare le etichette associate a ogni tipo. La configurazione predefinita ha una singola etichetta, ma puoi aggiungerne altre o modificare la chiave dell'etichetta.
Se modifichi i tipi di metriche, devi definire i nuovi tipi di metrica definiti dall'utente nell'API Monitoring. Per maggiori dettagli, consulta la sezione Progettare un tipo di metrica che segue.
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 di Collectd, 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 identificativi in collectd:
Componente | Valori previsti |
---|---|
Organizzatore | any |
Plug-in | statsd |
Istanza plug-in | unset1 |
Tipo | derive 2 |
Istanza di tipo | [SERVICE_NAME].GET.[CODE] 3 |
[VALUE] |
Qualsiasi valore4 |
Note:
1 al momento il plug-in StatsD 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 [VALORE] è in genere 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 | metric:my_servce_a.GET.500 |
Contatore | my_service_b.GET.403 | custom.googleapis.com/statsd/derive | Cumulativo | Int64 | metric:my_servce_b.GET.403 |
La mappatura predefinita potrebbe presentare alcune difficoltà:
Questa metrica del contatore (
[SERVICE_NAME].GET.[CODE]
) appartiene allo stesso tipo di metrica definita dall'utente di 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 puoi ottenere facilmente i dati relativi a singoli servizi o a singoli codici di risposta nei tuoi dati. Ad esempio, non puoi ottenere facilmente il numero totale di 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.
Progettare un tipo di metrica
Per una discussione completa sulla creazione dei tipi di metriche, consulta Creare un tipo di metrica definito 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 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: CUMULATIVE
- 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 | Cumulativo | Int64 | service_name:my_service_a, response_code:500 |
Contatore | my_service_b.GET.403 | custom.googleapis.com/http/request_errors | Cumulativo | Int64 | service_name:my_service_b, response_code:403 |
Dopo aver progettato il tipo di metrica, creala utilizzando metricDescriptors.create. Per informazioni su come consentire a Monitoraggio di creare il tipo di metrica per te, consulta Creazione automatica dei descrittori delle metriche.
Configurazione mappatura
Per esportare la metrica StatsD nel nuovo tipo di metrica definito dall'utente,
sostituire 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 acquisire la nuova configurazione eseguendo il seguente 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 StatsD è la stessa della personalizzazione delle metriche collectd per il monitoraggio. Per ulteriori informazioni, consulta le sezioni di riferimento e risoluzione dei problemi di Metriche definite dall'utente dall'agente.