透過適用於 Prometheus 的 Amazon 受管服務使用分攤成本分配資料 - AWS 資料匯出

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

透過適用於 Prometheus 的 Amazon 受管服務使用分攤成本分配資料

分割 Amazon EKS 的成本資料需要從叢集收集和存放指標,包括記憶體和 CPU 使用量。Amazon Prometheus 託管服務可用於此目的。

選擇分割成本分配資料後,Prometheus 適用的 Amazon 受管服務工作區開始接收兩個必要的指標 (container_cpu_usage_seconds_totalcontainer_memory_working_set_bytes),然後分割成本分配資料就會識別並自動使用這些指標。

注意

預設 Prometheus 抓取設定中會出現兩個必要度量 (container_cpu_usage_seconds_totalcontainer_memory_working_set_bytes),以及受管理的收集器提供的預設組態。 AWS 但是,如果您自訂這些組態,請勿重新標示、修改或移除container_cpu_usage_seconds_totalcontainer_memory_working_set_bytes測量結果中的下列標籤:namenamespace、和pod。如果您重新標示、修改或移除這些標籤,可能會影響指標的擷取。

您可以使用適用於 Prometheus 的 Amazon 受管服務,從單一區域的單一用量帳戶收集 EKS 指標。適用於 Prometheus 的 Amazon 受管服務工作區必須位於該帳戶和區域中。針對每個要監控成本的用量帳戶和區域,您需要針對 Prometheus 執行個體提供一個 Amazon 受管服務。您可以在適用於 Prometheus 的 Amazon 受管服務工作區中收集多個叢集的指標,只要它們位於相同的用量帳戶和區域中即可。

以下各節說明如何將正確的指標從 EKS 叢集傳送到適用於 Prometheus 的 Amazon 受管服務工作區。

必要條件

針對具有分割成本分配資料的 Prometheus 使用 Amazon 受管服務的先決條件:

  • 您必須在 AWS 帳單與成本管理主控台中啟用分割成本分攤資料。如需詳細資訊,請參閱啟用分割成本配置資料。選擇分割成本分配資料會在每個使用帳戶中建立一個服務連結角色,以查詢適用於 Prometheus 的 Amazon EKS 叢集指標的 Amazon 受管服務,以取得該帳戶中的 Amazon EKS 叢集指標。如需詳細資訊,請參閱分割成本配置資料的服務連結角色

  • 您需要一個要追蹤分割成本配置資料的 EKS 叢集。這可以是現有的叢集,也可以建立新叢集。如需詳細資訊,請參閱 Amazon EKS 使用者指南中的建立 Amazon EKS 叢集

    注意

    您將需要EKS cluster ARNsecurity group IDs、和至少兩個 subnet IDs (在不同的可用區域中),以便在後面的步驟中使用。

    (選擇性) 將 EKS 叢集的驗證模式設定為APIAPI_AND_CONFIG_MAP

  • 您需要在與 EKS 叢集相同的帳戶和區域中為 Prometheus 執行個體提供 Amazon 受管服務。如果您還沒有,可以建立一個。如需為 Prometheus 執行個體建立 Amazon 受管服務的詳細資訊,請參閱在適用於 Prometheus 的 Amazon 受管服務使用者指南中建立工作區

    注意

    您將需要在以後Amazon Managed Service for Prometheus workspace ARN的步驟中使用。

將 EKS 指標轉寄至適用於 Prometheus 的 Amazon 受管服務

一旦您擁有 EKS 叢集和適用於 Prometheus 執行個體的 Amazon 受管服務,就可以將指標從叢集轉送到執行個體。您可以透過兩種方式傳送量度。

選項 1:使用 AWS 受管理的收集器

使用 AWS 受管收集器 (抓取工具) 是將指標從 EKS 叢集傳送至 Prometheus 執行個體的 Amazon 受管服務的最簡單方式。下列程序會逐步引導您建立 AWS 受管理的收集器。如需詳細資訊,請參閱 Amazon Prometheus AWS 受管服務使用者指南中的受管收集器

注意

