2012-12-06 10 views
11

Sto usando statsD per riportare i dati del contatore alla grafite; invia un segno di spunta ogni volta che ricevo un messaggio. Funziona alla grande, tranne nella situazione in cui statsD deve riavviarsi per qualsiasi motivo. Poi ho dei buchi enormi nei miei grafici, dato che statsD non sta più inviando "0" ogni 10 secondi per periodi in cui non ho ricevuto alcun messaggio.C'è un modo per riempire i dati mancanti in grafite quando si usano statsD?

Sto segnalando vari tipi di messaggi e code e talvolta non riesco a ottenere un messaggio per una coda particolare per un lungo periodo.

C'è un modo esistente per "compilare" i dati mancanti con un valore predefinito che specifichi (nel mio caso questo sarebbe 0)?

Ho pensato di inviare un conteggio "0" per una data metrica in modo che statsD inizi a inviare 0 per esso, ma non conosco sempre l'insieme di metriche che riferirò in anticipo.

+0

Risulta là è una funzione che farà esattamente quello che voglio. Sebbene come @ALQ sottolinea, è importante sapere che influenzerebbe gli aggregati; transformNull(). – BigBen

risposta

7

Se si desidera "compilare" il grafico visivo con zeri, vedere "Opzioni grafico -> Modalità linea -> Disegna zero come zero". Questo non ti permetterà di impostare un valore diverso da 0, e non farà sì che gli O vengano mostrati se ottieni i dati in formato json o csv, ma spesso è quello che vuoi se vuoi solo vedere un grafico con qualche si estende dove nessun dato viene registrato.

without Draw Null as Zero

With Draw Null as Zero

10

È possibile utilizzare la funzione "keepLastValue (requestContext, seriesList)" in grafite per gestire i dati mancanti. "[C] continua la linea con l'ultimo valore ricevuto quando gli spazi (" Nessuno ") appaiono nei tuoi dati, piuttosto che rompere la tua linea."

+0

È eccellente! Non proprio quello che voglio, dal momento che voglio essere in grado di riportare 0 piuttosto che l'ultimo valore. Tuttavia, il più delle volte, il valore è 0, quindi questo funzionerà per il momento. Grazie! – BigBen

+2

Non essere pedante, l'invio di 0 invece di "nessun dato" avrà un effetto di riduzione sui tuoi aggregati (quantili, media). –

+1

@ALQ, non pedante, grazie per il promemoria. – BigBen

16

Controllare la funzione transformNull che Graphite fornisce. per esempio.

transformNull(stats.timers.deploys.all.duration.total.mean, 0) 

Ciò mappare sezioni con dati nulli a 0.

2

La soluzione a questo problema non è quello di mantenere l'ultimo valore o trasformare i valori nulli. L'implementazione di una di queste opzioni ti farà visualizzare solo dati errati e non sarai avvisato quando qualcosa non va.

È necessario modificare lo schema di archiviazione in modo che memorizzi la quantità di dati che si sta inviando e non di più.

Se le metriche vengono inviate ogni 5s e lo schema di archiviazione dice 1s, otterrete cinque punti dati, quattro dei quali saranno nulli.

Partenza questo documento: https://github.com/etsy/statsd/blob/master/docs/graphite.md

Problemi correlati