当使用DataDog的Cassandra集成时遇到错误的解决方法
当在使用Datadog的Cassandra集成时遇到错误时,应采取的应对方法是什么?
結果
通过设置max_returned_metrics=XXXXXX(任意数值),可以获取到相应的指标。
变成了什么样的情况?
我在正在运行的GCE上安装了Datadog agent,Cassandra。
并且,我已经使用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-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选项来增加此限制。
应对方式 (duì shì)
添加了最大返回度量指标: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的负担增加了。
毫无疑问,作为正统的方法,最好是使用筛选器等工具仅收集所需的指标。
最终最后就是这样了
========
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