AWS 受管理的收集器的最小抓取間隔為 30 秒。如果您的 Pod 壽命短,建議您將抓取器間隔設定為 15 秒。要使用 15 秒的抓取間隔時間,請使用選項 2 創建您自己的 Promethe us 代理。

建立 AWS 受管理的收集器有三個步驟:

  1. 創建抓取器配置。

  2. 創建刮刀。

  3. 配置您的 EKS 集群以允許抓取工具訪問指標。

步驟 1:創建抓取器配置

為了創建刮板,您必須具有抓取器配置。您可以使用預設組態,也可以建立自己的組態。以下是獲取刮板配置的三種方法:

  • 使用 AWS CLI 取得預設組態,方法是呼叫:

    aws amp get-default-scraper-configuration
  • 建立您自己的組態。有關詳細信息,請參閱 Amazon Prometheus 受管服務用戶指南中的抓取器配置說明。

  • 複製 Amazon Prometheus 受管服務使用者指南中相同的 S craper 設定說明中提供的範例組態。

例如,您可以編輯抓取器配置,以修改抓取間隔或過濾抓取的指標。

要過濾抓取的指標以僅包含拆分成本分配數據所需的兩個指標,請使用以下抓取器配置:

scrape_configs: - bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token job_name: kubernetes-nodes-cadvisor scrape_interval: 30s scrape_timeout: 10s kubernetes_sd_configs: - role: node relabel_configs: - regex: (.+) replacement: /api/v1/nodes/$1/proxy/metrics/cadvisor source_labels: - __meta_kubernetes_node_name target_label: __metrics_path__ - replacement: kubernetes.default.svc:443 target_label: __address__ metric_relabel_configs: - source_labels: [__name__] regex: 'container_cpu_usage_seconds_total|container_memory_working_set_bytes' action: keep

獲得抓取器配置後,必須對其進行 base64 編碼以便在步驟 2 中使用。設定是文字 YAML 檔案。要對文件進行編碼,請使用 https://www.base64encode.org/ 之類的網站。

步驟 2:創建刮板

現在您有了配置文件,則需要創建抓取工具。根據先決條件部分中概述的變量,使用以下 AWS CLI 命令創建抓取工具。您必須將 EKS 叢集中的資訊用於、<EKS-CLUSTER-ARN><SG-SECURITY-GROUP-ID>和<SUBNET-ID>欄位 ,取代為<BASE64-CONFIGURATION-BLOB>您在上一步中建立的抓取工具組態,並取代<AMP_WORKSPACE_ARN>為 Prometheus 工作區 ARN 的 Amazon 受管服務。

aws amp create-scraper \ --source eksConfiguration="{clusterArn=<EKS-CLUSTER-ARN>,securityGroupIds=[<SG-SECURITY-GROUP-ID>],subnetIds=[<SUBNET-ID>]}" \ --scrape-configuration configurationBlob=<BASE64-CONFIGURATION-BLOB> \ --destination ampConfiguration={workspaceArn="<AMP_WORKSPACE_ARN>"}

記下scraperId步驟 3 中返回的使用。

步驟 3:配置您的 EKS 集群以允許抓取工具訪問指標

如果您的 EKS 群集的身份驗證模式設置為APIAPI_AND_CONFIG_MAP,那麼您的抓取器將自動具有正確的集群內訪問策略,並且抓取器將可以訪問您的集群。不需要進一步的組態,而且指標應該會傳送至 Prometheus 的 Amazon 受管服務。

如果您的 EKS 叢集的驗證模式未設定為APIAPI_AND_CONFIG_MAP,您將需要手動配置叢集,以允許抓取工具透過 ClusterRole和 ClusterRoleBinding存取您的指標。若要了解如何啟用這些許可,請參閱《適用於 Prometheus 的 Amazon 受管服務使用者指南》中的手動設定 EKS 叢集以進行抓取存取

選項 2:創建自己的 Prometheus 代理

如果您無法使用 AWS 受管收集器,或已經擁有自己的 Prometheus 伺服器,則可以使用自己的 Prometheus 執行個體做為代理程式,從 EKS 叢集擷取指標,然後將指標傳送至 Prometheus 的 Amazon 受管服務。

