View a markdown version of this page

整合 Amazon MSK - Amazon CloudWatch

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

整合 Amazon MSK

使用 Amazon CloudWatch 受管 Prometheus 收集器,您可以自動從 Amazon MSK 叢集探索和收集Prometheus指標。當您在 Amazon MSK 叢集上啟用開放監控時,它會透過 Java Management Extensions (JMX) Exporter 和 Node Exporter 公開Prometheus指標。受管收集器會連線至您的 VPC,並使用 DNS 型服務探索從所有代理程式抓取這些指標,並將這些指標直接交付至 CloudWatch。透過此整合,您可以在 CloudWatch 中監控主機層級指標、JVM 層級指標和 Kafka 代理程式指標,而無需部署任何代理程式。

注意

當 Amazon CloudWatch 受管 Prometheus 收集器將您的 Amazon MSK 指標交付至 CloudWatch 時,它會自動使用識別其原始伺服器的屬性來充實每個指標。每個指標都攜帶收集器的檢測範圍、記錄 AWS 帳戶和區域的雲端屬性,以及收集器從指標名稱推斷的單位。當您使用 PromQL 查詢指標時,可以篩選和分組這些屬性。

先決條件

此程序假設熟悉 Amazon MSK 叢集管理和 Amazon VPC 聯網概念。

  • Amazon MSK 叢集處於佈建模式,具有標準或快速代理程式。受管收集器不支援 Amazon MSK Serverless。

  • 在叢集上啟用開啟監控。如需詳細資訊,請參閱《Amazon MSK 開發人員指南》中的使用 Prometheus 開啟監控

  • 不同可用區域中至少有兩個子網路

  • 安全群組允許收集器連接代理程式連接埠 11001 和 11002

步驟 1:啟用開放監控

在 Amazon MSK 叢集上啟用開放監控以公開Prometheus指標。如需啟用開放監控的指示,請參閱《Amazon MSK 開發人員指南》中的使用 Prometheus 開啟監控

aws kafka update-monitoring \ --cluster-arn "arn:aws:kafka:us-west-2:123456789012:cluster/my-cluster/abc123-def456" \ --current-version "K1A2B3C4D5" \ --open-monitoring '{ "Prometheus": { "JmxExporter": {"EnabledInBroker": true}, "NodeExporter": {"EnabledInBroker": true} } }'
注意

參數--open-monitoring只會公開連接埠 11001 和 11002 上的Prometheus端點。等增強型監控層PER_TOPIC_PER_PARTITION與 Open Monitoring 分開,可能會產生額外費用,因此只有在您需要該層級的 Amazon MSK 指標時,才能設定它們。

步驟 2:取得叢集的 DNS 名稱

Amazon MSK 提供叢集層級 DNS 名稱,可解析至所有代理程式 IPs。將此用於服務探索可讓您的監控對代理程式替換和叢集擴展具有彈性。

取得叢集 DNS 名稱 (移除代理程式特定的字首,例如 b-1.b-2.):

aws kafka get-bootstrap-brokers --cluster-arn "arn:aws:kafka:us-west-2:123456789012:cluster/my-cluster/abc123-def456"

例如,如果引導代理程式傳回 b-1.my-cluster.abc123.c4.kafka.us-west-2.amazonaws.com,請使用 my-cluster.abc123.c4.kafka.us-west-2.amazonaws.com做為叢集 DNS 名稱。

步驟 3:設定湊集組態

以下是 Amazon MSK 的抓取組態範例。在下一個步驟中建立抓取器時,您會參考此組態。如需組態選項的詳細資訊,請參閱 湊集器組態

global: scrape_interval: 60s external_labels: cluster_name: my-msk-cluster scrape_configs: - job_name: 'msk-jmx' dns_sd_configs: - names: - my-cluster.abc123.c4.kafka.us-west-2.amazonaws.com type: A port: 11001 relabel_configs: - source_labels: [__meta_dns_name] target_label: broker_dns - source_labels: [__address__] target_label: instance - target_label: compute_platform replacement: 'msk' - job_name: 'msk-node' dns_sd_configs: - names: - my-cluster.abc123.c4.kafka.us-west-2.amazonaws.com type: A port: 11002 relabel_configs: - source_labels: [__meta_dns_name] target_label: broker_dns - source_labels: [__address__] target_label: instance - target_label: compute_platform replacement: 'msk'

