perfmetrics

Software skärmdump:
perfmetrics
Mjukvaruinformation:
Version: 0.9.5
Ladda upp dagen: 20 Feb 15
Utvecklare: Shane Hathaway
Licens: Gratis
Popularitet: 4

Rating: nan/5 (Total Votes: 0)

perfmetrics ger ett enkelt sätt att lägga mjukvaruprestationsmått till Python bibliotek och program. & Nbsp; Använd perfmetrics att hitta de verkliga flaskhalsar i produktions ansökan.
Den perfmetrics paketet är en klient för Statsd demonen från Etsy, som i sin tur en klient för Graphite (specifikt, Carbon daemon). Eftersom perfmetrics paketet skickar UDP-paket till Statsd, perfmetrics lägger inga I / O förseningar applikationer och lite CPU overhead. Det kan fungera lika bra i gäng (synkron) eller händelsestyrd (asynkron) mjukvara.
Användning
Användmetric ochmetricmethod dekoratörer att linda funktioner och metoder som bör skicka timing och kallar statistiken Statsd. Lägg dekoratörer till någon funktion eller metod som kan vara en flaskhals, inklusive biblioteksfunktioner.
Prov:
från perfmetrics importera metrisk
från perfmetrics import metricmethod
metric
def myFunction ():
& Nbsp; "" "Gör något som kan bli dyrt" ""
klass MyClass (objekt):
& Nbsp;metricmethod
& Nbsp; def myMethod (själv):
& Nbsp; "" "Gör något annat eventuellt dyr sak" ""
Därefter berättar perfmetrics hur du ansluter till Statsd. (Tills du gör, dekoratörer har ingen effekt.) Helst din ansökan bör läsa Statsd URI från en konfigurationsfil vid start, men exemplet nedan använder en hårdkodad URI för enkelhet:
från perfmetrics import set_statsd_client
set_statsd_client ('statsd: // localhost: 8125 ")
for i in xrange (1000):
& Nbsp; myFunction ()
& Nbsp;. MyClass () myMethod ()
Om du kör den koden kommer det eld 2000 UDP-paket på port 8125. Men om du redan har installerat Grafit och Statsd, kommer alla dessa paket ignoreras och tappade. Drop är en bra sak: du inte vill att din produktion ansökan att misslyckas eller sakta ner bara för att din övervakningssystem prestanda stoppas eller inte fungerar.
Installera Grafit och Statsd att ta emot och plotta statistik. Ett bra sätt att installera dem är graphite_buildout exemplet på github, som installerar Grafit och Statsd i en anpassad plats utan root-access.
Threading
Medan de flesta programmen skickar mätvärden från någon tråd till en enda global Statsd server, vissa program behöver använda en annan Statsd server för varje tråd. Om du bara behöver en global Statsd server, använd set_statsd_client funktionen vid programstart. Om du behöver använda en annan Statsd server för varje tråd, använd statsd_client_stack objektet i varje tråd. Använd push, pop, och tydliga metoder.
Grafit Tips
Grafit lagrar varje metrisk som en tidsserie med flera resolutioner. Den prov graphite_buildout lagrar 10 sekund upplösning för 48 timmar, 1 timme upplösning för 31 dagar, och 1 dag upplösning för 5 år. För att producera en grovkornig värde från en finkornig värde, Grafit beräknar medelvärdet (genomsnitt) för varje tidsperiod.
Eftersom Grafit beräknar medelvärden implicit, det mest förnuftiga sättet att behandla räknare i Grafit är som en "träffar per sekund" värde. På så sätt kan en graf producera rätt resultat oavsett vilken upplösning nivå den använder.
Behandla räknare som träffar per sekund har olyckliga konsekvenser, dock. Om några metriska ser en 1000 träff spik på en sekund, faller sedan till noll i minst nio sekunder kommer Graphite diagram för att metriska visar en spik av 100, inte 1000, eftersom Grafit får statistik var 10 sekunder och spetsen ser ut att Grafit som 100 träffar per sekund under en andra period 10.
Om du vill att din graf att visa 1000 träffar istället 100 träffar per sekund, tillämpa Graphite hitcount () funktionen, genom att använda en upplösning på 10 sekunder eller mer. Den hitcount Funktionen konverterar per sekund värden att approximera råa träffräknevärdena. Var noga med att ge ett upplösningsvärde tillräckligt stor för att vara representerade med minst en pixel bredd på den resulterande grafen, annars Grafit kommer att beräkna medelvärden av träffräknevärdena och producera en förvirrande grafen.
Det gör oftast vettigt att behandla null-värden i grafit som noll, även om det inte är standard; som standard, drar Graphite ingenting för null-värden. Du kan slå på det alternativet för varje graf.
Referens Dokumentation
Dekoratörer
metric
& Nbsp; Meddelar Statsd använder UDP varje gång funktionen anropas. Skickar både samtals räknas och tidsinformation. Namnet på metriska skickas till Statsd är . .
metricmethod
& Nbsp; Sommetric, men namnet på Statsd metriska är ...
Metric (stat = Ingen, takt = 1, metod = False, räkna = Sant, timing = sant)
& Nbsp; En dekoratör eller sammanhang chef med alternativ.
& Nbsp; stat är namnet på det metriska att skicka; ställ in den på None att använda namnet på den funktion eller metod. hastighet kan du minska antalet paket som skickas till Statsd genom att välja ett slumpmässigt urval; till exempel, ställ in den på 0,1 för att skicka en tiondel av paketen. Om metoden parametern är sant, är standardmåttet namn baserat på metodens klassnamn snarare än modulnamnet. Ställa räkna till False inaktiverar statistiken räknar skickas till Statsd. Ställa timing till False inaktiverar statistiken timing som skickas till Statsd.
& Nbsp; Sample användning som dekoratör:
& Nbsp;Metric ("frequent_func ', hastighet = 0,1, timing = False)
& Nbsp; def frequent_func ():
& Nbsp; "" "Gör något snabbt och ofta" ""
& Nbsp; Sample användning som ett sammanhang chef:
& Nbsp; def do_something ():
& Nbsp; med Metric ('doing_something'):
& Nbsp; pass
& Nbsp; Om perfmetrics skickar paket för ofta, kan UDP-paket förloras och programmets prestanda kan påverkas. Du kan minska antalet paket och CPU overhead använder Metric dekoratör med alternativ i stället för metriska eller metricmethod. Den dekoratör exemplet ovan används en samplingshastighet och en statisk metrisk namn. Det inaktiverar även insamling av tidsinformation.
& Nbsp; När Metric som ett sammanhang chef måste du ge den stat parametern eller ingenting kommer att spelas in.
Funktioner
statsd_client ()
& Nbsp; Returnera konfigurerad StatsdClient. Returnerar gäng lokala klienten om det finns en, eller den globala kunden om det finns en, eller Ingen.
set_statsd_client (client_or_uri)
& Nbsp; Ange globala StatsdClient. Den client_or_uri kan vara en StatsdClient, en statsd: // URI, eller Ingen.
statsd_client_from_uri (uri)
& Nbsp; Skapa en StatsdClient från en URI. En typisk URI statsd: // localhost: 8125. Stödda valfria frågeparametrar är prefix och gauge_suffix. Standard prefixet är tom och standard gauge_suffix är .. Se StatsdClient dokumentationen för mer information om gauge_suffix.
StatsdClient Metoder
Python-kod kan skicka anpassade statistik genom att först få den nuvarande StatsdClient använder statsd_client () metoden. Observera att statsd_client () returnerar Ingen om ingen klient har konfigurerats.
De flesta av metoderna nedan har valfria ränta och BUF parametrar. Parametern takten, när den är inställd på ett värde som är mindre än 1, orsakar StatsdClient att skicka ett slumpmässigt urval av paket istället för varje paket. Om buf parametern är en lista, StatsdClient bifogar paketets innehåll till buf listan i stället sända paketet, vilket gör det möjligt att sända flera uppdateringar i ett enda paket. Tänk på att storleken på UDP-paket är begränsad (gränsen varierar beroende på nätverket, men 1000 bytes är oftast en bra gissning) och eventuella extra byte ignoreras tyst.
timing (stat, värde, hastighet = 1, buf = None)
& Nbsp; Record tidsinformation. STAT är namnet på den metriska att spela in och värdet är timingen mätning i millisekunder. Observera att Statsd håller flera datapunkter för varje timing metriska, så tids mätetal kan ta mer diskutrymme än diskar eller mätare.
gauge (stat, värde, suffix = Ingen, takt = 1, buf = None)
& Nbsp; Uppdatera en mätare värde. stat är namnet på det metriska att spela in och värdet är det nya mätare värdet. En mätare representerar ett ihållande värde såsom en pool storlek. Eftersom mätare från olika maskiner ofta konflikter, är ett suffix vanligen tillämpas för att mäta namn. Om parametern suffixet är en sträng (inklusive en tom sträng), åsidosätter den standardmått suffix.
incr (stat, räkna = 1, takt = 1, buf = None)
& Nbsp; Ökning en disk av greve. Observera att Statsd rensar alla räknarvärden varje gång den skickar de mått för att Graphite, vilket vanligtvis sker var 10: e sekund. Om du behöver en ihållande värde, kan det vara lämpligare att använda en mätare i stället för en räknare.
Decr (stat, räkna = 1, takt = 1, buf = None)
& Nbsp; Minska en disk av greve.
sendbuf (buf)
& Nbsp; Skicka innehållet i buf listan till Statsd

Vad är nytt i den här versionen:

  • Inkom en valfri Pyramid. lan och en liknande WSGI filter app som sätter upp Statsd klient för varje förfrågan.

Vad är nytt i version 0.9.4:.

  • Optimerad användning av reducerade samplingsfrekvenser

Vad är nytt i version 0.9.2:

  • Metrisk kan nu användas som antingen en dekoratör eller ett sammanhang chef.
  • Gjort undertecknandet av StatsdClient mer som James Socol s StatsClient.

Krav :

  • Python

Liknande mjukvara

NagVis
NagVis

17 Feb 15

lm_sensors
lm_sensors

28 Sep 15

WMChargemon
WMChargemon

3 Jun 15

Annan programvara för utvecklare Shane Hathaway

oauth2sample
oauth2sample

14 Apr 15

repoze.pgtextindex
repoze.pgtextindex

20 Feb 15

Yasso
Yasso

14 Apr 15

Kommentarer till perfmetrics

Kommentarer hittades inte
Kommentar
Slå på bilder!