使用 Prometheus 進行開放式監控 - Amazon Managed Streaming for Apache Kafka

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

使用 Prometheus 進行開放式監控

您可以使用 Prometheus 監控MSK叢集,Prometheus 是一種開放原始碼監控系統,以取得時間序列指標資料。您可以使用 Prometheus 的遠端寫入功能,將此資料發布到適用 Amazon Managed Service for Prometheus。您還可以使用與 Prometheus 格式的指標或與 Amazon MSK 開放監控集成的工具兼容的工具,例如數據多,鏡頭遺物和 Sumo 邏輯。開放式監控提供免費使用,但是針對跨可用區域的資料傳輸則會產生費用。如需 Prometheus 的資訊,請參閱 Prometheus documentation

建立啟用開放式監控的 Amazon MSK 叢集

使用 AWS Management Console
  1. 登錄到 AWS Management Console,並在https://console.aws.amazon.com/msk/家裡打開 Amazon MSK 控制台? 區域 = us-east-1 #/ 家/.

  2. 監控區段中,選取使用 Prometheus 啟用開放式監控旁邊的核取方塊。

  3. 在頁面的所有區段內提供必要資訊,然後檢閱所有可用選項。

  4. 選擇建立叢集

使用 AWS CLI
  • 呼叫 create-cluster 命令,並指定其 open-monitoring 選項。啟用 JmxExporterNodeExporter,或同時啟用兩者。如果您指定 open-monitoring,則無法同時停用兩個匯出工具。

使用 API
  • 呼叫作CreateCluster業並指定OpenMonitoring。啟用 jmxExporternodeExporter,或同時啟用兩者。如果您指定 OpenMonitoring,則無法同時停用兩個匯出工具。

為現有 Amazon MSK 叢集啟用開放式監控

若要啟用開放式監視,請確定叢集處於 ACTIVE 狀態。

使用 AWS Management Console
  1. 登錄到 AWS Management Console,並在https://console.aws.amazon.com/msk/家裡打開 Amazon MSK 控制台? 區域 = us-east-1 #/ 家/.

  2. 選擇您要更新的叢集名稱。這會帶您前往包含叢集詳細資訊的頁面。

  3. 屬性標籤上,向下捲動並找到監控區段。

  4. 選擇編輯

  5. 選取使用 Prometheus 啟用開放式監控旁邊的核取方塊。

  6. 選擇 Save changes (儲存變更)。

使用 AWS CLI
  • 呼叫 update-monitoring 命令,並指定其 open-monitoring 選項。啟用 JmxExporterNodeExporter,或同時啟用兩者。如果您指定 open-monitoring,則無法同時停用兩個匯出工具。

使用 API
  • 呼叫作UpdateMonitoring業並指定OpenMonitoring。啟用 jmxExporternodeExporter,或同時啟用兩者。如果您指定 OpenMonitoring,則無法同時停用兩個匯出工具。

在 Amazon 執行個體上設定 Prometheus 主機 EC2

  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. 創建一個名為以下targets.json內容的文件JSON。Replace (取代) broker_dns_1, broker_dns_2,以及其餘經紀人DNS名稱以及您在上一步中為經紀人獲得的DNS名稱。包括您在上一個步驟中獲得的所有代理程式。Amazon MSK 使用端口 11001 作為JMX出口商,端口 11002 用於 Node Exporter。

    ZooKeeper mode targets.json
    [ { "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" ] } ]
    KRaft mode targets.json
    [ { "labels": { "job": "jmx" }, "targets": [ "broker_dns_1:11001", "broker_dns_2:11001", . . . "broker_dns_N:11001", "controller_dns_1:11001", "controller_dns_2:11001", "controller_dns_3:11001" ] }, { "labels": { "job": "node" }, "targets": [ "broker_dns_1:11002", "broker_dns_2:11002", . . . "broker_dns_N:11002" ] } ]
    注意

    要從KRaft控制器抓取JMX指標,請在JSON文件中添加控制器DNS名稱作為目標。例如:controller_dns_1:11001controller_dns_1以實際控制器DNS名稱取代。

  6. 若要在 Amazon EC2 執行個體上啟動 Prometheus 伺服器,請在擷取 Prometheus 檔案並儲存和的目錄中執行下列命令。prometheus.yml targets.json

    ./prometheus
  7. 在上一個步驟中,尋找您在其中EC2執行 Prometheus 的 Amazon 執行個體的IPv4公有 IP 地址。您在下一個步驟中需要此公有 IP 地址。

  8. 要訪問 Prometheus 網絡用戶界面,請打開一個可以訪問您的 Amazon EC2 實例的瀏覽器,然後轉到哪裡 Prometheus-Instance-Public-IP:9090 Prometheus-Instance-Public-IP 是您在上一步中獲得的公共 IP 地址。

Prometheus 指標

由 Apache 卡夫卡發出的所有指標JMX都可以使用開放式監控與 Prometheus 訪問。如需 Apache Kafka 指標的資訊,請參閱 Apache Kafka 文件中的 Monitoring。除了 Apache 卡夫卡指標外,消費者滯後指標也可在連接埠 11001 名稱下使用。JMX MBean kafka.consumer.group:type=ConsumerLagMetrics您也可以使用 Prometheus Node Exporter 獲取CPU和磁盤指標為您的代理端口 11002.

將 Prometheus 指標存放在 Amazon Managed Service for Prometheus

適用於 Prometheus 的 Amazon 受管服務是與普羅米修斯相容的監控和警示服務,可用來監控 Amazon 叢集。MSK這是一項全受管服務,既可自動擴展指標的擷取、儲存、查詢和提醒,它還與 AWS 安全服務集成,為您提供快速安全的數據訪問。您可以使用開放原始碼 PromQL 查詢語言來查詢指標並根據指標發出提醒。

如需詳細資訊,請參閱《Amazon Managed Service for Prometheus 入門》。