步驟 4:建立抓取器

使用上一個步驟中 Amazon MSK 代理程式的抓取組態,建立具有 CloudWatch 目的地的抓取器。

AWS API

使用 CreateScraper API 操作建立具有 CloudWatch 目的地的抓取器。將子網路、安全群組和資料集資訊取代為您自己的值。

POST /scrapers HTTP/1.1 { "alias": "msk-metrics-scraper", "source": { "vpcConfiguration": { "subnetIds": ["subnet-subnet-id-1", "subnet-subnet-id-2"], "securityGroupIds": ["sg-security-group-id"] } }, "destination": { "cloudWatchConfiguration": { "datasetArn": "arn:aws:cloudwatch:us-west-2:123456789012:dataset/default" } }, "scrapeConfiguration": { "configurationBlob": "base64-encoded-blob" } }
AWS CLI

使用 create-scraper命令建立具有 CloudWatch 目的地的抓取器。將子網路、安全群組和資料集資訊取代為您自己的值。

aws amp create-scraper \ --alias "msk-metrics-scraper" \ --source '{ "vpcConfiguration": { "subnetIds": ["subnet-subnet-id-1", "subnet-subnet-id-2"], "securityGroupIds": ["sg-security-group-id"] } }' \ --scrape-configuration configurationBlob=$(cat msk-config.yaml | base64 -w 0) \ --destination '{ "cloudWatchConfiguration": { "datasetArn": "arn:aws:cloudwatch:us-west-2:123456789012:dataset/default" } }'

可用的指標

  • JMX Exporter (連接埠 11001) — Kafka 代理程式內部,包括主題指標、分割區指標、請求率、消費者延遲和複寫不足的分割區。

  • Node Exporter (連接埠 11002) — 主機層級指標,包括 CPU、記憶體、磁碟 I/O 和網路輸送量。

如需可用指標的完整清單,請參閱《Amazon Managed Service for Prometheus 使用者指南》中的受管收集器收集的 MSK 指標

驗證指標集合

若要確認收集器同時交付 JMX 和 Node Exporter 指標,請使用 Query Studio 在 CloudWatch 中執行下列查詢。 https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-PromQL-QueryStudio.html如果每個查詢傳回資料點,收集器會成功抓取對應的匯出程式。

下列查詢會從 JMX Exporter (連接埠 11001) 傳回代理程式層級 Kafka 指標。它報告中介裝置主題活動的平均速率,例如流經中介裝置的訊息和位元組。資料點會確認收集器正在抓取 Kafka 代理程式指標。

kafka_server_BrokerTopicMetrics_MeanRate

下列查詢會從 Node Exporter (連接埠 11002) 傳回主機層級 CPU 使用率。它會從 100 減去五分鐘時段內的平均閒置 CPU 率,以提供代理程式使用的 CPU 百分比。資料點會確認收集器正在抓取主機層級指標。

100 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)

檢視自動儀表板

收集器開始將 Amazon MSK 指標交付至 CloudWatch 之後,CloudWatch 主控台會提供名為 MSK OTel 的自動儀表板。若要開啟它,請參閱 MSK OTel,或登入 AWS 管理主控台、開啟 CloudWatch 主控台、在導覽窗格中選擇儀表板、選擇自動儀表板,然後選擇 MSK OTel。您可以開始監控叢集,而無需自行建置任何小工具或儀表板。

如果自動儀表板符合您的需求,您可以正常使用它。若要建立量身打造的監控體驗,您可以將其任何小工具新增至自訂儀表板。如需自訂儀表板的詳細資訊,請參閱使用 CloudWatch 儀表板

跨帳戶可觀測性

對於跨帳戶 Amazon MSK 監控,我們建議您使用 Amazon CloudWatch 指標集中。如需詳細資訊,請參閱 CloudWatch 指標集中。

如需使用角色鏈結的替代跨帳戶湊集器組態,請參閱《Amazon Managed Service for Prometheus 使用者指南》中的跨帳戶 Amazon MSK 整合

目前的限制

  • 受管收集器不支援 Amazon MSK Serverless 叢集。

  • 受管收集器不支援結合 KRaft 中繼資料模式的公開存取。

  • 每個 Amazon MSK 叢集和 CloudWatch 資料集組合都需要一個收集器。