問題タブ [statsd]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
graphite - Statsdsendメソッド
誰かがsampleRateチェックと乱数の目的がSendメソッド(たとえばc#サンプル)で何であるかを知っていますか?
else部分のコードのみを呼び出すようです-統計をループして送信します
metrics - グラファイト: holtWintersConfidenceBands を長期間 (正確性のために) 使用するが、最後の x 分のデータポイントを取得する
holtWintersConfidenceBands を長期間にわたって実行する方法はありますが、最後の x 分のデータポイントのみを取得する方法はありますか? 例: 過去 30 日間に holtWintersConfidenceBands 関数を実行したいが、過去 30 分間の結果のみを取得したい。
もちろん、クライアントでフィルタリングを行うことはできますが、Graphite サーバー自体を介してそれを実現する方法はありますか?
graphite - グラファイトカウンターの変換
私はpython statsd clientincr
の関数を使用しています。私が送信している名前のキーはグラファイトに登録されていますが、グラフ上では平らな線として表示されます。時間の経過に伴う増加率を取得するには、どのフィルターまたは変換を適用する必要がありますか? と を試しましたが、まだ成功していません。apply function > transform > integral
apply function > special > aggregate by sum
graphite - Statsd + Graphie 、低頻度イベントを表示
標準のGraphite + Statsdスタックを使用しています。10 秒の statsD 間隔 + 10 秒のグラファイト保持スキーマ。
1 日に 1,000 ~ 10,000 回発生するイベントがいくつかあります。また、それらをグラフで表示したいと思います。しかし、グラフは平坦すぎます (statsD の 24 時間範囲には 8640 スロットがあります)。events/min や events/5min などのイベントを測定するグラフを表示したいと思います。現在のデフォルトは events / 10s です。デフォルトの statsd 間隔と保持スキーマをグラファイトで変更しなくても可能ですか。
ありがとう
linux - statsd の現在の時刻が 2 時間先になっています。修正方法は?
グラファイトで statsd データを見ると、グラフは現在の時刻が 2 時間先であることを示しています。たとえば、グラファイトを午前 9 時に見ている場合、グラフは午前 11 時であることを示しています。データは正常に並んでいます。午前 9 時に 99 のイベントがあった場合、グラフには午前 11 時に 99 のイベントが表示されます。
statsd を実行しているホストのクロックは正しく、statsd プロセスの停止と開始を試みました。それを修正するためにどこを探すべきかについての他の提案はありますか?
java - Java/grails プロジェクトにはどの StatsD クライアントを使用すればよいですか?
grails アプリケーションに StatsD データ コレクションを追加することを考えていて、既存のライブラリとコードを調べていると、スケーラブルな優れたソリューションとは何かについて少し混乱しています。質問を少し文脈に入れるために、私はオンラインゲームタイプのプロジェクトに取り組んでおり、ゲームエンジンとのユーザーのやり取りを自然に監視します。これらは、Xユーザーがウィンドウ内でやり取りを行う特定の瞬間に自然にクラスター化されます1 ~ 2 秒、10 ~ 20 秒の一時停止後に繰り返します。
これが、今日利用可能なオプションの私の分析です。
Etsy StatsD クライアントの例
https://github.com/etsy/statsd/blob/master/examples/StatsdClient.java
「おそらく機能する可能性がある最も単純なもの」の解決策として、このクラスをプロジェクトに取り込み、シングルトン インスタンスを Spring Bean としてインスタンス化し、それを直接使用することができました。しかし、grails-statsd プラグインがクライアント インスタンスのプールを作成することに気付いた後、このアプローチのスケーラビリティについて疑問に思うようになりました。
多くのスレッドが同時にイベントを送信しようとすると、doSend
メソッドがボトルネックになる可能性があるようですが、私が理解しているように、UDP パケットを送信することの発火と忘却の性質により、これは迅速に発生し、巨大なオーバーヘッドを回避する必要があります。私たちは通常、ネットワーク接続に関連付けます。
grails-statsd プラグイン
https://github.com/charliek/grails-statsd/
withTimer
注釈やメソッドなどの優れた機能を含む grails 用の StatsD プラグインを作成した人がいます。ただし、 への呼び出しでロケールを指定するなど、サンプル実装からのいくつかのバグ修正が実装に欠けていることがわかりますString.format
。また、標準の Executor が同様の効果を達成できる場合、このためだけに apache commons-pool を引き込むこともあまり好きではありません。
java-statsd-クライアント
https://github.com/tim-group/java-statsd-client/
これは、独自の ExecutorService を維持することで非同期に動作する代替の純粋な Java ライブラリです。セットとサンプリングを含む StatsD API 全体をサポートしますが、スレッド プールとキュー サイズを構成するためのフックは提供しません。問題が発生した場合、監視などの重要ではないことについては、ヒープをいっぱいにする無限のキューを持つよりも、有限のキューと失われたイベントを好むと思います。
statsd プラグインを再生する
https://github.com/vznet/play-statsd/
現在、このコードを自分の grails プロジェクトで直接使用することはできませんが、どのように実装されているかを確認する価値はあると思いました。StatsdClient.scala
一般的に、コードが非常にクリーンで読みやすいように構築されている方法が気に入っています。また、ロケールのバグがあるようですが、それ以外の機能は etsy サンプルで完全です。興味深いことに、私が理解していない scala マジックがない限り、StatsD に送信されるデータ ポイントごとに新しいソケットが作成されるようです。このアプローチはオブジェクト プールやエグゼキュータ スレッドの必要性を適切に回避しますが、非常に効率的であるとは思えません。可能な限り早くユーザーに返される要求スレッド内で DNS ルックアップを実行する可能性があります。
質問
- 他のすべての実装が並行性を処理するための別の戦略を実装しているように見えるという事実から判断すると、Etsy の例は本番環境で使用するには少し単純すぎると思いますか?
- ここでの私の分析は正しいように見えますか?
- java/groovy の statsd に他の人は何を使用していますか?
これまでのところ、commons-pool の依存関係を受け入れることができる限り、既存の最良のソリューションは grails プラグインのように見えますが、現在、日曜日に各実装の最良の部分を組み合わせた独自のバージョンを作成することを真剣に考えています。
graphite - Graphite と statsd でノードごとに 1 つのグラフを作成する
私は statsd でグラファイトを使用して、ec2 でクラスター化したアプリケーションからさまざまなデータを収集しています。とりわけ、アプリケーションによって配信されたメッセージと配信に失敗したメッセージの統計があります。私のアプリケーションのメッセージのコンシューマの数はいくぶん流動的 (数日ごとに変化) であるため、コンシューマごとにこれら 2 つの統計のグラフを動的に生成できるようにしたいと考えています。統計の一部としてシステムによって生成されたコンシューマー ID を使用して、メッセージを statsd/graphite に投稿します。
stats.myapp.consumers.<consumerId>.messagesDelivered
stats.myapp.consumers.<consumerId>.messagesFailed
現在、consumerId にワイルドカードを使用して 2 つのグラフを生成しています。
stats.myapp.consumers.*.messagesDelivered
stats.myapp.consumers.*.messagesFailed
これは少数の消費者にとっては問題ありませんが、私は現在 300 を超えており、急速に成長しています。私ができるようにしたいのは、上記のターゲット (または同様のもの) を渡し、グラファイトに一意の ID ごとにグラフを返させることです。(私はグラフと言っていますが、実際には json の結果を取得しています) 私は現在、キリン ダッシュボードの個人的に変更されたバージョンを使用していますが、他の提案も受け付けています。
これは可能なことですか?(カスタム コードを記述して、各 ID を取得し、毎回それぞれの要求を生成できると思います。しかし、可能であれば、カスタマイズを最小限に抑えたいと思っています。)
詳細を提供する必要がある可能性が高いと確信しています。あなたが知る必要があること、または私が私の要求に基づいていない可能性があるかどうかを教えてください.
詳細:
したがって、私が望んでいることの最終結果は、より適切な用語がないため、それぞれがノードを表す 300 行の 1 つのグラフを持たないことです。ノードごとに 1 つのグラフがあり、それぞれに 2 本の線があるとします。1 つは配信されたメッセージ用で、もう 1 つは失敗したメッセージ用です。
@Matt Self からの解決策を試みたとき、300 行の 1 つのグラフになりました。(または、提案を誤解したのでしょうか?)
configuration - statsd とグラファイトを使用して累積カウント グラフを取得するにはどうすればよいですか?
バックエンドとしてグラファイト (0.9.10) を使用して statsd (git master ブランチの最新バージョン) を使用しています。
私の(Django)コードではstatsd.incr("signups")
、ユーザーがサインアップしたときに呼び出します。Graphite の Web インターフェースで、Graphite/stats/signups の下に 1 秒あたりのサインアップ数を示す美しいグラフが表示されるようになりました。Graphite/stats_counts/signups の下のグラフを見ると、サインアップの合計数が表示されると思いますが、10 秒間隔 (statsd の更新間隔だと思います) ごとのサインアップ数のようです。
私はconfigureしstorage-aggregation.conf
ましたが、おそらく何か間違っていましたか?また、カーボンを停止しました(stop
ではありませんが、停止するだけでは構成をリロードできないため、実際に停止しました)。/opt/graphite/storage/whisper/stats_counts
ディレクトリも削除しました。次に、カーボンデーモンを再起動しました。10 秒間隔ごとのサインアップ数は引き続き取得できます。:-(
これが私の構成です:
この:
私はすべてを正しく行い、Graphite は本来あるべきことを実際に行っていると思い始めています。質問は次のとおりです。
開始以来のサインアップの総数を引き出すように statsd とグラファイトを構成する適切な方法は何ですか?
Django コードを変更して、たまにユーザーの総数をカウントし、gauge
代わりに を使用するincr
こともできると思いますが、グラファイトは、受信したものをその場で合計するだけでなく、その場で合計できるようにする必要があるように感じます。データを集計するときだけです。
編集:
Graphite の Web インターフェースを使用して、Graphite コンポーザーで、integral
関数を基本的な「1 秒あたりのサインアップ」グラフ (Graphite/stats/signups 内) に適用し、目的のグラフ (つまり、サインアップの総数) を取得しました。これは累積グラフを取得する適切な方法ですか? 最初から完全な日付範囲を選択する必要があり、グラフにズームインできないか、ズームされた部分の積分を取得するだけなので、面倒です。:-(