perfmetrics

ソフトウェアのスクリーンショット:
perfmetrics
ソフトウェアの詳細:
バージョン: 0.9.5
日付のアップロード: 20 Feb 15
開発者: Shane Hathaway
ライセンス: 無料
人気: 4

Rating: nan/5 (Total Votes: 0)

perfmetrics Pythonライブラリとアプリケーションへのソフトウェアのパフォーマンスメトリックを追加するための簡単​​な方法を提供します 使用perfmetricsは、生産アプリケーションで真のボトルネックを見つけること。
perfmetricsパッケージには、今度はグラファイト(具体的には、カーボンデーモン)のクライアントであるEtsyの、によってStatsdデーモンのクライアントです。 perfmetricsパッケージはStatsdにUDPパケットを送信するので、perfmetricsは、アプリケーションと少しCPUオーバーヘッドへのI / O遅延を追加しません。これは、スレッド化(同期)またはイベント駆動型(非同期)ソフトウェアでも同様に動作することができます。
の使用法
タイミングを送信し、Statsdに統計を呼び出す必要があります関数やメソッドをラップする@metricと@metricmethodデコレータを使用してください。ライブラリ関数などの、ボトルネックになる可能性のある関数やメソッドにデコレータを追加します。
サンプル:
perfmetricsからメトリックをインポート
perfmetricsインポートmetricmethodから
@metric
デフてmyFunction():
  "" "" "高価になるかもしれない何かをする」
クラスMyClassの(オブジェクト):
  @metricmethod
 デフMyMethodは(自己):
  "" "他のいくつかの可能性が高価なことを行う" ""
次に、Statsdに接続する方法perfmetricsに伝える。 (あなたがするまで、デコレータは何の効果もありません。)理想的には、アプリケーションは起動時に設定ファイルからStatsd URIを読む必要がありますが、以下の例は、簡単にするためにハードコードされたURIを使用しています。
perfmetricsインポートset_statsd_clientから
set_statsd_client( 'statsd:// localhostを:8125')
私はxrange(1000)でのために:
 てmyFunction()
  MyClassの()MyMethodは()
