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

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

Prometheus 的开源监控系统

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

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

使用Amazon Web Services Management Console
  1. 登录 Amazon Web Services Management Console 并通过以下网址打开 Amazon 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 并通过以下网址打开 Amazon MSK 控制台:https://console.aws.amazon.com/msk/home?region=us-east-1#/home/

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

  3. 属性选项卡上,向下滚动以找到监控部分。

  4. 选择编辑

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

  6. 选择 Save changes(保存更改)

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

使用 API
  • 调用该UpdateMonitoring操作并指定OpenMonitoring。启用 jmxExporternodeExporter 或两者。如果指定了 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: 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 对 JMX Exporter 使用端口 11001,对 Node Exporter 使用端口 11002。

    [ { "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,其中的 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 和磁盘指标。

将 Prometheus 指标存储在 Amazon Managed Service for Prometheus 中

Amazon Managed Service for Prometheus 是一项与 Prometheus 兼容的监控和警报服务,可用于监控 Amazon MSK 集群。这是一项完全托管的服务,可自动扩缩指标的提取、存储、查询和警报。这项服务还集成了 Amazon 安全服务,让您可以快速安全地访问数据。您可以使用开源 ProMQL 查询语言来查询指标并发出警报。

有关更多信息,请参阅开始使用 Amazon Managed Service Managed Service Prometheus