2017-05-24 7 views
0

とメトリックドロップを数えますメトリック。Datadogは、私はpythonでDatadogカウンタをインクリメントしています複数のコンテナ

コードはGoogle Cloudのコンテナエンジンのkubernetesノード上のドッカーコンテナで実行されます...各ノードで動作するドッカー-dd-agent(https://github.com/DataDog/docker-dd-agent)があります。

コンテナを任意のノードに移動することができ、毎分200回のリクエストをログに記録します。しかし、それをスケールアップして2番目のコンテナを起動するとすぐに、1分あたり約100件のリクエストしかログに記録されません。私は再び一つの容器にスケールダウンした場合、それは再び200回転にスパイク:

enter image description here

要求がドロップするか、他のポッドから上書きされ得るためには何を引き起こしているだろうか?

答えて

2

threadstatsの代わりにdogstatsdを使用してみませんか?あなたのコンテナが到達可能な方法でノード上で既にdd-agentを実行している場合は、代わりにdatadog.statsd.increment()メソッドを使用してstatsdを介してエージェントにメトリックを送信し、そこからdatadogアカウントに転送されます。

Dogstatsdは、デバッグレベルのロギングでは、より簡単で、トラブルシューティングがやや簡単であるという利点があります。 Threadstatsは時にはdd-agentを必要としないという利点がありますが、エラーロギングはほとんどありませんので、このようなケースのトラブルシューティングは困難です。

from datadog import initialize 
from datadog import statsd 
statsd.increment('api.request_count', tags=['environment:' + environment]) 

、そこからあなたは「率」タイプと「10」の間隔であなたのメトリックメタデータを見つけるだろう:あなたはdogstatsdルートを行った場合

は、次のコードを使用したいですまた、 "as_count"関数を使用して値をカウントに変換することもできます。

from datadog import api 
from datadog import initialize 
from datadog import statsd 
options = { 
    'api_key':'#######' 
} 

initialize(**options) 

そして、私はこのように初期化するために、それを変更すると、それはDD-で作業を開始し

api.Event.create(title=title, text=text, tags=tags) 

いくつかのイベントを送信:私はAPIキーで初期化されたPythonスクリプトで

+0

ありがとうございます。 statsdへの呼び出しは、dd-agentに行っていないようです。私はDD_APM_ENABLEDとLOG_LEVELを "DEBUG"に設定しましたが、どこが消えているのかわかりません。私は、必要であれば、展開で--link dogstatsd:dogstatsd引数を追加できませんでした。 – IAmCoder

+1

ああ、あなたのpythonコンテナのrunコマンドに '--link dogstatsd:dogstastd'引数を追加する必要があります。また、' -p 8125:8125/udp'を実行コマンドに追加する必要があるかもしれませんddエージェントのコンテナの私は参照のために、この文書を参照しています:https:// github。あなたのデーモンセットにこれを追加するとK8で考えています:https://gist.github.com/stephenlechner/04feda283916d6df2ffb2f8b5e20376d – stephenlechner

+0

ありがとう。ありがとうございました。 'args: --link dogstatsd:dogstatsd'の下に' --link dogstatsd:dogstastd'を追加すると、次のエラーが表示されます。 "docker ID 34225fd5a91fでコンテナを起動できませんでした。エラー:デーモンからのエラー応答: - リンクdogstatsd:dogstatsd 'が見つかりません、または存在しません。 Pythonコンテナの展開にコマンドを追加するにはどうすればよいですか? – IAmCoder

0

エージェント:

initialize(statsd_use_default_route=True) 

リンクコマンド(--link dogstatsd:dogstastd)は必要ありませんでした。

この設定では、ステージング環境では動作するようになりましたが、本番環境では動作しません。 :/

+0

いい仕事です!それはAPIを介してイベントを送信し、UDP通信を完全に排除します。非常に奇妙なのは、ステージングではなく、プロダクションでは機能しません。どこかに微妙な違いがあるはずです... – stephenlechner

関連する問題