使用 Prometheus CloudWatch 匯出工具收集 AWS CloudWatch 指標

本文說明如何使用開放原始碼 Prometheus CloudWatch Exporter,以及在 Compute Engine 執行個體上執行的 Ops Agent,收集 AWS CloudWatch 指標並儲存在 Google Cloud 專案中。

本文適用於需要收集 AWS CloudWatch 指標的開發人員和系統管理員。本文說明如何設定 Prometheus CloudWatch Exporter,以收集 AWS CloudWatch 指標。

透過 Cloud Monitoring,您可以在與 Google Cloud 指標相同的環境中查看 AWS 指標。舉例來說,您可以建立含有圖表的資訊主頁,顯示 Amazon EC2 執行個體和 Compute Engine 執行個體的 CPU 使用率。您也可以建立快訊政策,監控 AWS 指標。詳情請參閱下列章節:

事前準備

如要使用 Prometheus CloudWatch Exporter 收集 AWS CloudWatch 指標,您需要下列項目:

  • 具有下列權限的 Google Cloud 專案:
    • 建立 VM
    • 將記錄檔寫入 Cloud Logging
    • 將指標寫入 Cloud Monitoring
  • 具有 AWS 憑證的 AWS 帳戶,Prometheus 匯出工具可使用這些憑證擷取指標。詳情請參閱執行 Prometheus 匯出工具

建立 Compute Engine VM

建議您建立 Linux Compute Engine VM,專門用於執行 Ops Agent 和 Prometheus CloudWatch 匯出工具。這個 VM 會做為所有 AWS 指標的收集站點。

  1. 如要在您指定的可用區中建立名為 aws-exporter-test 的 Debian Linux VM,請執行下列指令:

    gcloud compute instances create \
      --image-project debian-cloud \
      --image-family debian-11 \
      --zone ZONE \
      aws-exporter-test
    

    請按照下列方式設定指令:

    • ZONE 替換為新 VM 的區域
    • (選用步驟) 將 aws-exporter-test 替換為 VM 的其他名稱。

    如要進一步瞭解這個指令,請參閱 gcloud compute instances create 參考資料

  2. 如要存取 VM,以便安裝 Prometheus CloudWatch Exporter 和 Ops 代理程式,請使用下列指令:

    gcloud compute ssh --zone ZONE  --project PROJECT_ID  aws-exporter-test
    

    請按照下列方式設定指令:

    • ZONE 替換為建立 VM 時指定的目的地可用區。
    • PROJECT_ID 替換為 Google Cloud 專案 ID
    • 如果您建立 VM 時使用其他名稱,請替換 aws-exporter-test

    如要進一步瞭解這個指令,請參閱 gcloud compute ssh 參考資料

設定 Prometheus CloudWatch 匯出工具

以下各節說明如何在 Compute Engine VM 上下載、安裝及設定 Prometheus CloudWatch 匯出工具。

下載 Prometheus 匯出工具和 JRE

如要執行 Prometheus CloudWatch Exporter,請下載該 Exporter 和 Java Runtime Environment (JRE) 11 以上版本。

  1. 如要下載包含 Prometheus CloudWatch Exporter 的 JAR 檔案,請在 Compute Engine 執行個體上執行下列指令:

    curl -sSO https://github.com/prometheus/cloudwatch_exporter/releases/download/v0.15.1/cloudwatch_exporter-0.15.1-jar-with-dependencies.jar
    
  2. 如要安裝 JRE,可以使用類似以下的指令:

    sudo apt install default-jre
    

設定 Prometheus 匯出工具

如要設定 Prometheus CloudWatch Exporter,請為要收集指標的 AWS 服務建立設定檔。如需一般資訊,請參閱 Prometheus CloudWatch 匯出工具的設定說明文件

  • 遷移使用者:如果您要將現有的 AWS CloudWatch 指標遷移至 Prometheus CloudWatch Exporter,可以使用「Prometheus CloudWatch Exporter 遷移設定」中的設定檔。這些設定檔的設計目的是盡可能複製現有指標,但不會收集使用 Prometheus CloudWatch Exporter 取得的所有 AWS 服務指標。

  • 新使用者:如果您沒有要遷移現有指標,建議不要使用遷移設定。如要瞭解如何為其他服務定義匯出工具設定,請參閱 AWS CloudWatch 服務說明文件。您也可以在 Prometheus CloudWatch 匯出工具的 GitHub 存放區中找到其他範例。

