perfmetrics

Software screenshot:
perfmetrics
Rincian Software:
Versi: 0.9.5
Tanggal Upload: 20 Feb 15
Pengembang: Shane Hathaway
Lisensi: Gratis
Popularitas: 4

Rating: nan/5 (Total Votes: 0)

perfmetrics menyediakan cara sederhana untuk menambahkan software metrik kinerja untuk Python perpustakaan dan aplikasi & nbsp;. Gunakan perfmetrics untuk menemukan kemacetan yang benar dalam aplikasi produksi.
Paket perfmetrics adalah klien dari Statsd daemon oleh Etsy, yang pada gilirannya klien Grafit (khusus, daemon Carbon). Karena paket perfmetrics mengirimkan paket UDP ke Statsd, perfmetrics menambahkan tidak ada I / O penundaan aplikasi dan sedikit CPU overhead. Hal ini dapat bekerja sama dengan baik di berulir (sinkron) atau event-driven (asynchronous) software.
Penggunaan
Gunakan dekoratormetric danmetricmethod untuk membungkus fungsi dan metode yang harus mengirimkan waktu dan memanggil statistik untuk Statsd. Tambahkan dekorator untuk setiap fungsi atau metode yang bisa menjadi hambatan, termasuk fungsi perpustakaan.
Contoh:
dari perfmetrics impor metrik
dari perfmetrics impor metricmethod
metric
def myfunction ():
& Nbsp; "" "Lakukan sesuatu yang mungkin mahal" ""
class MyClass (object):
& Nbsp;metricmethod
& Nbsp; def MyMethod (self):
& Nbsp; "" "Lakukan beberapa hal lain yang mungkin mahal" ""
Selanjutnya, memberitahu perfmetrics cara untuk terhubung ke Statsd. (Sampai Anda lakukan, dekorator tidak berpengaruh.) Idealnya, aplikasi Anda harus membaca Statsd URI dari file konfigurasi pada saat startup, tetapi contoh di bawah ini menggunakan URI keras-kode untuk kesederhanaan:
dari perfmetrics impor set_statsd_client
set_statsd_client ('statsd: // localhost: 8125')
for i in xrange (1000):
& Nbsp; myfunction ()
& Nbsp; MyClass MyMethod () ().
Jika Anda menjalankan kode itu, akan memecat 2.000 paket UDP di pelabuhan 8125. Namun, kecuali jika Anda telah menginstal Grafit dan Statsd, semua paket tersebut akan diabaikan dan menjatuhkan. Dropping adalah hal yang baik: Anda tidak ingin aplikasi produksi Anda gagal atau memperlambat hanya karena sistem pemantauan kinerja Anda dihentikan atau tidak bekerja.
Instal Graphite dan Statsd untuk menerima dan grafik metrik. Salah satu cara yang baik untuk menginstal mereka adalah contoh graphite_buildout di github, yang menginstal Graphite dan Statsd di lokasi kustom tanpa akses root.
Threading
Sementara sebagian besar program mengirim metrik dari benang pun ke server Statsd global yang tunggal, beberapa program perlu menggunakan server Statsd yang berbeda untuk setiap thread. Jika Anda hanya memerlukan server Statsd global, gunakan fungsi set_statsd_client di startup aplikasi. Jika Anda perlu menggunakan server Statsd yang berbeda untuk setiap thread, menggunakan obyek statsd_client_stack di setiap thread. Gunakan push, pop, dan metode yang jelas.
Grafit Tips
Toko grafit setiap metrik sebagai time series dengan beberapa resolusi. Resolusi sampel toko graphite_buildout 10 detik selama 48 jam, resolusi jam 1 untuk 31 hari, dan resolusi 1 hari selama 5 tahun. Untuk menghasilkan nilai berbutir kasar dari nilai berbutir halus, Grafit menghitung nilai rata-rata (rata-rata) untuk setiap rentang waktu.
Karena Grafit menghitung nilai rata-rata secara implisit, cara yang paling masuk akal untuk mengobati counter di Grafit adalah sebagai "hits per detik" nilai. Dengan begitu, grafik dapat menghasilkan hasil yang benar tidak peduli tingkat resolusi yang digunakannya.
Memperlakukan counter sebagai hit per detik memiliki konsekuensi yang tidak menguntungkan, namun. Jika beberapa metrik melihat 1000 hit lonjakan dalam satu detik, kemudian jatuh ke nol untuk setidaknya 9 detik, bagan Graphite untuk metrik yang akan menunjukkan lonjakan dari 100, tidak 1000, karena Grafit menerima metrik setiap 10 detik dan spike terlihat grafit seperti 100 hits per detik selama 10 detik.
Jika Anda ingin grafik Anda untuk menunjukkan 1000 hits daripada 100 hits per detik, menerapkan Graphite hitcount () fungsi, menggunakan resolusi 10 detik atau lebih. Fungsi hitcount mengkonversi nilai per-detik untuk perkiraan jumlah hit mentah. Pastikan untuk memberikan nilai resolusi yang cukup besar untuk diwakili oleh setidaknya satu lebar pixel pada grafik yang dihasilkan, jika Graphite akan menghitung rata-rata dari jumlah hit dan menghasilkan grafik membingungkan.
Biasanya masuk akal untuk mengobati nilai null di Grafit sebagai nol, meskipun itu tidak default; secara default, Graphite menarik apa-apa untuk nilai null. Anda dapat mengaktifkan opsi untuk setiap grafik.
Referensi Dokumentasi
Dekorator
metric
& Nbsp; memberitahu Statsd menggunakan UDP setiap kali fungsi ini dipanggil. Mengirim kedua hal panggilan dan informasi waktu. Nama metrik dikirim ke Statsd adalah . .
metricmethod
& Nbsp; Sepertimetric, tapi nama Statsd metrik ...
Metric (Stat = Tidak ada, tingkat = 1, metode = False, hitung = True, waktu = True)
& Nbsp; Sebuah dekorator atau konteks manajer dengan pilihan.
& Nbsp; Stat adalah nama dari metrik untuk mengirim; set ke None untuk menggunakan nama fungsi atau metode. Tingkat memungkinkan Anda mengurangi jumlah paket yang dikirim ke Statsd dengan memilih sampel acak; misalnya, set ke 0.1 untuk mengirim sepersepuluh dari paket. Jika parameter metode yang benar, default nama metrik didasarkan pada nama kelas metode daripada nama modul. Mengatur hitungan ke False menonaktifkan counter statistics dikirim ke Statsd. Mengatur waktu untuk False Menonaktifkan statistik waktu dikirim ke Statsd.
& Nbsp; Contoh digunakan sebagai dekorator:
& Nbsp;Metric ('frequent_func', tingkat = 0,1, waktu = False)
& Nbsp; def frequent_func ():
& Nbsp; "" "Lakukan sesuatu yang cepat dan sering" ""
& Nbsp; Contoh penggunaan sebagai manajer konteks:
& Nbsp; def do_something ():
& Nbsp; dengan Metric ('doing_something'):
& Nbsp; lulus
& Nbsp; Jika perfmetrics mengirimkan paket terlalu sering, paket UDP mungkin akan hilang dan kinerja aplikasi dapat terpengaruh. Anda dapat mengurangi jumlah paket dan overhead CPU menggunakan dekorator Metric dengan pilihan bukan metrik atau metricmethod. Contoh dekorator atas menggunakan sample rate dan nama metrik statis. Hal ini juga menonaktifkan pengumpulan informasi waktu.
& Nbsp; Bila menggunakan Metric sebagai manajer konteks, Anda harus memberikan parameter Stat atau tidak akan disimpan.
Fungsi
statsd_client ()
& Nbsp; Kembalikan saat ini dikonfigurasi StatsdClient. Mengembalikan klien benang-lokal jika ada satu, atau klien global yang jika ada satu, atau ada.
set_statsd_client (client_or_uri)
& Nbsp; Mengatur StatsdClient global. Client_or_uri bisa menjadi StatsdClient, sebuah statsd: // URI, atau Tidak ada.
statsd_client_from_uri (uri)
& Nbsp; Buat StatsdClient dari URI. Sebuah URI khas statsd: // localhost: 8125. Didukung parameter permintaan opsional awalan dan gauge_suffix. Awalan default adalah kosong dan gauge_suffix default .. Lihat dokumentasi StatsdClient untuk informasi lebih lanjut tentang gauge_suffix.
Metode StatsdClient
Kode python dapat mengirim metrik kustom dengan terlebih dahulu mendapatkan StatsdClient saat ini menggunakan metode statsd_client (). Perhatikan bahwa statsd_client () mengembalikan ada jika tidak ada klien telah dikonfigurasi.
Sebagian besar metode berikut memiliki opsional tingkat dan buf parameter. Parameter rate, ketika diatur ke nilai kurang dari 1, menyebabkan StatsdClient untuk mengirim sampel acak dari paket daripada setiap paket. Jika parameter buf adalah daftar, StatsdClient menambahkan isi paket ke daftar buf daripada mengirim paket, sehingga memungkinkan untuk mengirim beberapa pembaruan dalam satu paket. Perlu diingat bahwa ukuran paket UDP terbatas (batas bervariasi oleh jaringan, tapi 1000 byte biasanya menebak yang baik) dan setiap byte tambahan akan diabaikan diam-diam.
waktu (stat, nilai, tingkat = 1, buf = None)
& Nbsp; Rekam informasi waktu. Stat adalah nama dari metrik untuk merekam dan nilai adalah pengukuran waktu dalam milidetik. Perhatikan bahwa Statsd mempertahankan beberapa titik data untuk setiap waktu metrik, sehingga waktu metrik dapat mengambil ruang disk lebih dari counter atau alat pengukur.
gauge (stat, nilai, akhiran = None, tingkat = 1, buf = None)
& Nbsp; Memperbarui nilai gauge. Stat adalah nama dari metrik untuk merekam dan nilai adalah nilai ukur baru. Indeks A merupakan nilai gigih seperti ukuran kolam renang. Karena alat pengukur dari mesin yang berbeda sering konflik, akhiran biasanya diterapkan untuk mengukur nama. Jika parameter akhiran string (termasuk string kosong), itu menimpa akhiran mengukur standar.
KENAIKAN (stat, hitung = 1, tingkat = 1, buf = None)
& Nbsp; Increment counter dengan hitungan. Perhatikan bahwa Statsd membersihkan semua nilai counter setiap kali mengirimkan metrik untuk Graphite, yang biasanya terjadi setiap 10 detik. Jika Anda membutuhkan nilai yang terus-menerus, mungkin lebih tepat untuk menggunakan alat ukur bukan counter.
decr (stat, hitung = 1, tingkat = 1, buf = None)
& Nbsp; Pengurangan counter dengan hitungan.
sendbuf (buf)
& Nbsp; Kirim isi daftar buf ke Statsd

Apa yang baru dalam rilis ini:

  • Ditambahkan Pyramid opsional. tween dan aplikasi yang sama WSGI filter yang mendirikan klien Statsd untuk setiap permintaan.

Apa yang baru dalam versi 0.9.4:.

  • Dioptimalkan penggunaan tingkat sampel berkurang

Apa yang baru dalam versi 0.9.2:

  • Metrik sekarang dapat digunakan baik sebagai dekorator atau manajer konteks.
  • Membuat tanda tangan StatsdClient lebih seperti James Socol yang StatsClient.

Persyaratan :

  • Python

Software yang serupa

Watchdog
Watchdog

14 Apr 15

Keystroke
Keystroke

17 Feb 15

Products.ZNagios
Products.ZNagios

11 May 15

Os-Cafe
Os-Cafe

2 Jun 15

Perangkat lunak lain dari pengembang Shane Hathaway

slowlog
slowlog

20 Feb 15

repoze.pgtextindex
repoze.pgtextindex

20 Feb 15

oauth2sample
oauth2sample

14 Apr 15

Komentar untuk perfmetrics

Komentar tidak ditemukan
Tambahkan komentar
Aktifkan gambar!