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

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

Prometheus 的开源监控系统

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

在启用开源监控系统的情况下创建 Amazon MSK 集群

使用 AWS 管理控制台

  1. 登录到 AWS 管理控制台 并通过以下网址打开 Amazon MSK 控制台:https://console.amazonaws.cn/msk/home?region=us-east-1#/home/

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

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

  4. 选择 Create cluster.

使用 AWS CLI

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

使用 API

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

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

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

使用 AWS 管理控制台

  1. 登录到 AWS 管理控制台 并通过以下网址打开 Amazon MSK 控制台:https://console.amazonaws.cn/msk/home?region=us-east-1#/home/

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

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

  4. 选择 Edit.

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

  6. 选择 Save changes.

使用 AWS CLI

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

使用 API

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

在 Amazon EC2 实例上设置 Prometheus 主机

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

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

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

    # file: prometheus.yml # my global config global: scrape_interval: 10s # 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 的文件。Replace broker_dns_1, broker_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 的 IPv4 实例的 Amazon EC2 公有 IP 地址。您在以下步骤中需要使用此公有 IP 地址。

  8. 要访问 Prometheus Web UI,请打开可以访问您的 Amazon EC2 实例的浏览器,然后转到 Prometheus-Instance-Public-IP:9090,其中 Prometheus-Instance-Public-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 和磁盘指标。