perfmetrics egy egyszerű módja annak, hogy hozzá szoftver teljesítmény mérőszámok a Python könyvtárak és alkalmazások. & Nbsp; Használja perfmetrics hogy megtalálja az igazi szűk termelési alkalmazást.
A perfmetrics csomag az ügyfél a Statsd démont Etsy, amely viszont az ügyfél a Graphite (pontosabban a Carbon daemon). Mivel a perfmetrics csomagot küld UDP csomagokat Statsd, perfmetrics hozzáteszi, nincs I / O késések az alkalmazások és a kis CPU terhelését. Csak akkor működik egyformán jól menetes (szinkron) vagy eseményvezérelt (aszinkron) szoftver.
Használat
Használja ametric ésmetricmethod lakberendezők, hogy lezárja funkciók és módszerek kell küldeni az időzítés és a hívás statisztikák Statsd. Adja hozzá a lakberendezők, hogy bármelyik funkciót módszert, hogy lehet egy szűk, beleértve a könyvtári funkciókat.
Minta:
a perfmetrics importálni metrikus
a perfmetrics import metricmethod
metric
def myFunction ():
& Nbsp; "" "Tégy valamit, hogy lehet drága" ""
osztály MyClass (tárgy):
& Nbsp;metricmethod
& Nbsp; def mymethod (self):
& Nbsp; "" "nem más esetlegesen költséges dolog" ""
Ezután mondd perfmetrics hogyan lehet csatlakozni Statsd. (Amíg nem történik meg, a lakberendezők nincs hatása.) Ideális esetben a kérelmet el kell olvasnia a Statsd URI egy konfigurációs fájl az induláskor, de az alábbi példát használ kódolva URI az egyszerűség kedvéért:
a perfmetrics import set_statsd_client
set_statsd_client ("statsd: // localhost: 8125)
for i in xrange (1000):
& Nbsp; myFunction ()
& Nbsp; MyClass (). Mymethod ()
Ha fut a kód, akkor majd tüzet 2000 UDP csomagokat port 8125. Azonban, ha már telepítette grafit és Statsd, az összes ilyen csomagokat figyelmen kívül hagyja, és leesett. Csepegtető egy jó dolog: ha nem szeretné, hogy a termelési alkalmazás nem vagy lassítani csak azért, mert a teljesítmény-ellenőrző rendszer leáll, vagy nem működik.
Telepítse grafit és Statsd kapni és ábrázolja a mutatókat. Egy jó módja annak, hogy telepítse azokat a graphite_buildout például a GitHub, ami telepíti grafit és Statsd másik helyre anélkül, hogy root hozzáférést.
Threading
Míg a legtöbb program küldeni mérőszámokat minden szálat, hogy egyetlen globális Statsd szerveren, néhány program kell használni a különböző Statsd szerver minden szálat. Ha csak a globális Statsd szerver, használja a set_statsd_client funkciót az alkalmazás indításakor. Ha meg kell használni egy másik Statsd szerver minden szálat, használja a statsd_client_stack tárgy minden szál. Használja a push, pop, és világos módszerek.
Graphite Tippek
Graphite tárolja az egyes mutatók, mint egy idősor többféle felbontásban. A minta graphite_buildout tárolja 10 másodperc felbontás 48 órán át, 1 óra felbontás az 31 nap, és 1 nap felbontás 5 évig. Hogy készítsen egy durva szemcséjű értéket finomszemcsés értéket, Graphite kiszámítja az átlagos értéket (átlag) minden időtartamon.
Mivel Graphite kiszámítja átlagértékek burkoltan, a legésszerűbb módon kezelni számláló grafit, mint a "találatok másodpercenként" értéket. Így, egy grafikon képes helyes eredményeket nem számít, melyik felbontást használ.
Kezelésére számlálókat eléri másodpercenként van nagyon súlyos következményei lehetnek, de. Ha néhány metrikus látja a 1000 hit tüske egy másodpercig, majd nullára csökken, legalább 9 másodperc, a Graphite slágerlistán, hogy ütemezést fog mutatni egy tüske 100, nem 1000 óta Graphite kap mérőszámok 10 másodpercenként, és a tüske úgy néz ki, hogy Grafit, mint 100 találat másodpercenként több mint 10 másodperc alatt.
Ha azt szeretné, grafikon mutatja 1000 találatot helyett 100 találat másodpercenként, alkalmazza a Graphite hitcount () függvény segítségével indítvány 10 másodpercig. A hitcount függvény átalakítja per másodperces értékek közelítése nyers hit számít. Ügyeljen arra, hogy a felbontás értéke elég nagy ahhoz, hogy képviseli legalább egy pixel szélességű a kapott gráf, különben Graphite kiszámolja átlagai hit számít, és összeállítottak egy zavaros grafikont.
Általában érdemesebb kezelésére null értékek Graphite nulla, bár ez nem az alapértelmezett; alapértelmezés szerint, Graphite felhívja semmit null értékeket. Akkor kapcsolja ki ezt a lehetőséget minden gráf.
referenciadokumentáció
Lakberendezők
metric
& Nbsp; értesít, Statsd UDP minden alkalommal a funkciót nevezik. Küld mind hívást számít és játékidő. A név a metrikus küldött Statsd a
metricmethod
& Nbsp; Likemetric, de a neve a Statsd mérőszám
Metric (stat = Nincs, sebesség = 1, method = False, count = True, időzítés = True)
& Nbsp; A dekoratőr, vagy összefüggésben menedzser lehetőségeket.
& Nbsp; stat a neve a metrikus küldeni; meg azt, hogy nincs név használatára a funkciót vagy módszert. ráta segítségével számának csökkentése küldött csomagokat Statsd választunk egy véletlen mintát; Például állítsd 0,1 küldeni egytizede a csomagokat. Ha a módszer paraméter igaz, az alapértelmezett mérőszám neve alapján a módszer osztály nevét, nem pedig a modul nevét. Beállítás száma a False letiltja a számláló statisztikák küldött Statsd. Beállítás időzítés Hamis letiltja az időzítés statisztikák küldött Statsd.
& Nbsp; Sample használata, mint egy dekoratőr:
& Nbsp;Metric ("frequent_func", sebesség = 0,1, az időzítés = False)
& Nbsp; def frequent_func ():
& Nbsp; "" "Van valami gyors és gyakran" ""
& Nbsp; Sample használatát, mint környezet vezetője:
& Nbsp; def do_something ():
& Nbsp; a Metric ("doing_something"):
& Nbsp; menetben
& Nbsp; Ha perfmetrics csomagokat küld túl gyakran, UDP csomagok elveszhetnek, és az alkalmazás teljesítményét befolyásolhatja. Csökkentheti a csomagok száma és a CPU terhelését segítségével Metric dekoratőr a lehetőségek helyett metrikus vagy metricmethod. A dekoratőr fenti példa mintavételezéssel és egy statikus metrikus nevet. Ez szintén tiltja a gyűjtemény időzítési információt.
& Nbsp; Ha Metric, mint környezet menedzser, meg kell adnia a stat paraméter, vagy nem készül felvétel.
Funkciók
statsd_client ()
& Nbsp; Vissza a jelenleg beállított StatsdClient. Visszaadja a menet-helyi kliens, ha van ilyen, vagy a globális ügyfél, ha van ilyen, vagy sem.
set_statsd_client (client_or_uri)
& Nbsp; a rendszer a globális StatsdClient. A client_or_uri lehet StatsdClient, a statsd: // URI, vagy sem.
statsd_client_from_uri (uri)
& Nbsp; létrehozása StatsdClient egy URI. Egy tipikus URI statsd: // localhost: 8125. A támogatott opcionális lekérdezésparamétereket prefix és gauge_suffix. Az alapértelmezett előtag üres, és az alapértelmezett gauge_suffix van .. Lásd a StatsdClient dokumentációjában bővebb információkat gauge_suffix.
StatsdClient módszerei
Python kódot küldhet egyéni mutatókat először kezd az aktuális StatsdClient segítségével statsd_client () metódust. Ne feledje, hogy statsd_client () függvény esetén nincs semmilyen kliens be lett állítva.
A legtöbb módszer egyikét kell opcionális ráta és buf paraméterek. A paraméterrel, ha ennek az értéke kevesebb, mint 1, okoz StatsdClient küldeni véletlenszerűen kiválasztott csomagok helyett minden egyes csomagot. Ha a buf paraméter egy listát, StatsdClient hozzáfűzi a csomag tartalmának a buf lista helyett küldje a csomagot, ami lehetővé teszi küldjön több frissítést egy csomagban. Ne feledje, hogy a méret UDP csomagokat korlátozott (a határa függ a hálózat, de 1000 byte általában egy jó kitalálni), és semmilyen extra bájtok figyelmen kívül hagyja csendben.
időzítése (stat, érték, sebesség = 1, buf: nincs)
& Nbsp; Record játékidő. stat a neve a metrikus rögzítésére és érték az időzítés mérési ezredmásodperc. Ne feledje, hogy Statsd nek több adatot ellenőriz minden időzítés metrikus, az időzítés mérőszámokat is több lemezterületet igényel, mint a számlálókat és a műszerek.
szelvény (stat, érték, utótag = Nincs, sebesség = 1, buf: nincs)
& Nbsp; Frissítse a szelvény értékét. stat a neve a metrikus rögzítésére és értéke az új nyomtávú értéket. Mérőeszközt jelentése állandó értéket, például egy medence mérete. Mivel műszer teszi különböző gépeken konfliktusok, a toldalék általában alkalmazott felmérni nevét. Ha a kiterjesztést paraméter egy string (beleértve az üres string), az felülírja az alapértelmezett nyomtávú utótag.
incr (stat, count = 1, sebesség = 1, buf: nincs)
& Nbsp; Növeli a számlálót száma. Ne feledje, hogy Statsd törli az összes számláló értékek minden alkalommal elküldi a mutatók, hogy a grafit, ami általában 10 másodpercenként. Ha szüksége van egy állandó érték, lehet, hogy megfelelőbb használata a szelvény helyett a számláló.
decr (stat, count = 1, sebesség = 1, buf: nincs)
& Nbsp; csökkentés a számlálót száma.
sendbuf (buf)
& Nbsp; küldése a tartalmát a buf lista Statsd.
Mi az új ebben a kiadásban:
- Bekerült egy opcionális Pyramid átkötő és hasonló WSGI filter app, hogy beállítja a Statsd ügyfél minden kérését.
Mi az új verzióban 0.9.4:
- Optimalizált használata csökkentett minta aránya.
Mi az új verzióban 0.9.2:
- Metric már fel lehet használni, mint akár egy dekoratőr, vagy összefüggésben vezetője.
- Made aláírása StatsdClient több, mint James Socol a StatsClient.
követelmények :
- Python
Hozzászólás nem található