perfmetrics

Software screenshot:
perfmetrics
Software informatie:
Versie: 0.9.5
Upload datum: 20 Feb 15
Ontwikkelaar: Shane Hathaway
Licentie: Gratis
Populariteit: 4

Rating: nan/5 (Total Votes: 0)

perfmetrics biedt een eenvoudige manier om de prestaties van de software metrics toevoegen aan Python bibliotheken en applicaties & nbsp;. Gebruik perfmetrics om de ware knelpunten in een productie-applicatie te vinden.
De perfmetrics pakket is een klant van de Statsd daemon door Etsy, die op zijn beurt een klant van Graphite (in het bijzonder, de Carbon daemon). Omdat de perfmetrics pakket stuurt UDP-pakketten naar Statsd, perfmetrics voegt geen I / O vertragingen tot applicaties en weinig CPU-overhead. Het kan net zo goed werken in schroefdraad (synchroon) of event-driven (asynchrone) software.
Gebruik
Gebruik demetric enmetricmethod decorateurs om functies en methoden die timing moet sturen en bellen statistieken Statsd wrap. Voeg de decorateurs om een ​​functie of methode die een knelpunt zou kunnen zijn, met inbegrip van de bibliotheek functies.
Voorbeeld:
van perfmetrics importeren metrische
van perfmetrics import metricmethod
metric
def myFunction ():
& Nbsp; "" "Doe iets zo duur zou kunnen zijn" ""
klasse MyClass (object):
& Nbsp;metricmethod
& Nbsp; def myMethod (zelf):
& Nbsp; "" "Doe wat andere mogelijk dure ding" ""
Vervolgens vertellen perfmetrics hoe u verbinding Statsd. (Tot die tijd, de decorateurs hebben geen effect.) Idealiter uw aanvraag moet de Statsd URI lezen uit een configuratiebestand bij het opstarten, maar het volgende voorbeeld maakt gebruik van een hard-coded URI voor eenvoud:
van perfmetrics import set_statsd_client
set_statsd_client ('statsd: // localhost: 8125')
voor i in xrange (1000):
& Nbsp; myFunction ()
& Nbsp;. MyClass () myMethod ()
Als je die code uit te voeren, zal het 2000 UDP-pakketten schieten op poort 8125. Echter, tenzij je al hebt geïnstalleerd Grafiet en Statsd, zullen al die pakketten worden genegeerd en gegooid. Dropping is een goede zaak: u niet wilt dat uw productie toepassing te mislukken of vertragen alleen maar omdat je performance monitoring systeem is gestopt of niet werkt.
Installeer Graphite en Statsd te ontvangen en de grafiek van de statistieken. Een goede manier om ze te installeren is het graphite_buildout voorbeeld op GitHub, die Graphite en Statsd installeert in een aangepaste locatie zonder root-toegang.
Threading
Terwijl de meeste programma's te sturen metrics van elke draad om een ​​enkele wereldwijde Statsd server, programma's nodig hebt om een ​​andere Statsd server te gebruiken voor elke draad. Als je alleen een globale Statsd server nodig hebt, gebruik de set_statsd_client functie bij opstarten van de toepassing. Als u nodig hebt om een ​​andere Statsd server te gebruiken voor elke draad, gebruik dan de statsd_client_stack object in elke thread. Gebruik de push, pop, en duidelijke methoden.
Graphite Tips
Grafiet slaat elk metrische als een tijdreeks met verschillende resoluties. Het monster graphite_buildout winkels 10 tweede resolutie voor 48 uur, 1 uur resolutie voor 31 dagen en 1 dag resolutie voor 5 jaar. Om een ​​grofkorrelige waarde uit een fijnkorrelige waarde te produceren, Graphite berekent de gemiddelde waarde (gemiddelde) voor elke tijdspanne.
Omdat Graphite berekent gemiddelde waarden impliciet, de meest verstandige manier om tellers in Graphite te behandelen is als een "hits per seconde". Op die manier kan een grafiek juiste resultaten te produceren, ongeacht welke resolutie niveau die het gebruikt.
Het behandelen van tellers zo raakt per seconde heeft vervelende gevolgen, echter. Als sommige metrische ziet 1000 hit piek in één seconde, dan nihil minstens 9 seconden wordt de Graphite grafiek voor die metrische een piek 100, niet 1000 tonen, omdat grafiet ontvangt statistieken elke 10 seconden en de piek lijkt grafiet als 100 hits per seconde over een periode van 10 sec.
Als u wilt dat uw grafiek tot 1000 treffers in plaats van 100 hits per seconde te laten zien, gelden de Graphite hitcount () functie, met behulp van een resolutie van 10 seconden of meer. De hitcount functie converteert per-seconde waarden aan ruwe hit telt benaderen. Zorg ervoor dat u een resolutie waarde groot genoeg is om te worden vertegenwoordigd door ten minste één pixel breedte op de resulterende grafiek te bieden, anders Grafiet zal gemiddelden van hit tellingen berekenen en produceren een verwarrende grafiek.
Het is meestal verstandig om null-waarden in Graphite behandelen als nul, al is dat niet de standaard; standaard, Graphite trekt niets voor null-waarden. U kunt inschakelen die optie voor elke grafiek.
Reference Documentatie
Decorateurs
metric
& Nbsp; gewaarschuwd als Statsd behulp van UDP elke keer als de functie wordt aangeroepen. Stuurt zowel oproep telt en timing informatie. De naam van het metrieke naar Statsd is . .
metricmethod
& Nbsp; Net alsmetric, maar de naam van de Statsd metrische is ...
Metrische (stat = Geen, snelheid = 1, methode = False, count = True, timing = True)
& Nbsp; Een decorateur of context manager met opties.
& Nbsp; stat is de naam van de metriek te sturen; zet deze op Geen om de naam van de functie of methode te gebruiken. tarief kunt u het aantal pakketten door het selecteren van een aselecte steekproef te Statsd gestuurd te verminderen; bijvoorbeeld, zet deze op 0,1 tot een tiende van de pakketten te sturen. Als de parameter methode waar is, wordt de standaard metrische naam gebaseerd op de naam van de klasse van de methode in plaats van de module naam. Instellen telling op False schakelt de teller statistieken verzonden naar Statsd. Instellen timing op False schakelt de timing statistieken verzonden naar Statsd.
& Nbsp; Sample gebruik als decorateur:
& Nbsp;Metric ('frequent_func', rate = 0,1, timing = False)
& Nbsp; def frequent_func ():
& Nbsp; "" "Doe iets snel en vaak" ""
& Nbsp; Sample gebruik als een context-manager:
& Nbsp; def do_something ():
& Nbsp; met Metric ('doing_something'):
& Nbsp; pas
& Nbsp; Als perfmetrics stuurt pakketjes te vaak, kan UDP-pakketten verloren gaan en de prestaties van de toepassing kan worden beïnvloed. U kunt het aantal pakketten en de CPU-overhead met behulp van de Metric decorateur met opties in plaats van metrische of metricmethod verminderen. Boven de decorateur voorbeeld maakt gebruik van een sample rate en een statische metrische naam. Het schakelt ook de verzameling van timing informatie.
& Nbsp; Als u Metric als context manager, moet u de parameter stat verstrekken of niets opgenomen.
Functies
statsd_client ()
& Nbsp; Terug de momenteel geconfigureerde StatsdClient. Geeft de thread-lokale client als die er is, of de wereldwijde klant als die er is, of Geen.
set_statsd_client (client_or_uri)
& Nbsp; Stel de wereldwijde StatsdClient. De client_or_uri kan een StatsdClient, een statsd: // URI, of Geen.
statsd_client_from_uri (uri)
& Nbsp; Maak een StatsdClient uit een URI. Een typische URI wordt statsd: // localhost: 8125. Ondersteunde optionele query-parameters zijn voorvoegsel en gauge_suffix. De standaard prefix is ​​leeg en de standaard gauge_suffix is ​​.. Bekijk de StatsdClient documentatie voor meer informatie over gauge_suffix.
StatsdClient Methoden
Python-code kunt aangepaste metrics sturen door eerst de huidige StatsdClient met behulp van de methode statsd_client (). Merk op dat statsd_client () geeft Geen als er geen client is geconfigureerd.
Het merendeel van de volgende methoden hebben optioneel tarief en buf parameters. Het tarief parameter, wanneer ingesteld op een waarde van minder dan 1, veroorzaakt StatsdClient om een ​​aselecte steekproef van pakketten in plaats van elk pakket te verzenden. Als de parameter buf een lijst StatsdClient voegt de inhoud pakket naar de buf lijst plaats zenden het pakket, waardoor meerdere updates in één enkel pakket. Houd er rekening mee dat de grootte van UDP-pakketten is beperkt (de limiet varieert door het netwerk, maar 1000 bytes is meestal een goede gok) en eventuele extra bytes zal in stilte worden genegeerd.
timing (stat, waarde, snelheid = 1, buf Geen =)
& Nbsp; Record timing informatie. stat is de naam van de metriek opnemen en waarde de timing meting milliseconden. Merk op dat Statsd onderhoudt meerdere datapunten voor elke timing metrisch, dus timing metrics kan meer schijfruimte in beslag nemen dan de tellers of meters.
gauge (stat, waarde, suffix = Geen, rate = 1, buf Geen =)
& Nbsp; Werk een meter waarde. stat is de naam van de metriek opnemen en waarde de nieuwe meter waarde. Een meter vertegenwoordigt een hardnekkige waarde, zoals een zwembad grootte. Omdat meters van verschillende machines vaak conflict, wordt een achtervoegsel meestal toegepast om namen te peilen. Als de parameter achtervoegsel is een string (met inbegrip van een lege string), het overschrijft de standaard manometer achtervoegsel.
incr (stat, count = 1, snelheid = 1, buf Geen =)
& Nbsp; Verhoog een teller door telling. Merk op dat Statsd wist alle tellerstanden elke keer stuurt de statistieken om grafiet, die meestal gebeurt elke 10 seconden. Als u een aanhoudende waarde nodig is, kan het beter om een ​​meter te gebruiken in plaats van een teller te zijn.
decr (stat, count = 1, snelheid = 1, buf Geen =)
& Nbsp; Verlagen van een teller door telling.
sendbuf (buf)
& Nbsp; Stuur de inhoud van de buf lijst om Statsd

Wat is nieuw in deze release:

  • Toegevoegd een optionele Piramide. sen en een vergelijkbare WSGI filter app die stelt de Statsd client voor elke aanvraag.

Wat is nieuw in versie 0.9.4:.

  • Geoptimaliseerd het gebruik van verlaagde sample rates

Wat is nieuw in versie 0.9.2:

  • Metric kan nu worden gebruikt als ofwel een decorateur of een context manager.
  • Gemaakt van de ondertekening van StatsdClient meer als James Socol's StatsClient.

Eisen

  • Python

Vergelijkbare software

Recon
Recon

3 Jun 15

AirSnort
AirSnort

3 Jun 15

FW1-Loggrabber
FW1-Loggrabber

3 Jun 15

Watchdog
Watchdog

14 Apr 15

Andere software van ontwikkelaar Shane Hathaway

oauth2sample
oauth2sample

14 Apr 15

slowlog
slowlog

20 Feb 15

Yasso
Yasso

14 Apr 15

repoze.pgtextindex
repoze.pgtextindex

20 Feb 15

Reacties op perfmetrics

Reacties niet gevonden
Commentaar toe te voegen
Zet op de beelden!