我尝试使用 CloudWatch 代理和 JMX 将指标从 Kafka 和 Zookeeper 发送到 AWS CloudWatch。我已经为 Kafka 和 Zookeeper 配置了 JMX,并设置了 CloudWatch 代理配置文件。但是,我遇到了配置验证问题。
以下是我遵循的步骤:
为Kafka和Zookeeper配置JMX:
对于卡夫卡:
export KAFKA_OPTS="-Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.rmi.port=9999 -Dcom.sun.management.jmxremote.host=localhost -Djava.rmi.server.hostname=localhost -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false"
对于 Zookeeper,我使用默认端口 9998。
CloudWatch 代理配置文件: 这是我的 amazon-cloudwatch-agent.json 文件的内容:
{
"agent": {
"metrics_collection_interval": 60,
"region": "us-east-1"
},
"metrics": {
"namespace": "KZMetrics",
"metrics_collected": {
"jmx": {
"kafka": {
"jmx_endpoint": "localhost:9999",
"measurement": [
{
"name": "java.lang:type=OperatingSystem/SystemCpuLoad",
"alias": "Kafka_CPUUsage",
"unit": "Percent"
},
{
"name": "java.lang:type=Memory/HeapMemoryUsage",
"alias": "Kafka_MemoryUsage",
"unit": "Bytes"
}
],
"metrics_collection_interval": 60
}
}
}
}
}
启动 CloudWatch 代理的命令:
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c file:/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json
遇到错误:命令运行,但出现以下验证错误:
2024/08/25 08:10:45 E! Invalid Json input schema.
2024/08/25 08:10:45 E! Invalid Json input schema.
2024/08/25 08:10:45 Under path : /metrics/metrics_collected/jmx | Error : Must validate one and only one schema (oneOf)
2024/08/25 08:10:45 Under path : /metrics/metrics_collected/jmx | Error : Must validate at least one schema (anyOf)
2024/08/25 08:10:45 Under path : /metrics/metrics_collected/jmx | Error : jvm is required
2024/08/25 08:10:45 Under path : /metrics/metrics_collected/jmx | Error : endpoint is required
2024/08/25 08:10:45 Under path : /metrics/metrics_collected/jmx | Error : Additional property jmx_endpoint is not allowed
代理状态:
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a status
{
"status": "running",
"starttime": "2024-08-25T07:42:10+00:00",
"configstatus": "configured",
"version": "1.300043.0b781"
}
JSON 架构或参数似乎存在问题。我已经查看了文档,但我无法理解它或找到正确的细节。有人可以帮我查明配置可能存在的问题或提出解决方案吗?
提前致谢!
在 CloudWatch Agent 配置文件遇到 JSON 架构验证问题后,我转而使用collectd 将 Kafka 和 Zookeeper 指标发送到 AWS CloudWatch。我遵循了这篇 AWS 文章中的指导,该指南非常适合我的用例。