あなたがそのコードを実行すると、それは、しかしポート8125.で2000 UDPパケットを発生させますあなたは既に黒鉛とStatsdをインストールしていない限り、それらのパケットのすべてが無視され、ドロップされます。ドロップは良いことです:あなたはあなたの本番アプリケーションに障害が発生したり、パフォーマンスの監視システムが停止または動作していないという理由だけでスローダウンする必要はありません。
メトリックを受信して​​グラフ化黒鉛とStatsdをインストールします。それらをインストールするための一つの良い方法は、rootアクセスすることなく、独自の場所に黒鉛とStatsdをインストールgithubの、でgraphite_buildout例です。
スレッディングの
ほとんどのプログラムは、単一のグローバルStatsdサーバへの任意のスレッドからメトリックを送信するが、一部のプログラムは、スレッドごとに異なる​​Statsdサーバーを使用する必要があります。あなたが唯一のグローバルStatsdサーバーが必要な場合は、アプリケーションの起動時にset_statsd_client関数を使用します。あなたは、スレッドごとに異なる​​Statsdサーバーを使用する必要がある場合は、各スレッドでstatsd_client_stackオブジェクトを使用します。プッシュ、ポップ、および明確なメソッドを使用してください。
のグラファイトのヒント
グラファイト店複数の解像度を持つ時系列として各メトリック。 48時間、31日間に1時間の分解能、および5年間の1日の解像度のためのサンプルgraphite_buildout·ストア10第2の解像度。きめの細かい値から粗い粒度の値を生成するために、グラファイトは、各時間区間の平均値(平均値)を算出する。
グラファイトは暗黙的に平均値を算出しているため、グラファイトのカウンタを治療する最も賢明な方法は、「毎秒ヒット」の値としてある。そうすれば、グラフが正しい結果にそれが使用する解像度レベルに関係なく生成することができます。
毎秒ヒットとしてカウンターを扱うと、しかし、不幸な結果を持っています。いくつかのメトリックは1秒間に1000年のヒットスパイクを見た場合、少なくとも9秒ゼロになるグラファイトはメトリック10秒ごとに受信して、スパイクはに見えているので、そのメトリック用黒鉛チャートは、100ではなく1000年のスパイクが表示されます10秒間にわたって毎秒100のヒットのようなグラファイト。
あなたのグラフは1000年のヒットではなく、毎秒100ヒット数を表示する場合は、10秒以上の解像度を使用して、グラファイトHitCountの各()関数を適用する。 HitCountの各機能は、生のヒット数を近似するために毎秒値に変換します。そうでなければグラファイトはヒット数の平均値を計算し、紛らわしいグラフが生成されます、結果のグラフ上に少なくとも1つのピクセル幅で表現するには十分な大きさの解像度値を提供するようにしてください。
これは通常、それはデフォルトではありませんが、ゼロとしてグラファイト内のNULL値を処理するために理にかなっている。デフォルトでは、グラファイトはNULL値には何も描画しません。あなたは、各グラフのためにそのオプションをオンにすることができます。
のリファレンスドキュメント
デコレータ
@metric
&NBSP;通知しStatsdは関数が呼び出されるたびにUDPを使用。呼び出し回数とタイミング情報の両方を送信します。 Statsdに送信されたメトリックの名前は、<モジュール>。<関数名>。
@metricmethod
&NBSP; <メソッド名> @metricに似ていますが、Statsdメトリックの名前は、<クラスモジュール>は<クラス名>。。。
メトリック(STAT =なし、速度= 1、方法= Falseを、カウント= TRUE、タイミング=真)
&NBSP;オプションを持つデコレータまたはコンテキストマネージャ。
&NBSP; STATは、送信するメトリックの名前です。関数やメソッドの名前を使用するようになしに設定します。レートは、あなたがランダムなサンプルを選択することで、Statsdに送信されたパケットの数を減らすことができます。例えば、パケットの十分の一を送信するために0.1に設定します。メソッドのパラメータがtrueの場合、デフォルトメトリック名は、メソッドのクラス名ではなく、モジュール名に基づいています。 Falseにカウントを設定すると、Statsdに送信されたカウンタの統計情報を無効にします。 Falseにタイミングを設定すると、Statsdに送信されたタイミング統計が無効になります。
&NBSP;デコレータとしてのサンプル·ユース:
&NBSP; @Metric( 'frequent_func'、率= 0.1、タイミング=偽)
&NBSP; DEF frequent_func():
&NBSP; "" "頻繁に速い何かをして、" ""
&NBSP;コンテキストマネージャとしてのサンプルの使用:
&NBSP; DEF do_something():
&NBSP;メトリックと( 'doing_something'):
&NBSP;パス
とをタップ; perfmetricsが頻繁にパケットを送信した場合、UDPパケットが失われる可能性があり、アプリケーションのパフォーマンスが影響を受ける可能性がある。あなたはオプションの代わりに、メトリックまたはmetricmethodとメトリックデコレータを使用したパケットの数とCPUのオーバーヘッドを減らすことができます。デコレータの例では、上記のサンプル·レートと静的メトリック名を使用しています。また、タイミング情報の収集を無効にします。
&NBSP;コンテキストマネージャとしてメトリックを使用するときは、STATパラメータを提供しなければならないか、何も記録されません。
関数
statsd_client()
&NBSP;現在設定されているStatsdClientを返します。 1、またはなしがある場合に1、またはグローバルクライアントがある場合、スレッドローカルクライアントを返します。
set_statsd_client(client_or_uri)
&NBSP;グローバルStatsdClientを設定します。 // URI、またはNone:client_or_uriはStatsdClient、statsdことができます。
statsd_client_from_uri(URI)
&NBSP; URIからStatsdClientを作成します。典型的なURIがstatsdさ:// localhostを:8125。サポートされているオプションのクエリパラメータは、プレフィックスとgauge_suffixです。デフォルトのプレフィックスは空で、デフォルトのgauge_suffixがです.. gauge_suffixの詳細については、StatsdClientのマニュアルを参照してください。
StatsdClientメソッド
Pythonのコードは、最初statsd_client()メソッドを使用して現在のStatsdClientを取得することにより、カスタムメトリックを送信することができます。そのstatsd_clientに注意してください()は、クライアントが設定されていない場合、Noneを返します。
以下のメソッドのほとんどは、オプションのレートとBUFパラメータがあります。 1よりも小さい値に設定された速度パラメータは、StatsdClientパケットのランダムサンプルではなく、すべてのパケットを送信させる。 BUFパラメータがリストであれば、StatsdClientはBUFリストにパケットの内容を追加しのではなく、パケットを送信し、単一のパケットで複数の更新を送信することが可能となる。 UDPパケットのサイズが制限されています(制限がネットワークによって異なりますが、1000バイトは通常は良い​​推測です)と、余分なバイトは黙って無視されることに留意してください。
タイミング(なし=んBUF STAT、値、速度= 1、)
&NBSP;記録タイミング情報。 STATは、記録するメトリックの名前で、値はミリ秒単位でタイミング測定である。 Statsdのでメトリックがカウンタまたはゲージより多くのディスク領域を取ることができ、タイミング、各タイミングメトリックのためのいくつかのデータポイントを維持していることに注意してください。
ゲージ(STAT、値、Noneを=しないBUFサフィックス=なし、速度= 1、)
&NBSP;ゲージ値を更新します。 STATは、記録するメトリックの名前で、値は新しいゲージ値である。ゲージは、プールサイズなどの永続的な値を表す。異なるマシンからゲージがしばしば競合するので、サフィックスは通常名前を測定するために適用される。 suffixパラメータは(空の文字列を含む)の文字列である場合は、デフォルトのゲージの拡張子よりも優先されます。
INCR(なし=んBUF STAT、カウント= 1、レート= 1、)
&NBSP;回数カウンタをインクリメントします。 Statsdがすべてのカウンタ値が、通常10秒ごとに起こるもの、黒鉛にメトリックを送信するたびにクリアされますので注意してください。永続値が必要な場合は、カウンタの代わりにゲージを使用することがより適切であるかもしれない。
DECR(STAT、Noneを=しないBUF = 1、レート= 1、カウント)
&NBSP;カウントだけデクリメントカウンター。
sendbuf(BUF)
&NBSPは、StatsdにBUFリストの内容を送信

<強い>は、このリリースで新しいのは何ですかます:

  • は、オプションのピラミッドを追加しました。トゥイーンと要求ごとにStatsdクライアントを設定し同じようなWSGIフィルタアプリます。

の新しいのバージョン0.9.4で何をされます:

  • 減少したサンプル·レートの使用を最適化された

のどのバージョン0.9.2のの新しいです。

  • メトリックは今どちらデコレータとして使用することができますかコンテキストマネージャます。
  • は、よりジェームズSocolのStatsClientのようStatsdClientの署名を作られます。

の要件

  • のPythonます。

同じようなソフトウェア

Adagios
Adagios

17 Feb 15

Ortro
Ortro

14 Apr 15

Wmc2d
Wmc2d

11 May 15

imsniff
imsniff

3 Jun 15

開発者の他のソフトウェア Shane Hathaway

slowlog
slowlog

20 Feb 15

repoze.pgtextindex
repoze.pgtextindex

20 Feb 15

Yasso
Yasso

14 Apr 15

へのコメント perfmetrics

コメントが見つかりません
コメントを追加
画像をオンにする!