datadogでcassandraのintegrationを使った時にエラーが出たときの対応方法
datadogでcassandraのintegrationを使った時にエラーが出たときの対応方法
結論
max_returned_metrics=XXXXXX(任意の数値)
を設定することで取得出来る
どういう状態になったのか?
Cassandraが動いているGCEにDatadog agentをインストールした。
そして、以下の設定をansibleで設定しておいた。
vars:
datadog_config:
logs_enabled: true
datadog_checks:
cassandra:
init_config:
is_jmx: true
collect_default_metrics: true
instances:
- host: localhost
port: 7199
cassandra_aliasing: true
logs:
- type: file
path: /var/log/cassandra/*.log
source: cassandra
cassandra_nodetool:
init_config:
instances:
- keyspaces:
- "key-space-name"
しかし、datadogのUI上は No data received
と表示されていた。
※JavaのIntegrationも同じように No data received
と表示されていたけど、スクショ取り忘れた
Datadogのデフォルトのdashboard上でもいくつかのグラフが表示されずに歯抜けな状態となっていた。
そこで、 datadog-agent status
でステータスを確認してみたところ、以下になっていた。
========
JMXFetch
========
Initialized checks
==================
cassandra
instance_name : cassandra-localhost-7199
message : Number of returned metrics is too high for instance: cassandra-localhost-7199. Please read http://docs.datadoghq.com/integrations/java/ or get in touch with Datadog Support for more details. Truncating to 350 metrics.
metric_count : 350
service_check_count : 0
status : WARNING
Failed checks
=============
no checks
なぜそうなったか?
公式のドキュメントに以下が記載されている。
注: このチェックでは、インスタンスあたりのメトリクス数が 350 に制限されています。返されたメトリクスの数は、情報ページに表示されます。以下で説明する構成を編集することで、関心があるメトリクスを指定できます。収集するメトリクスをカスタマイズする方法については、JMX チェックのドキュメントで詳細な手順を参照してください。制限以上のメトリクスを監視する必要がある場合は、Datadog のサポートチームまでお問い合わせください。
メトリクスがデフォルトの350を超えた場合は、メトリクスを切り捨てられていたのだ。
Cassandraのドキュメントには記載が無いが、Prometheusのドキュメントには以下の記載がある。
このインテグレーションは性格上、極めて多くのカスタムメトリクスが Datadog に送信される可能性があります。構成の誤りや入力の変化があった場合に送信されるメトリクスの最大数をユーザーが制御できるように、このチェックには 2000 メトリクスというデフォルトの制限があります。必要な場合は、prometheus.d/conf.yaml ファイルで max_returned_metrics オプションを設定することで、この制限を増やすことができます。
対応方法
max_returned_metrics: XXXXXX
を追加した。
vars:
datadog_config:
logs_enabled: true
datadog_checks:
cassandra:
init_config:
is_jmx: true
collect_default_metrics: true
instances:
- host: localhost
port: 7199
cassandra_aliasing: true
max_returned_metrics: 100000 # ←を追加した
logs:
- type: file
path: /var/log/cassandra/*.log
source: cassandra
cassandra_nodetool:
init_config:
instances:
- keyspaces:
- "key-space-name"
問題点
datadog-agentのCPU使用率がかなり上がる。。。
そして、javaのdatadog-agentのメモリが足りなくてOOMで死にまくる。
最初は 350 -> 500 とか 500 -> 1000 とかやってても全然足りなかったみたいで、ガツンと引き上げたところ全てのメトリクスが取得できるようになった。
しかし、メトリクスが多いということはもちろんagentの負担も大きくなる。
やはり、正攻法としては、filterなどを用いて必要なメトリクスのみを収集するというところだろう。
最終的にこうなっていた
========
JMXFetch
========
Initialized checks
==================
cassandra
instance_name : cassandra-localhost-7199
message : <no value>
metric_count : 44950
service_check_count : 0
status : OK
Failed checks
=============
no checks
Author And Source
この問題について(datadogでcassandraのintegrationを使った時にエラーが出たときの対応方法), 我々は、より多くの情報をここで見つけました https://qiita.com/HirokiSakonju/items/4c2b7389b484a4e53bc8著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .