perfmetrics

Screenshot der Software:
perfmetrics
Softwarebeschreibung:
Version: 0.9.5
Upload-Datum: 20 Feb 15
Entwickler: Shane Hathaway
Lizenz: Frei
Popularität: 4

Rating: nan/5 (Total Votes: 0)

perfmetrics bietet einen einfachen Weg, um Software-Performance-Metriken, um Python-Bibliotheken und Anwendungen & nbsp hinzuzufügen;. Verwenden perfmetrics die wahren Engpässe in einer Produktionsanwendung zu finden.
Die perfmetrics Paket ist ein Client des Statsd Daemon Etsy, die wiederum ist ein Client von Graphit (insbesondere die Kohlenstoff-Daemon). Da die perfmetrics Paket sendet UDP-Pakete an Statsd, fügt perfmetrics keine E / A-Verzögerungen auf Anwendungen und wenig CPU-Overhead. Es kann genauso gut in Gewinde (synchron) oder ereignisgesteuerte Software (asynchron) arbeiten.
Verwendung
Verwenden Sie diemetric undmetricmethod Dekorateure, Funktionen und Methoden, die Timing Statsd senden und rufen Sie Statistiken sollten wickeln. Fügen Sie die Dekorateure, um jede Funktion oder Methode, die einen Engpass darstellen könnte, auch Bibliotheksfunktionen.
Beispiel:
von perfmetrics importieren metrischen
von perfmetrics Import metricmethod
metric
def myfunction ():
& Nbsp; "" "Tun Sie etwas, das teuer werden könnte" ""
class MyClass (Objekt):
& Nbsp;metricmethod
& Nbsp; def mymethod (Selbst-):
& Nbsp; "" "Tun Sie etwas andere, möglicherweise teure Sache" ""
Als nächstes sagen perfmetrics, wie man auf Statsd verbinden. (Bis Sie zu tun haben die Dekorateure keine Wirkung.) Im Idealfall sollte die Anwendung für Statsd URI aus einer Konfigurationsdatei beim Start zu lesen, aber die folgenden Beispiel wird eine hartcodierte URI für Einfachheit:
von perfmetrics Import set_statsd_client
set_statsd_client ('statsd: // localhost: 8125')
for i in xrange (1000):
& Nbsp; myfunction ()
& Nbsp;. MyClass () mymethod ()
Wenn Sie diesen Code ausführen, wird es 2000 UDP-Pakete auf Port 8125. Feuer Allerdings, wenn Sie bereits installiert haben Graphite und Statsd, werden alle diese Pakete ignoriert und gelöscht werden. Dropping ist eine gute Sache: Sie wollen nicht Ihre Produktionsanwendung zu versagen oder zu verlangsamen, nur weil Ihr Performance-Monitoring-System gestoppt ist oder nicht.
Installieren Graphite und Statsd zu empfangen und die Messdaten grafisch darstellen. Ein guter Weg, um sie zu installieren ist die graphite_buildout Beispiel bei Github, die Graphit und Statsd in einem benutzerdefinierten Speicherort installiert, ohne Root-Zugriff.
Threading
Während die meisten Programme senden Messdaten von jedem Thread zu einem einzigen globalen Statsd Server müssen einige Programme, um eine andere Statsd Server für jeden Thread verwenden. Wenn Sie nur eine globale Statsd Server die set_statsd_client Funktion beim Start der Anwendung. Wenn Sie eine andere Statsd Server für jeden Thread verwenden müssen, verwenden Sie die statsd_client_stack Objekt in jedem Thread. Verwenden Sie die Push, Pop und klare Verfahren.
Graphite Tipps
Graphite speichert jeden metrischen als Zeitreihe mit mehreren Auflösungen. Der zweite Beschluss 48 Stunden, 1 Stunde Auflösung für 31 Tage und 1 Tag Auflösung für 5 Jahre Probe graphite_buildout speichert 10. Um einen grobkörnigen Wert aus einer feinkörnigen Wert zu erzeugen, berechnet Graphite den Mittelwert (Durchschnitt) für jeden Zeitraum.
Da Graphit berechnet Mittelwerte implizit, ist der sinnvollste Weg, um Zähler in Graphit behandeln, als ein "Treffer pro Sekunde" -Wert. Auf diese Weise kann eine Grafik, korrekte Ergebnisse unabhängig davon, welche Auflösungsstufe verwendet es zu produzieren.
Die Behandlung von Zählern als Treffer pro Sekunde hat unangenehme Folgen, aber. Wenn einige metrische sieht eine 1000 Hit Spike in einer Sekunde, dann fällt für mindestens 9 Sekunden auf Null, wird der Graphit-Chart für das metrische eine Spitze von 100, 1000 nicht zeigen, da Graphite erhält Messdaten alle 10 Sekunden und der Spike schaut zu Graphite wie 100 Zugriffe pro Sekunde über einen Zeitraum von 10 Sekunden.
Wenn Sie Ihr Diagramm zu 1000 Hits statt 100 Zugriffe pro Sekunde angezeigt werden sollen, gelten die Graphite hitcount () -Funktion, mit einer Auflösung von 10 Sekunden oder mehr. Die hitcount Funktion wandelt pro-Sekunde-Werte, um rohe Trefferzahl anzunähern. Achten Sie darauf, eine Resolution Wert groß genug, um mindestens eine Pixelbreite auf dem resultierenden Graphen dargestellt werden können, sonst Graphite werden Durchschnittswerte der Trefferzahl zu berechnen und produzieren eine verwirrende Graphen.
Es ist in der Regel sinnvoll, die Nullwerte in Graphite mit Null zu behandeln, aber das ist nicht die Standardeinstellung; Standardmäßig zieht Graphite nichts für Nullwerte. Sie können diese Option für jede Kurve zu drehen.
Referenzdokumentation
Dekorateure
metric
& Nbsp; Benachrichtigt Statsd mit UDP jedes Mal die Funktion aufgerufen wird. Sendet beide Anruf zählt und Timing-Informationen. Der Name des Metrik Statsd gesendeten . .
metricmethod
& Nbsp; wiemetric, aber der Name des Statsd Metrik ...
Metric (stat = None, Rate = 1 Methode = False, count = True, Timing = True)
& Nbsp; Ein Dekorateur oder Kontextmanager mit Optionen.
& Nbsp; stat ist der Name der Metrik zu senden; stellen Sie Keine, um den Namen der Funktion oder Methode zu verwenden. Bewerten lässt Sie die Anzahl der Pakete an Statsd indem Sie eine Zufallsstichprobe geschickt zu reduzieren; zum Beispiel, setzen Sie ihn auf 0,1 bis einem Zehntel der Pakete zu senden. Wenn die Methode Parameter true ist, wird die Standard-Metrik-Name auf der Methode Klassennamen statt dem Modulnamen basiert. Einstellen Zahl auf False deaktiviert die Zählerstatistik um Statsd gesendet. Einstellung Timing auf False deaktiviert die Zeitstatistiken zu Statsd gesendet.
& Nbsp; Beispiel Verwendung als Dekorateur:
& Nbsp;Metric ('frequent_func', Rate = 0,1, Timing = False)
& Nbsp; def frequent_func ():
& Nbsp; "" "schnell etwas tun und häufig" ""
& Nbsp; Beispiel den Einsatz als Kontextmanager:
& Nbsp; def do_something ():
& Nbsp; mit Metric ('doing_something'):
& Nbsp; Pass
& Nbsp; Wenn perfmetrics sendet Pakete zu häufig, kann UDP-Pakete verloren gehen und die Anwendungsleistung beeinträchtigt werden kann. Sie können die Anzahl der Pakete und die CPU-Belastung mit dem Metric Dekorateur mit Optionen statt metrischen oder metricmethod reduzieren. Der Dekorateur obigen Beispiel verwendet eine Abtastrate und eine statische Metriknamen. Darüber hinaus werden der Sammlung von Timing-Informationen.
& Nbsp; Wenn Sie Metric als Kontext-Manager, müssen Sie den Stat-Parameter stellen oder nichts aufgezeichnet.
Funktionen
statsd_client ()
& Nbsp; Liefert die aktuell konfigurierten StatsdClient. Gibt den lokalen Thread-Client, wenn es eine gibt, oder die globale Client, wenn es eine gibt, oder Keine.
set_statsd_client (client_or_uri)
& Nbsp; Legen Sie die globalen StatsdClient. // URI oder None: Der client_or_uri kann ein StatsdClient ein statsd sein.
statsd_client_from_uri (uri)
& Nbsp; erstellen StatsdClient von einer URI. Ein typisches URI statsd: // localhost: 8125. Unterstützte optionale Abfrageparameter sind Präfix und gauge_suffix. Die Standard-Präfix ist leer und das Standard gauge_suffix ist .. Siehe StatsdClient Dokumentation für weitere Informationen zu gauge_suffix.
StatsdClient Methoden
Python-Code können benutzerdefinierte Metriken, indem Sie zuerst immer die aktuellen StatsdClient mit dem statsd_client () -Methode zu senden. Beachten Sie, dass statsd_client () gibt keine, wenn kein Client konfiguriert wurde.
Die meisten der unten aufgeführten Methoden haben optional Rate und buf Parameter. Der Parameter Geschwindigkeit, wenn auf einen Wert von weniger als 1, verursacht StatsdClient um eine Zufallsstichprobe von Paketen anstatt jedes Paket senden. Wenn der Parameter buf ist eine Liste, fügt StatsdClient den Paketinhalt an den buf Liste anstatt senden Sie das Paket, so dass es möglich ist, mehrere Updates in einem einzigen Paket zu senden. Denken Sie daran, dass die Größe des UDP-Pakete ist begrenzt (die Grenze variiert je nach dem Netzwerk, aber 1000 Byte ist normalerweise eine gute Schätzung) und alle zusätzlichen Bytes werden stillschweigend ignoriert.
Timing (stat, den Wert, Rate = 1, buf = None)
& Nbsp; Nehmen Timing-Informationen. stat ist der Name der Metrik zu erfassen und Wert ist die Zeitmessung in Millisekunden. Beachten Sie, dass Statsd hält mehrere Datenpunkte für jedes Timing metrisch, so Timing-Metriken können mehr Speicherplatz als Zähler oder Lehren zu nehmen.
Manometer (stat, den Wert, Suffix = Kein, Rate = 1, buf Keine =)
& Nbsp; Aktualisieren eines Messwertes. stat ist der Name der Metrik zu erfassen und Wert ist der neue Messwert. Ein Messgerät stellt eine anhaltende Wert wie beispielsweise ein Pool-Größe. Da Lehren aus verschiedenen Maschinen oft Konflikt wird ein Suffix in der Regel angewendet, um Namen zu messen. Wenn das Suffix Parameter ist ein String (einschließlich einer leeren Zeichenfolge), überschreibt er den Standardanzeige Suffix.
incr (stat, count = 1, Rate = 1, buf = None)
& Nbsp; einen Zähler von Graf. Beachten Sie, dass Statsd löscht alle Zählerwerte jedes Mal, wenn die Messdaten sendet, um Graphit, das geschieht in der Regel alle 10 Sekunden. Wenn Sie eine persistente Wert müssen, kann es sinnvoller, ein Messgerät, statt einen Zähler zu verwenden.
decr (stat, count = 1, Rate = 1, buf = None)
& Nbsp; Decrement ein Zähler von Graf.
sendbuf (buf)
& Nbsp; senden Sie den Inhalt der buf Liste Statsd

Was ist neu in dieser Pressemitteilung:

  • Hinzugefügt einen optionalen Pyramide. schen und eine ähnliche WSGI Filter App, die bis setzt die Statsd Client für jede Anforderung.

Was ist neu in Version 0.9.4:.

  • Optimiert die Verwendung von reduzierten Abtastraten

Was ist neu in Version 0.9.2:

  • Metric kann nun entweder als Dekorateur verwendet werden oder ein Kontext-Manager.
  • Aus der Unterschrift StatsdClient mehr wie James Socol den StatsClient.

Anforderungen :

  • Python

Ähnliche Software

battery_monitor
battery_monitor

2 Jun 15

IPShutter
IPShutter

3 Jun 15

gShieldConf
gShieldConf

3 Jun 15

Andere Software von Entwickler Shane Hathaway

repoze.pgtextindex
repoze.pgtextindex

20 Feb 15

oauth2sample
oauth2sample

14 Apr 15

slowlog
slowlog

20 Feb 15

Yasso
Yasso

14 Apr 15

Kommentare zu perfmetrics

Kommentare nicht gefunden
Kommentar hinzufügen
Schalten Sie auf die Bilder!