如需如何使用您自己的 Prometheus 執行個體作為代理程式的詳細指示,請參閱 Amazon Prometheus 受管服務使用者指南中的使用 Prometheus 執行個體做為收集器

以下是 Prometheus 抓取配置示例,其中包括 Prometheus 服務器抓取間隔以及拆分成本分配數據所需的容器指標。如果您有短暫的網繭,建議您將預設 Prometheus 伺服器抓取間隔從 30 秒降低為 15 秒。請注意,這可能會導致 Prometheus 伺服器記憶體使用率過高。

scrape_configs: - bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token job_name: kubernetes-nodes-cadvisor scrape_interval: 30s scrape_timeout: 10s kubernetes_sd_configs: - role: node relabel_configs: - regex: (.+) replacement: /api/v1/nodes/$1/proxy/metrics/cadvisor source_labels: - __meta_kubernetes_node_name target_label: __metrics_path__ - replacement: kubernetes.default.svc:443 target_label: __address__ metric_relabel_configs: - source_labels: [__name__] regex: 'container_cpu_usage_seconds_total|container_memory_working_set_bytes' action: keep

如果您遵循使用 Amazon Prometheus 受管服務使用者指南中的 Helm 從新的 Prometheus 伺服器設定擷取,則可以更新抓取組態

更新您的抓取配置
  1. my_prometheus_values_yaml從指南中進行編輯,並在server塊中包含示例抓取配置。

  2. 使用 Amazon Prometheus 受管服務使用prometheus-chart-name者指南執行下列命令。prometheus-namespace

helm upgrade prometheus-chart-name prometheus-community/prometheus -n prometheus-namespace -f my_prometheus_values_yaml

要了解有關scrape_interval或如何使用非全局刮擦間隔的更多信息,請參閱 Prometheus 抓取配置。

或者,您可以使用具有 Prometheus 接收 OpenTelemetry 器,Prometheus 遠端寫入導出器和 AWS Sigv4 身份驗證擴展的收集器的發行 AWS 版,以實現對 Prometheus Amazon 託管服務的遠端寫入訪問。

注意

設定 Prometheus 代理程式後,與 AWS 受管理的收集器不同,您必須負責讓代理程式保持最新狀態,並執行以收集指標。

估算您的 Amazon 託管服務以獲得 Prometheus 的成本

您可以使用 AWS 定價計算器估算使用適用於 Prometheus 的 Amazon 受管服務來分割成本分配資料的成本。

為您的估算配置 Prometheus 的 Amazon 託管服務
  1. 打開 AWS 定價計算器在 https://calculator.aws/#/

  2. 選擇 Create estimate (建立估計)

  3. 在 [新增服務] 頁面上,在搜尋欄位中輸入 Prometheus 的 Amazon 受管服務,然後選擇 [設定]。

  4. 在「描述」欄位中,輸入估計值的說明。

  5. 選擇一個區域

  6. 選取 [使用基礎結構詳細資料計算成本]。此選項可讓您根據目前或提議的基礎架構設定,估算擷取、儲存和查詢範例成本。

  7. EC2 執行個體數量中,輸入整個合併帳單系列 (包括所有帳戶和區域) 中所有叢集的 EC2 執行個體總數。如果您使用 AWS Fargate,請使用 Fargate 任務的數量作為 EC2 執行個體計數的代理。

  8. 分割成本配置資料需要兩個指標:container_cpu_usage_seconds_totalcontainer_memory_working_set_bytes。對於每個 EC2 執行個體的 Prometheus 指標,請輸入 2。

  9. 拆分成本分配數據表明抓取間隔為 15 秒。針對測量結果收集間隔 (秒),輸入 15。如果您使用不同的間隔 (例如 30 秒),請將其變更為您設定的間隔。

  10. 分割成本配置資料不會對其他參數施加任何特定需求,因此請根據您的業務需求,為其餘的輸入參數輸入適當的值。

  11. 選擇 [儲存並新增服務]。