Prometheus 的开源监控系统 - Amazon Managed Streaming for Apache Kafka
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Prometheus 的开源监控系统

您可以使用 Prometheus 监控 MSK 集群,这是一种用于获取时间序列指标数据的开源监控系统。您还可以使用与 Prometheus 格式的指标兼容的工具或与 Amazon MSK Open Monitoring 集成的工具,例如 DatadogLensesNew RelicSumo logic。开源监控系统可免费使用,但跨可用区传输数据需要付费。有关 Prometheus 的信息,请参阅 Prometheus 文档

创建启用开源监控系统的 Amazon MSK 集群

使用 Amazon Web Services Management Console

  1. 登录到Amazon Web Services Management Console,然后在以下位置打开亚马逊 MSK 控制台https://console.aws.amazon.com/msk/home?region=us-east-1#/home/.

  2. Monitoring (监控) 部分中,选中 Enable open monitoring with Prometheus (启用 Prometheus 开源监控系统) 旁边的复选框。

  3. 在页面上的各部分中提供所需的信息,并查看所有可用的选项。

  4. 选择创建集群

使用 Amazon CLI

  • 调用 create-cluster 命令并指定其 open-monitoring 选项。启用 JmxExporterNodeExporter 或两者。如果指定了 open-monitoring,则不能同时禁用这两个导出器。

使用 API

  • 调用 CreateCluster 操作并指定 OpenMonitoring。启用 jmxExporternodeExporter 或两者。如果指定了 OpenMonitoring,则不能同时禁用这两个导出器。

为现有 Amazon MSK 集群启用开源监控系统

要启用开源监控系统,请确保集群处于 ACTIVE 状态。

使用 Amazon Web Services Management Console

  1. 登录到Amazon Web Services Management Console,然后在以下位置打开亚马逊 MSK 控制台https://console.aws.amazon.com/msk/home?region=us-east-1#/home/.

  2. 选择要更新的集群的名称。这会将您引导至该集群的 Details (详细信息) 页面。

  3. Details (详细信息) 选项卡上,向下滚动以找到 Monitoring (监控) 部分。

  4. 选择 Edit

  5. 选中 Enable open monitoring with Prometheus (启用 Prometheus 开源监控系统) 旁边的复选框。

  6. 选择保存更改

使用 Amazon CLI

  • 调用 update-monitoring 命令并指定其 open-monitoring 选项。启用 JmxExporterNodeExporter 或两者。如果指定了 open-monitoring,则不能同时禁用这两个导出器。

使用 API

  • 调用 UpdateMonitoring 操作并指定 OpenMonitoring。启用 jmxExporternodeExporter 或两者。如果指定了 OpenMonitoring,则不能同时禁用这两个导出器。

在 Amazon EC2 实例上设置 Prometheus 主机

  1. 从下载 Prometheus 服务器https://prometheus.io/download/#prometheus到您的 Amazon EC2 实例。

  2. 将下载的文件解压缩到某个目录并转到该目录。

  3. 使用以下内容创建名为 prometheus.yml 的文件。

    # file: prometheus.yml # my global config global: scrape_interval: 60s # A scrape configuration containing exactly one endpoint to scrape: # Here it's Prometheus itself. scrape_configs: # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config. - job_name: 'prometheus' static_configs: # 9090 is the prometheus server port - targets: ['localhost:9090'] - job_name: 'broker' file_sd_configs: - files: - 'targets.json'
  4. 使用 ListNodes 操作获取集群代理列表。

  5. 利用以下 JSON 创建名为 targets.json 的文件。将 broker_dns_1broker_dns_2 和其余代理 DNS 名称替换为您在上一步中获取的代理 DNS 名称。包括您在上一步中获得的所有代理。Amazon MSK 将端口 11001 用于 JMX Exporter,将端口 11002 用于 Node Exporter。

    [ { "labels": { "job": "jmx" }, "targets": [ "broker_dns_1:11001", "broker_dns_2:11001", . . . "broker_dns_N:11001" ] }, { "labels": { "job": "node" }, "targets": [ "broker_dns_1:11002", "broker_dns_2:11002", . . . "broker_dns_N:11002" ] } ]
  6. 要在 Amazon EC2 实例上启动 Prometheus 服务器,请在您解压缩 Prometheus 文件并保存的目录中运行以下命令。prometheus.ymltargets.json.

    ./prometheus
  7. 查找您在上一步中在其中运行 Prometheus 的 Amazon EC2 实例的 IPv4 公有 IP 地址。您在以下步骤中需要使用此公有 IP 地址。

  8. 要访问 Prometheus Web UI,请打开可以访问您的 Amazon EC2 实例的浏览器,然后转到Prometheus-Instance-Public-IP:9090,其中普罗米修斯-实例-公共 IP是您在上一步获取的公有 IP 地址。

Prometheus 指标

由 Apache Kafka 发送给 JMX 的所有指标都可通过 Prometheus 的开源监控系统访问。有关 Apache Kafka 指标的信息,请参阅 Apache Kafka 文档中的监控。除了 Apache Kafka 指标外,还可以在端口 11001 上使用 JMX MBean 名称提供消费者滞后指标kafka.consumer.group:type=ConsumerLagMetrics. 您也可以使用 Prometheus Node Exporter 在端口 11002 上获取代理的 CPU 和磁盘指标。