使用 JMX 和 CloudWatch 代理将 Kafka 和 Zookeeper 指标发送到 AWS CloudWatch 时出现问题

问题描述 投票:0回答:1

我尝试使用 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 架构或参数似乎存在问题。我已经查看了文档,但我无法理解它或找到正确的细节。有人可以帮我查明配置可能存在的问题或提出解决方案吗?

提前致谢!

amazon-web-services apache-kafka amazon-cloudwatch jmx
1个回答
1
投票

在 CloudWatch Agent 配置文件遇到 JSON 架构验证问题后,我转而使用collectd 将 Kafka 和 Zookeeper 指标发送到 AWS CloudWatch。我遵循了这篇 AWS 文章中的指导,该指南非常适合我的用例。

© www.soinside.com 2019 - 2024. All rights reserved.