perfmetrics

Skjermbilde programvare:
perfmetrics
Prog.varedetaljer:
Versjon: 0.9.5
Last opp dato: 20 Feb 15
Utvikler: Shane Hathaway
Lisens: Gratis
Popularitet: 4

Rating: nan/5 (Total Votes: 0)

perfmetrics gir en enkel måte å legge til programvareresultattall til Python biblioteker og programmer. & Nbsp; Bruk perfmetrics å finne de virkelige flaskehalser i en produksjon program.
Den perfmetrics pakken er en klient av Statsd demonen av Etsy, som igjen er en klient av Graphite (spesifikt, Carbon daemon). Fordi perfmetrics pakken sender UDP-pakker til Statsd, perfmetrics legger ingen I / O-forsinkelser til programmer og lite CPU overhead. Det kan fungere like godt i gjenget (synkron) eller hendelsesdrevet (asynkron) programvare.
Bruk
Brukmetric ogmetricmethod dekoratører å vikle funksjoner og metoder som bør sende timing og kaller statistikk til Statsd. Tilsett dekoratører til enhver funksjon eller metode som kan være en flaskehals, inkludert biblioteksfunksjoner.
Prøve:
fra perfmetrics importere metrisk
fra perfmetrics import metricmethod
metric
def myfunction ():
& Nbsp; "" "Gjør noe som kan være dyrt" ""
klasse MyClass (objekt):
& Nbsp;metricmethod
& Nbsp; def myMethod (egen-):
& Nbsp; "" "Har noen andre muligens dyre ting" ""
Deretter fortelle perfmetrics hvordan du kobler til Statsd. (Inntil du gjør, dekoratører har ingen effekt.) Ideelt sett din søknad bør lese Statsd URI fra en konfigurasjonsfil ved oppstart, men eksempelet nedenfor bruker en hardkodet URI for enkelhet:
fra perfmetrics import set_statsd_client
set_statsd_client ('statsd: // localhost: 8125')
for jeg i xrange (1000):
& Nbsp; myfunction ()
& Nbsp;. MyClass () myMethod ()
Hvis du kjører den koden, vil det fyre 2000 UDP-pakker på port 8125. Men med mindre du allerede har installert Graphite og Statsd, vil alle disse pakkene bli ignorert og droppet. Dropping er en god ting: du ikke ønsker din produksjon program for å mislykkes eller tregere bare fordi resultatene overvåkingssystem stoppes eller ikke fungerer.
Installere Graphite og Statsd å motta og graf beregningene. En god måte å installere dem er graphite_buildout eksempel på github, som installerer Graphite og Statsd i en egendefinert plassering uten root-tilgang.
Threading
Mens de fleste programmer sende beregninger fra enhver tråd til ett globalt Statsd server, noen programmer trenger å bruke en annen Statsd server for hver tråd. Hvis du bare trenger en global Statsd server, bruker set_statsd_client funksjon når programmet startes. Hvis du trenger å bruke en annen Statsd server for hver tråd, bruker statsd_client_stack objekt i hver tråd. Bruke push, pop, og klare metoder.
Grafitt Tips
Grafitt butikker hver beregning som en tidsserie med flere oppløsninger. Den prøve graphite_buildout butikker 10 andre oppløsning i 48 timer, en time oppløsning for 31 dager, og en dag oppløsning i 5 år. For å fremstille et grovkornet verdi fra en finkornet verdi, beregner Grafitt middelverdien (gjennomsnittet) for hvert tidsrom.
Fordi Graphite beregner gjennomsnittsverdier implisitt, den mest fornuftige måten å behandle tellere i Graphite er som en "treff per sekund" verdi. På den måten kan en graf produsere riktige resultater uansett hvilken oppløsning nivå den bruker.
Behandling av tellere som treffer per sekund har uheldige konsekvenser, men. Hvis noen metrisk ser en 1000 hit topp i ett sekund, faller deretter til null i minst ni sekunder, vil Graphite diagrammet for denne beregningen viser en topp på 100, ikke 1000, siden Graphite mottar beregninger hvert 10. sekund og pigg ser ut til å grafitt som 100 treff per sekund over en 10 sekunders periode.
Hvis du vil at grafen for å vise 1000 treff i stedet for 100 treff per sekund, påfør Graphite hitcount () funksjon, med en oppløsning på 10 sekunder eller mer. Den hitcount funksjonen konverterer per sekund verdier til tilnærmet rå hit teller. Sørg for å gi en oppløsning verdi stor nok til å være representert med minst én piksel bredde på den resulterende grafen, ellers Graphite vil beregne gjennomsnitt av hit teller og produsere en forvirrende graf.
Det gjør vanligvis fornuftig å behandle nullverdier i Graphite som null, selv om det ikke er standard; som standard, trekker Graphite ingenting for nullverdier. Du kan slå på dette alternativet for hver graf.
Referansedokumentasjon
Dekoratører
metric
& Nbsp; Varsler Statsd bruker UDP hver gang funksjonen kalles. Sender både samtale teller og tidsinformasjon. Navnet på det metriske sendt til Statsd er . .
metricmethod
& Nbsp; Sommetric, men navnet på Statsd beregningen er ...
Metric (stat = Ingen, rate = 1, metode = False, telle = True, timing = True)
& Nbsp; En dekoratør eller sammenheng manager med alternativer.
& Nbsp; stat er navnet på det metriske å sende; sette den til Ingen for å bruke navnet på funksjonen eller metoden. hastighet kan du redusere antall pakker som sendes til Statsd ved å velge et tilfeldig utvalg; for eksempel sette den til 0.1 til å sende en tidel av pakkene. Hvis metoden parameter er sant, er standard metriske navn basert på metodens klassenavnet i stedet for modulnavnet. Stille teller til False deaktiverer disk statistikk sendt til Statsd. Innstilling timing å False deaktiverer timing statistikk sendt til Statsd.
& Nbsp; Sample bruk som dekoratør:
& Nbsp;Metric ('frequent_func', rate = 0,1, timing = False)
& Nbsp; def frequent_func ():
& Nbsp; "" "Gjør noe raskt og ofte" ""
& Nbsp; Sample bruk som en kontekst sjef:
& Nbsp; def do_something ():
& Nbsp; med Metric ('doing_something'):
& Nbsp; pass
& Nbsp; Hvis perfmetrics sender pakker for ofte, kan UDP-pakker gå tapt, og programytelse kan påvirkes. Du kan redusere antall pakker og CPU-bruk av Metric dekoratør med alternativer i stedet for metriske eller metricmethod. Dekoratør eksempelet over har en samplingsfrekvens og en statisk beregning navn. Det deaktiverer også innsamling av tidsinformasjon.
& Nbsp; Ved bruk av Metric som en kontekst manager, må du gi den stat parameter eller ingenting vil bli registrert.
Funksjoner
statsd_client ()
& Nbsp; Returner konfigurert StatsdClient. Returnerer tråd lokal klient hvis det er en, eller den globale klient hvis det er en, eller Ingen.
set_statsd_client (client_or_uri)
& Nbsp; Konfigurer den globale StatsdClient. Den client_or_uri kan være en StatsdClient, en statsd: // URI, eller Ingen.
statsd_client_from_uri (uri)
& Nbsp; Lag en StatsdClient fra en URI. En typisk URI er statsd: // localhost: 8125. Støttede valgfrie søkeparametere er prefiks og gauge_suffix. Standard prefikset er tom og standard gauge_suffix er .. Se dokumentasjonen StatsdClient for mer informasjon om gauge_suffix.
StatsdClient Metoder
Python-kode kan sende egendefinerte beregninger ved først å få den nåværende StatsdClient bruker statsd_client () -metoden. Merk at statsd_client () returnerer Ingen hvis ikke kunden har blitt konfigurert.
De fleste av metodene nedenfor har valgfrie rente og BUF parametere. Satsen parameter, når satt til en verdi som er mindre enn 1, fører StatsdClient å sende et tilfeldig utvalg av pakker i stedet for hver pakke. Hvis buf parameter er en liste, føyer StatsdClient pakken innholdet til buf lister fremfor sende pakken, noe som gjør det mulig å sende flere oppdateringer i én pakke. Husk at størrelsen på UDP-pakker er begrenset (grensen varierer avhengig av nettverket, men 1000 bytes er vanligvis en god gjetning) og eventuelle ekstra byte vil bli ignorert lydløst.
timing (stat, verdi, rate = 1, buf = Ingen)
& Nbsp; Record timing informasjon. stat er navnet på det metriske å registrere og verdi er timingen måling i millisekunder. Merk at Statsd opprettholder flere datapunkter for hver timing beregning, så timingen beregninger kan ta mer diskplass enn tellere eller målere.
måleren (stat, verdi, suffiks = Ingen, rate = 1, buf = Ingen)
& Nbsp; Oppdatere en måler verdi. stat er navnet på det metriske å registrere og verdi er den nye måleren verdi. En måler representerer en vedvarende verdi som et basseng størrelse. Fordi målere fra forskjellige maskiner ofte konflikt, er et suffiks vanligvis brukt til å måle navn. Hvis suffikset parameter er en streng (inkludert en tom streng), overstyrer den standardmåler suffiks.
incr (stat, teller = 1, sats = 1, buf = Ingen)
& Nbsp; Trinnvis en teller med teller. Merk at Statsd fjerner alle tellerverdier hver gang det sender beregningene til grafitt, noe som vanligvis skjer hvert 10. sekund. Hvis du trenger en vedvarende verdi, kan det være mer hensiktsmessig å bruke en måler i stedet for en teller.
redusere påvirker (stat, teller = 1, sats = 1, buf = Ingen)
& Nbsp; Decrement en teller med teller.
sendbuf (buf)
& Nbsp; Send innholdet i buf liste til Statsd

Hva er nytt i denne utgaven:

  • lagt en valgfri Pyramid. tween og en lignende WSGI filter app som setter opp Statsd klient for hver forespørsel.

Hva er nytt i versjon 0.9.4:.

  • Optimalisert bruk av reduserte samplingsfrekvenser

Hva er nytt i versjon 0.9.2:

  • Metric kan nå brukes som enten en dekoratør eller en kontekst manager.
  • Laget signaturen til StatsdClient mer som James Socol sin StatsClient.

Krav :

  • Python

Lignende programvare

GitMon
GitMon

11 May 15

TDA
TDA

3 Jun 15

KeyNote
KeyNote

3 Jun 15

monner
monner

20 Feb 15

Annen programvare fra utvikleren Shane Hathaway

slowlog
slowlog

20 Feb 15

repoze.pgtextindex
repoze.pgtextindex

20 Feb 15

oauth2sample
oauth2sample

14 Apr 15

Yasso
Yasso

14 Apr 15

Kommentarer til perfmetrics

Kommentarer ikke funnet
Legg til kommentar
Slå på bilder!