perfmetrics

Screenshot Software:
perfmetrics
Szczegóły programowe:
Wersja: 0.9.5
Filmu: 20 Feb 15
Wywoływacz: Shane Hathaway
Licencja: Wolny
Popularność: 4

Rating: nan/5 (Total Votes: 0)

perfmetrics zapewnia prosty sposób dodać wskaźniki wydajności oprogramowania do bibliotek Pythona i aplikacji. & Nbsp; pomocą perfmetrics znaleźć prawdziwe wąskich gardeł w aplikacji produkcyjnej.
Pakiet perfmetrics jest klientem demona Statsd przez Etsy, który z kolei jest klientem Graphite (konkretnie, demon węgla). Ponieważ pakiet perfmetrics wysyła pakiety UDP do Statsd, perfmetrics dodaje żadnych opóźnień I / O do aplikacji i małym obciążeniu procesora. Może pracować równie dobrze w gwintowany (synchroniczne) lub (asynchronicznego) oprogramowania zdarzeniami.
Zastosowanie
Użyjmetric imetricmethod dekoratorów zawinąć funkcje i metody, które powinny wysyłać czasu i wymagają statystyki Statsd. Dodać dekoratory do dowolnej funkcji lub sposobu, który może być wąskim gardłem w tym funkcje biblioteki.
Próbka:
z perfmetrics importować metryczne
z perfmetrics importu metricmethod
metric
myfunction def ():
& Nbsp; "" "Zrób coś, co może być kosztowne" ""
Klasa MojaKlasa (object):
& Nbsp;metricmethod
& Nbsp; def myMethod (self):
& Nbsp; "" "Czy jakieś inne możliwe drogie rzeczy" ""
Dalej, powiedz perfmetrics jak połączyć się Statsd. (Dopóki nie zrobisz, dekoratorzy mają wpływu.) Najlepiej, aplikacja powinna przeczytać Statsd URI z pliku konfiguracyjnego na starcie, ale poniżej przykład wykorzystuje zakodowane URI dla uproszczenia:
z perfmetrics importu set_statsd_client
set_statsd_client ("statsd: // localhost: 8125")
dla i w xrange (1000):
& Nbsp; myfunction ()
. & Nbsp; MyClass () myMethod ()
Po uruchomieniu tego kodu, to ogień 2000 UDP na porcie 8125. Jednakże, chyba że masz już zainstalowany Graphite i Statsd, wszystkie te pakiety zostaną zignorowane i spadł. Upuszczanie jest dobra rzecz: nie chcesz, aby aplikacja produkcji lub spowolnić nie tylko dlatego, że system monitorowania wydajności jest zatrzymany lub nie działa.
Zainstaluj Grafit i Statsd odbierać i wykres metryki. Dobrym sposobem, aby zainstalować je graphite_buildout przykładem na github, który instaluje Graphite i Statsd w niestandardowej lokalizacji, bez dostępu do konta root.
Threading
Podczas gdy większość programów wysłać z dowolnego wątku metryk do jednego globalnego serwera Statsd niektóre programy potrzebne do korzystania z innego serwera Statsd dla każdego wątku. Jeśli potrzebujesz tylko globalny serwer Statsd, użyj funkcji set_statsd_client podczas uruchamiania aplikacji. Jeśli musisz użyć innego serwera Statsd dla każdego wątku, korzystać z obiektu statsd_client_stack w każdym wątku. Użyj push, pop, i jasne metody.
Porady grafitowe
Sklepy grafitowe każda metryka jako szeregów czasowych z wielu rozdzielczościach. Druga rezolucja w ciągu 48 godzin, rozdzielczość 1 godziny do 31 dni i 1 dzień rozdzielczości 5 lat przykładowe sklepy graphite_buildout 10. W celu uzyskania grubej wartość drobnoziarnistą od pięknej wartości własciwej, Grafit oblicza wartość średnią (średnią) dla każdego okresu.
Ponieważ Grafit oblicza wartości średnie w domyśle, że najbardziej rozsądnym sposobem leczenia liczniki w Graphite jest jako "hity na sekundę" wartości. W ten sposób, wykres może produkować poprawne wyniki bez względu na to, jaki poziom rozdzielczości używa.
Leczenie liczniki jak trafi na sekundę ma niefortunne konsekwencje, jednak. Jeśli niektóre metryki widzi 1000 trafień skok w ciągu jednej sekundy, a następnie spadnie do zera przez co najmniej 9 sekund do tego wykresu Grafit metryki pokaże skok 100, nie 1000, ponieważ Grafit otrzymuje metryki co 10 sekund, a wygląda na skok Grafit jak 100 odsłon na sekundę ponad drugi okres 10.
Jeśli chcesz, aby wykres, aby pokazać 1000 odsłon zamiast 100 odsłon na sekundę, zastosowanie funkcji Grafit hitcount (), za pomocą rozdzielczość co najmniej 10 sekund. Funkcja hitcount przeliczać na sekundę zbliżenie surowe liczby trafień. Pamiętaj, aby podać wartość rozdzielczości wystarczająco duże, aby być reprezentowana przez co najmniej jednego szerokości piksela na wynikające wykresie, inaczej Grafit będzie obliczyć średnie liczby hit i produkować mylące wykres.
Zwykle ma sens w leczeniu wartości null w Graphite jako zero, choć nie jest to domyślna; domyślnie Grafit rysuje nic na wartości null. Można włączyć tę opcję dla każdego wykresu.
Dokumentacja referencyjny
Dekoratorów
metric
& Nbsp; Powiadamia Statsd przy użyciu protokołu UDP każdym razem funkcja jest wywoływana. Wysyła zarówno liczbę połączeń i informacje rozrządu. Nazwa metryki przesłanym Statsd jest . .
metricmethod
& Nbsp; Jakmetric, ale nazwa Statsd metryki jest ...
Metric (stat = Brak, stopa = 1, metoda = False, count = prawda, czas = True)
& Nbsp; dekorator lub kontekst, menedżer z opcji.
& Nbsp; stat to nazwa metryki wysłać; ustawić na Brak, aby użyć nazwy funkcji lub metody. stopa pozwala zmniejszyć liczbę pakietów wysłanych do Statsd wybierając losową próbkę; na przykład ustawić go na 0,1 wysłać jedną dziesiątą pakietów. Jeżeli parametr metody jest prawdą, domyślna nazwa metryka jest w oparciu o metodę w klasie nazwy zamiast nazwy modułu. Ustawianie liczby False wyłącza statystyki licznika wysyłanych do Statsd. Ustawianie czasu False wyłącza statystyki czasowe wysłane do Statsd.
& Nbsp; Przykładowe użycie jako dekorator:
& Nbsp;Metric ("frequent_func", stopa = 0,1, czas = False)
& Nbsp; def frequent_func ():
& Nbsp; "" "Czy coś szybko i często" ""
& Nbsp; Przykładowe użycie jako kierownik kontekstowego:
& Nbsp; def do_something ():
& Nbsp; z Metric ("doing_something"):
& Nbsp; karnet
& Nbsp; Jeśli perfmetrics wysyła pakiety zbyt często, pakiety UDP mogą zostać utracone i wydajność aplikacji może być ograniczona. Można zmniejszyć liczbę pakietów i nakład pracy procesora przy użyciu opcji Metric dekorator z metryki lub zamiast metricmethod. Przykładem dekorator powyżej wykorzystuje częstotliwość próbkowania i statycznej nazwy metryki. Wyłącza również zbieranie informacji o taktowaniu.
& Nbsp; W przypadku korzystania Metric jako kierownik kontekstowego, należy podać parametr stat lub nie będą rejestrowane.
Funkcje
statsd_client ()
& Nbsp; Powrót aktualnie skonfigurowanej StatsdClient. Zwraca klientowi lokalny wątek, jeśli istnieje jeden lub globalne klient, jeśli istnieje, lub Brak.
set_statsd_client (client_or_uri)
& Nbsp; Ustaw globalny StatsdClient. Client_or_uri może być StatsdClient, statsd: // URI lub Brak.
statsd_client_from_uri (URI)
& Nbsp; Tworzenie StatsdClient z URI. Typowy URI jest statsd: // localhost: 8125. Obsługiwane są opcjonalne parametry zapytań prefiks i gauge_suffix. Domyślny prefiks jest pusty, a domyślne gauge_suffix jest .. Zobacz dokumentację StatsdClient uzyskać więcej informacji na temat gauge_suffix.
StatsdClient Metody
Kod Python może wysłać własnych metryk przez zdobycie aktualnej StatsdClient za pomocą metody statsd_client (). Należy pamiętać, że statsd_client () zwraca None, jeśli żaden klient nie został skonfigurowany.
Większość z poniższych metod mają parametry opcjonalne stóp i buf. Parametr ten, gdy ustawiony na wartość mniejszą niż 1, powoduje StatsdClient wysłać losową próbkę pakietów, a nie każdy pakiet. Jeśli parametr buf jest lista, StatsdClient dodaje zawartości pakietów do listy buf zamiast przesłać pakiet, dzięki czemu możliwe jest przesyłanie wielu aktualizacji w jednym pakiecie. Należy pamiętać, że wielkość pakietów UDP jest ograniczona (limit zależy od sieci, ale 1000 bajtów jest zwykle dobra przypuszczenie) i wszelkie dodatkowe bajty będą ignorowane w milczeniu.
rozrządu (stat, wartości, stopa = 1, buf = None)
& Nbsp; Zapis informacji rozrządu. stat to nazwa metryki do nagrywania i wartość pomiaru czas w milisekundach. Należy pamiętać, że Statsd utrzymuje kilka punktów danych dla każdej metryki rozrządu, więc wskaźniki czasowe mogą więcej miejsca na dysku niż liczników i mierników.
Wskaźnik (stat, wartość, przyrostek = Brak, stopa = 1, buf = None)
& Nbsp; Aktualizacja wartości miernika. stat to nazwa metryki do nagrywania i wartość jest nowa wartość wskaźnik. Miernik stanowi trwałą wartość, na przykład o wielkości basenu. Ponieważ wskaźniki z różnych maszynach często konflikt, przyrostek jest zwykle stosowana do oszacowania nazwy. Jeżeli parametr przyrostek jest ciąg (w tym pustym ciągiem), zastępuje domyślny sufiks skrajni.
incr (stat, count = 1 stopa = 1, buf = None)
& Nbsp; Zwiększ licznik przez hrabiego. Należy pamiętać, że Statsd usuwa wszystkie wartości licznika za każdym razem wysyła metryki do Graphite, które zwykle się dzieje co 10 sekund. Jeśli potrzebujesz trwałe wartości, może być bardziej właściwe wykorzystanie miernika zamiast licznika.
obn (stat, count = 1 stopa = 1, buf = None)
& Nbsp; Zmniejszanie licznika przez hrabiego.
sendbuf (buf)
& Nbsp; Wyślij zawartość listy buf do Statsd

Co nowego w tym wydaniu:

  • Dodano opcjonalną Pyramid. dzy i podobna aplikacja filtr WSGI, że ustawia klienta Statsd dla każdego żądania.

Co nowego w wersji 0.9.4:.

  • Zoptymalizowane zastosowanie obniżonych stawek próbki

Co nowego w wersji 0.9.2:

  • Metric może być teraz używany zarówno jako dekorator lub kierownik kontekst.
  • Wykonane podpis StatsdClient bardziej jak James Socol za StatsClient.

Wymagania :

  • Python

Podobne oprogramowanie

yacpi
yacpi

2 Jun 15

fireflier
fireflier

3 Jun 15

ATSlog
ATSlog

2 Jun 15

Inne programy z deweloperem Shane Hathaway

slowlog
slowlog

20 Feb 15

repoze.pgtextindex
repoze.pgtextindex

20 Feb 15

Yasso
Yasso

14 Apr 15

Komentarze do perfmetrics

Komentarze nie znaleziono
Dodaj komentarz
Włącz zdjęć!