您可以將多項 AWS 服務的設定合併到一個設定檔。本文中的範例假設設定檔名為 config.yml

執行 Prometheus 匯出工具

您必須先為 Prometheus CloudWatch 匯出工具提供憑證和授權,才能執行該工具。Prometheus CloudWatch Exporter 使用 AWS Java SDK,提供透過下列環境變數提供憑證的方法:

  • AWS_ACCESS_KEY
  • AWS_SECRET_ACCESS_KEY
  • AWS_SESSION_TOKEN,如果您使用臨時憑證

如要進一步瞭解如何向 SDK 提供憑證,請參閱 AWS SDK for Java 2.x

您也必須有權使用 CloudWatch API 擷取指標。您需要下列 AWS IAM CloudWatch 權限

  • cloudwatch:ListMetrics
  • cloudwatch:GetMetricStatistics
  • cloudwatch:GetMetricData

使用 aws_tag_select 功能也需要 tag:GetResources AWS IAM 權限。

如要進一步瞭解如何授權存取 AWS 服務,請參閱 AWS Identity and Access Management

如要執行 Prometheus CloudWatch Exporter,請按照下列步驟操作:

  1. 如要為匯出工具提供憑證,請設定存取金鑰環境變數:

    export AWS_ACCESS_KEY=YOUR_ACCESS_KEY
    export AWS_SECRET_ACCESS_KEY=YOUR_SECRET_ACCESS_KEY
    export AWS_SESSION_TOKEN=YOUR_SESSION_TOKEN
    

    YOUR_KEY 變數替換為存取金鑰。 只有在使用臨時憑證時,才需要設定 AWS_SESSION_TOKEN 環境變數。

  2. 如要測試設定,請啟動匯出工具並載入設定檔,然後執行下列指令:

    java -jar cloudwatch_exporter-0.15.1-jar-with-dependencies.jar 9106 config.yml
    

    視需要變更連接埠 (9106) 和設定檔 (config.yml) 值。

    如果在匯出工具執行期間修改 config.yml 檔案,可以執行下列指令重新載入匯出工具:

    curl -X POST localhost:9106/-/reload
    

    如要在實際工作環境中使用,您可以設定匯出工具,在 VM 重新啟動時重新啟動。舉例來說,在 Debian 系統上,您可以使用系統和服務管理員 systemd

設定作業套件代理程式

下列各節說明如何安裝、設定及啟動 Ops Agent。這些章節提供 Ops Agent 的最基本設定資訊,以搭配 Prometheus CloudWatch 匯出工具使用。如要進一步瞭解這些主題,請參閱「作業套件代理程式總覽」。

安裝作業套件代理程式

如要安裝作業代理程式,請使用下列指令下載並執行代理程式的安裝指令碼:

curl -sSO https://dl.google.com/cloudagents/add-google-cloud-ops-agent-repo.sh
sudo bash add-google-cloud-ops-agent-repo.sh --also-install

設定作業套件代理程式

如要設定 Ops Agent,請將設定元素新增至 Agent 的使用者設定檔。在 Linux 上,使用者設定檔為 /etc/google-cloud-ops-agent/config.yaml

將作業套件代理程式設為從 Prometheus CloudWatch Exporter 收集 AWS 指標時,您會使用代理程式的 Prometheus 接收器。本文將說明 Ops Agent 的兩種基本設定。選取其中一個設定,並新增至使用者設定檔:

sudo vim /etc/google-cloud-ops-agent/config.yaml

作業套件代理程式的基本設定

下列設定提供 Ops Agent 的最低設定。這項設定會執行下列動作:

  • 建立名為 aws 的接收器,類型為 prometheus。接收器已設定為從 aws_exporter 工作擷取指標。指定的通訊埠必須與 Prometheus CloudWatch 匯出工具匯出指標時使用的通訊埠相符;請參閱「執行 Prometheus 匯出工具」。

  • 建立名為 aws_pipeline 的管道,該管道使用 aws 指標接收器。

metrics:
  receivers:
    aws:
      type: prometheus
      config:
        scrape_configs:
          - job_name: 'aws_exporter'
            scrape_interval: 10s
            static_configs:
              - targets: ['localhost:9106']
  service:
    pipelines:
      aws_pipeline:
        receivers:
          - aws

會捨棄 JVM 指標的設定

下列設定會執行基本設定的所有作業,但也會新增重新標記設定,以捨棄匯出工具產生的 JVM 指標。捨棄這些指標會減少擷取的指標資料,但可能會導致匯出工具的問題更難偵錯,因為您無法取得匯出工具本身的指標:

