perfmetrics

Software screenshot:
perfmetrics
Dettagli del software:
Versione: 0.9.5
Data di caricamento: 20 Feb 15
Sviluppatore: Shane Hathaway
Licenza: Libero
Popolarità: 4

Rating: nan/5 (Total Votes: 0)

perfmetrics fornisce un modo semplice per aggiungere i parametri di rendimento del software per le librerie Python e applicazioni. & Nbsp; Usa perfmetrics per trovare i veri colli di bottiglia in un'applicazione di produzione.
Il pacchetto perfmetrics è un client del demone Statsd da Etsy, che è a sua volta un client di grafite (specificamente, il demone di carbonio). Poiché il pacchetto perfmetrics invia pacchetti UDP a Statsd, perfmetrics aggiunge ritardi di I / O per applicazioni e poco overhead della CPU. Può funzionare altrettanto bene a (sincrono) o software filettato event-driven (asincrono).
Utilizzo
Utilizzare i decoratorimetric emetricmethod per avvolgere funzioni e metodi che devono inviare i tempi e chiamare statistiche Statsd. Aggiungere i decoratori a qualsiasi funzione o un metodo che potrebbe essere un collo di bottiglia, incluse le funzioni di libreria.
Esempio:
da perfmetrics importare metrico
da perfmetrics import metricmethod
metric
def myFunction ():
& Nbsp; "" "Fare qualcosa che potrebbe essere costoso" ""
class MyClass (object):
& Nbsp;metricmethod
& Nbsp; def myMethod (self):
& Nbsp; "" "Fare qualche altra cosa forse costosa" ""
Avanti, dica perfmetrics come collegarsi a Statsd. (Fino a che fare, i decoratori hanno alcun effetto.) Idealmente, l'applicazione dovrebbe leggere il Statsd URI da un file di configurazione al momento dell'avvio, ma l'esempio seguente utilizza un URI hard-coded per semplicità:
da perfmetrics import set_statsd_client
set_statsd_client ('statsd: // localhost: 8125')
for i in xrange (1000):
& Nbsp; myFunction ()
& Nbsp; MyClass myMethod () ().
Se si esegue il codice, si sparerà 2000 pacchetti UDP sulla porta 8125. Tuttavia, se non avete già Grafite e Statsd installati, tutti i pacchetti saranno ignorati e lasciò cadere. Dropping è una buona cosa: non si desidera che l'applicazione di produzione di fallire o rallentare solo perché il sistema di monitoraggio delle prestazioni viene arrestato o non funziona.
Installare Grafite e Statsd di ricevere e grafico le metriche. Un buon modo per installarli è l'esempio graphite_buildout a GitHub, che installa Grafite e Statsd in una posizione personalizzata senza accesso root.
Threading
Mentre la maggior parte dei programmi di inviare le metriche da qualsiasi thread a un singolo server globale Statsd, alcuni programmi hanno bisogno di utilizzare un server Statsd diverso per ogni thread. Se avete solo bisogno di un server globale Statsd, utilizzare la funzione set_statsd_client all'avvio dell'applicazione. Se è necessario utilizzare un server Statsd diverso per ogni thread, utilizzare l'oggetto statsd_client_stack in ogni thread. Utilizzare la spinta, pop, e metodi trasparenti.
Consigli Grafite
Negozi grafite ogni metrica come una serie di tempo con più risoluzioni. La risoluzione secondo memorizza graphite_buildout di esempio 10 per 48 ore, 1 ora risoluzione per 31 giorni, e una risoluzione di 1 giorno per 5 anni. Per produrre un valore grana grossa da un valore a grana fine, grafite calcola il valore medio (media) per ogni intervallo di tempo.
Perché Graphite calcola i valori medi implicitamente, il modo più sensato per trattare i contatori in grafite è come un "hit al secondo" valore. In questo modo, un grafico in grado di produrre risultati corretti, non importa quale livello di risoluzione che utilizza.
Trattare contatori come colpi al secondo ha conseguenze spiacevoli, però. Se alcuni metrica vede un picco di 1.000 hit in un secondo, poi cade a zero per almeno 9 secondi, il grafico Graphite per quella metrica mostra un picco di 100, non 1000, dal momento che Graphite riceve metriche ogni 10 secondi e il picco sembra Grafite come 100 colpi al secondo nel corso di un periodo di 10 secondi.
Se si desidera il grafico per mostrare 1000 colpi piuttosto che 100 colpi al secondo, applicare la funzione Graphite HitCount (), con una risoluzione di 10 secondi o più. La funzione HitCount converte i valori al secondo, sul ravvicinamento conteggi hit prime. Assicurarsi di fornire un valore di risoluzione abbastanza grande per essere rappresentato da almeno un larghezza in pixel sul grafico risultante, altrimenti Graphite calcolerà le medie dei conteggi di successo e produrre un grafico di confusione.
Di solito ha senso trattare valori nulli in grafite come zero, anche se questo non è il default; Per impostazione predefinita, grafite disegna nulla per valori nulli. È possibile attivare questa opzione per ogni grafico.
Documentazione di riferimento
Decoratori
metric
& Nbsp; Notifica Statsd utilizzando UDP ogni volta che la funzione viene chiamata. Invia entrambi i casi di chiamata e le informazioni di temporizzazione. Il nome della metrica inviata a Statsd è . .
metricmethod
& Nbsp; Comemetric, ma il nome del Statsd metrica è ...
Metric (stat = None, rate = 1, method = False, contare = True, tempi = True)
& Nbsp; A decoratore o contesto manager con le opzioni.
& Nbsp; stat è il nome della metrica per l'invio; impostarlo su Nessuno di utilizzare il nome della funzione o del metodo. rate consente di ridurre il numero di pacchetti inviati a Statsd selezionando un campione casuale; per esempio, impostare a 0.1 per inviare un decimo dei pacchetti. Se il parametro del metodo è vero, il nome della metrica di default si basa sul nome della classe del metodo più che il nome del modulo. Impostazione conteggio False disabilita le statistiche contatore inviati Statsd. Impostazione tempi False disabilita le statistiche di cronometraggio inviati Statsd.
& Nbsp; l'uso del campione come decoratore:
& Nbsp;Metric ('frequent_func', tasso = 0.1, i tempi = False)
& Nbsp; def frequent_func ():
& Nbsp; "" "Fai qualcosa veloce e spesso" ""
& Nbsp; l'uso del campione come manager contesto:
& Nbsp; fai_qualcosa def ():
& Nbsp; con Metric ('doing_something'):
& Nbsp; passaggio
& Nbsp; Se perfmetrics invia pacchetti troppo spesso, i pacchetti UDP possono essere persi e le prestazioni delle applicazioni possono essere colpiti. È possibile ridurre il numero di pacchetti e il sovraccarico della CPU utilizzando il decoratore metrica con le opzioni invece di metrica o metricmethod. L'esempio decorator precedente utilizza una frequenza di campionamento e un nome metrica statica. Disattiva inoltre la raccolta di informazioni di temporizzazione.
& Nbsp; Quando si utilizza Metric come manager contesto, è necessario fornire il parametro stat o nulla sarà registrata.
Funzioni
statsd_client ()
& Nbsp; Riportare la StatsdClient attualmente configurato. Restituisce il client thread-locale se ce n'è uno, o il cliente globale, se ce n'è uno, o nessuno.
set_statsd_client (client_or_uri)
& Nbsp; Impostare la StatsdClient globale. Il client_or_uri può essere un StatsdClient, un statsd: // URI, o None.
statsd_client_from_uri (uri)
& Nbsp; Crea una StatsdClient da un URI. Un tipico URI è statsd: // localhost: 8125. Parametri di ricerca opzionali supportati sono prefisso e gauge_suffix. Il prefisso di default è vuota e il gauge_suffix predefinito è .. Visualizza la documentazione StatsdClient per ulteriori informazioni su gauge_suffix.
Metodi StatsdClient
Codice Python può inviare metriche personalizzate attraverso il collegamento del StatsdClient corrente utilizzando il metodo statsd_client (). Si noti che statsd_client () restituisce None se nessun cliente è stato configurato.
La maggior parte dei metodi indicati hanno parametri di tasso e BUF opzionali. Il parametro di velocità, quando è impostato su un valore inferiore a 1, provoca StatsdClient di inviare un campione casuale di pacchetti piuttosto che ogni pacchetto. Se il parametro BUF è una lista, StatsdClient aggiunge il contenuto del pacchetto all'elenco BUF anziché inviare il pacchetto, rendendo possibile inviare più aggiornamenti in un singolo pacchetto. Tenete presente che la dimensione dei pacchetti UDP è limitata (il limite varia dalla rete, ma 1.000 byte è di solito una buona congettura) e qualsiasi byte in più sarà ignorato silenziosamente.
temporizzazione (stat, valore, rate = 1, buf = None)
& Nbsp; Registrare le informazioni di temporizzazione. stat è il nome della metrica di registrare e valore è la misura di temporizzazione in millisecondi. Si noti che Statsd mantiene diversi punti di dati per ogni metrica tempi, in modo da metriche di temporizzazione possono prendere più spazio su disco rispetto contatori o calibri.
calibro (stat, valore, suffisso = None, rate = 1, buf = None)
& Nbsp; Aggiornare un valore calibro. stat è il nome della metrica di registrare e valore è il nuovo valore calibro. Un indicatore rappresenta un valore persistenti quali dimensioni piscina. Perché calibri da diverse macchine sono spesso in conflitto, un suffisso di solito è applicata per valutare i nomi. Se il parametro suffisso è una stringa (compresa una stringa vuota), si sostituisce il suffisso calibro di default.
incr (stat, count = 1, rate = 1, buf = None)
& Nbsp; incrementare un contatore per il conteggio. Si noti che Statsd cancella tutti i valori del contatore ogni volta invia le metriche di grafite, che di solito avviene ogni 10 secondi. Se avete bisogno di un valore persistente, può essere più opportuno utilizzare un indicatore al posto di un contatore.
dim (stat, count = 1, rate = 1, buf = None)
& Nbsp; decremento un contatore per il conteggio.
sendbuf (buf)
& Nbsp; Invia il contenuto della lista buf per Statsd

Cosa c'è di nuovo in questa versione:

  • ha aggiunto una piramide opzionale. tween e una simile applicazione filtro WSGI che imposta il client Statsd per ogni richiesta.

Cosa c'è di nuovo nella versione 0.9.4:.

  • Ottimizzato l'utilizzo di frequenze di campionamento ridotte

Cosa c'è di nuovo nella versione 0.9.2:

  • Metric ora può essere utilizzato sia come un decoratore o un gestore di contesto.
  • Fatto la firma di StatsdClient più come StatsClient di James Socol.

Requisiti :

  • Python

Programmi simili

Vatsinator
Vatsinator

20 Feb 15

Bungmeter
Bungmeter

3 Jun 15

exede-status
exede-status

20 Feb 15

Altri software di sviluppo Shane Hathaway

slowlog
slowlog

20 Feb 15

oauth2sample
oauth2sample

14 Apr 15

Yasso
Yasso

14 Apr 15

Commenti a perfmetrics

I commenti non trovato
Aggiungi commento
Accendere le immagini!