2013-06-26 12 views
5

Sto usando statsd (l'ultima versione dal ramo master di git) con grafite (0.9.10) come back-end.Come posso ottenere un grafico di conteggio cumulato con statsd e grafite?

Nel mio codice (Django) chiamo statsd.incr("signups") quando un utente si registra. Nell'interfaccia web della grafite, ora vedo un bellissimo grafico che mostra il numero di registrazioni al secondo sotto Graphite/stats/iscrizioni. Quando guardo il grafico sotto Graphite/stats_counts/iscrizioni, mi aspetto di vedere il numero totale di registrazioni , ma sembra che sia il numero di registrazioni per intervallo di 10 secondi (che è l'intervallo di aggiornamento di statsd, immagino).

I ha configurato storage-aggregation.conf, forse ho sbagliato in qualche modo? Inoltre, ho smesso di usare il carbone (non con stop, ma in realtà l'ho ucciso, poiché apparentemente solo fermarlo non gli permette di ricaricare la configurazione). Ho anche cancellato la directory /opt/graphite/storage/whisper/stats_counts. Quindi ho riavviato il demone carbon. Ricevo ancora il numero di registrazioni per intervallo di 10 secondi. :-(

Ecco la mia configurazione:

# /opt/graphite/conf/storage-aggregation.conf 

[lower] 
pattern = \.lower$ 
xFilesFactor = 0.1 
aggregationMethod = min 

[upper] 
pattern = \.upper$ 
xFilesFactor = 0.1 
aggregationMethod = max 

[upper_90] 
pattern = \.upper_90$ 
xFilesFactor = 0.1 
aggregationMethod = max 

[count] 
pattern = \.count$ 
xFilesFactor = 0 
aggregationMethod = sum 

[count_ps] 
pattern = \.count_ps$ 
xFilesFactor = 0 
aggregationMethod = sum 

[sum] 
pattern = \.sum$ 
xFilesFactor = 0 
aggregationMethod = sum 

[sum_90] 
pattern = \.sum_90$ 
xFilesFactor = 0 
aggregationMethod = sum 

[stats_counts] 
pattern = ^stats_counts\. 
xFilesFactor = 0 
aggregationMethod = sum 

[min] 
pattern = \.min$ 
xFilesFactor = 0.1 
aggregationMethod = min 

[max] 
pattern = \.max$ 
xFilesFactor = 0.1 
aggregationMethod = max 

[default_average] 
pattern = .* 
xFilesFactor = 0.5 
aggregationMethod = average 

E questo:

# /opt/graphite/conf/storage-schemas.conf 

[stats] 
priority = 110 
pattern = ^stats.* 
retentions = 10s:6h,1m:7d,10m:1y 

sto iniziando a pensare che ho fatto tutto bene e che la grafite è davvero facendo quello che si suppone essere Quindi la domanda è:

Qual è il modo corretto di configurare statsd & grafite per disegnare il numero totale di signu ps dall'inizio del tempo?

Credo che avrei potuto cambiare il mio codice di Django per contare il numero totale di utenti, una volta ogni tanto, e quindi utilizzare un gauge invece di un incr, ma ci si sente come la grafite dovrebbe essere in grado di riassumere solo su qualunque cosa riceve, al volo, non solo quando aggrega i dati.

Edit:

Utilizzando l'interfaccia web di grafite, il compositore Grafite, ho applicato la funzione integral ai "iscrizioni al secondo" di base del grafico (in grafite/stats/iscrizioni), e ho avuto la desiderata grafico (cioè il numero totale di registrazioni). È questo il modo appropriato per ottenere un grafico cumulativo? È fastidioso perché ho bisogno di selezionare l'intervallo di date completo dall'inizio del tempo, non riesco a zoomare sul grafico, altrimenti ho appena ottenuto l'integrale della parte ingrandita. :-(

risposta

1

Sì, la funzione integral() è il modo corretto di fare ciò, dal momento che StatsD è senza stato a tale riguardo (tutti i dati raccolti vengono ripristinati/cancellati dopo lo svuotamento di Graphite) non è possibile per esso essere in grado per riassumere tutti i dati ricevuti dal momento che un certo punto

Dalla documentazione Graphite della funzione integral():.

This will show the sum over time, sort of like a continuous addition function. Useful for finding totals or trends in metrics that are collected per minute.