metrics:
  receivers:
    aws:
      type: prometheus
      config:
        scrape_configs:
          - job_name: 'aws_exporter'
            scrape_interval: 10s
            static_configs:
              - targets: ['localhost:9106']
            # Drop the exporter's own JVM metrics to reduce noise.
            metric_relabel_configs:
              - source_labels: [ __name__ ]
                regex: 'jvm_.*'
                action: drop
  service:
    pipelines:
      aws_pipeline:
        receivers:
          - aws

您可以為作業套件代理程式建立更複雜的設定。

重新啟動作業套件代理程式

如要將設定變更套用至 Ops Agent,請重新啟動代理程式。

  1. 如要重新啟動代理程式,請在執行個體上執行下列指令:
    sudo service google-cloud-ops-agent restart
    
  2. 如要確定代理程式已重新啟動,請執行下列指令,並驗證「指標代理程式」和「Logging 代理程式」元件是否已啟動:
    sudo systemctl status google-cloud-ops-agent"*"
    

在 Cloud Monitoring 中查看指標

在 Cloud Monitoring 中,您可以查詢 AWS CloudWatch 指標,並建立圖表,就像處理任何其他指標一樣。在 Metrics Explorer 介面中,您可以使用 PromQL 或查詢產生器介面。詳情請參閱「使用 Metrics Explorer 建立圖表」一文。

如果您建立了想要保留的圖表,可以將其儲存至自訂資訊主頁。詳情請參閱「資訊主頁總覽」。

下圖顯示 AWS VM 的 aws_ec2_cpuutilization_sum 指標的 PromQL 查詢:

圖表顯示使用 PromQL 擷取 AWS VM 的 aws_ec2_cpuutilization_sum 統計資料結果。

如要進一步瞭解如何在 Cloud Monitoring 中使用 PromQL,請參閱「適用於 Cloud Monitoring 的 PromQL」。

指標行為的快訊

在 Cloud Monitoring 中,您可以建立快訊政策,監控 AWS CloudWatch 指標,並在指標值出現尖峰、低谷或趨勢時收到通知。

監控多個區域

Prometheus CloudWatch 匯出工具的設定檔僅支援一個區域。如要監控多個區域,建議您執行多個 Prometheus 匯出工具執行個體,並為要監控的每個區域各設定一個執行個體。您可以在單一 VM 上執行多個匯出工具,也可以將這些工具分散到多個 VM 上。在這種情況下,Prometheus 匯出工具 Docker 映像檔可能會有幫助。

您可以設定在 Compute Engine VM 上執行的作業套件代理程式,抓取多個 Prometheus 端點。建議您設定多個 Prometheus 匯出工具執行個體時,為每個執行個體使用不同的 job 名稱,以便在需要排解匯出工具執行個體問題時加以區分。

如要瞭解如何設定作業套件代理程式和 Prometheus 接收器,請參閱「設定作業套件代理程式」。

費用

Amazon 會針對您提出的每項 CloudWatch API 要求或 CloudWatch 指標收費;如需目前價格,請參閱 Amazon CloudWatch 定價。Prometheus CloudWatch Exporter 具有下列查詢特徵,可能會影響 Amazon 費用:

  • 使用 GetMetricStatistics 方法 (預設) 時,每個指標都需要一個 API 要求。每個要求可包含多項統計資料。
  • 使用 aws_dimensions 時,匯出工具必須執行 API 要求,判斷要要求哪些指標。與指標要求數量相比,維度要求數量通常微不足道。

Cloud Monitoring 會根據擷取的樣本數,針對 Prometheus Exporter 提供的 AWS CloudWatch 指標收費。如要查看目前定價,請參閱 Google Cloud Observability 定價頁面的 Cloud Monitoring 部分。

遷移用的 Prometheus CloudWatch Exporter 設定

本節提供的設定會盡可能複製 AWS 指標清單中記錄的 AWS 服務指標。這些設定檔適用於從舊版解決方案遷移至 Prometheus CloudWatch 匯出工具的客戶。如果您是新使用者,而非遷移使用者,且您使用這些設定來設定 Prometheus CloudWatch Exporter,則您不會收集 Prometheus CloudWatch Exporter 提供的所有 AWS 指標。

如要查看 AWS CloudWatch 指標的範例設定檔,請展開下列其中一個章節。