kube-collocated-pod-proxyの代わりに以下のようなsidecar containerをつけることで、メトリクスにnamespaceをタグ付してDatadogに送れるようになりました(たぶん
https://github.com/mumoshu/kube-veneur/blob/master/local-veneur.yaml#L19-L60
kube-collocated-pod-proxy
NginxによるUDPロードバランサのDaemonSetです。
Datadogエージェントをホスト毎に起動しつつ、Kubernetesの各Podから「いまこのPodがいるホストのDatadogエージェントに到達したい」という要件を満たすために開発しました。
veneur
Stripe社で開発されたOSSで、Go言語で書かれたDogStatsDの代替です。
https://stripe.com/blog/introducing-veneur-high-performance-and-global-aggregation-for-datadog
速度と、分散デプロイしたときに本家とは違って99percentileメトリクスが正しく取れる、というのが売りらしいです。これならcollocated-pod-proxyの代用として使ってもそんなにリソースが無駄にならない・・と期待。
使い方
メトリクスによって、
1.sidecar containerから直接datadogに送ったり(そのためにAPIキーが必要っぽい?namespaceがタグ付けされる)、
2.global/central veneurを経由してからdatadogに送ったり(こうすると本家dogstatsdと違って、percentileがちゃんと計測できるらしい)、
3.同じホストのdogstatsd経由でdatadogに送ったり(今まで通り+namespaceがタグ付けされる)
と、送り方が変わる感じになってます。
設定:
VENUE_KEY環境変数にDatadogのAPIキーが必要です
https://github.com/mumoshu/kube-veneur/blob/master/local-veneur.yaml#L33
VENEUR_FORWARD_ADDRESSはglobal/central veneurのホスト名+ポートです
VENEUR_DEBUGは動作確認できたら基本falseがよいです(ログが増えるので
一応、global/central veneurは以下にあります
https://github.com/mumoshu/kube-veneur/blob/master/global-veneur.yaml
が動作確認はまだです!とりあえず、percentileメトリクスを送らないと使われない模様なので必須ではないです。