本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
透過適用於 Prometheus 的 Amazon 受管服務使用分攤成本分配資料
分割 Amazon EKS 的成本資料需要從叢集收集和存放指標,包括記憶體和 CPU 使用量。Amazon Prometheus 託管服務可用於此目的。
選擇分割成本分配資料後,Prometheus 適用的 Amazon 受管服務工作區開始接收兩個必要的指標 (container_cpu_usage_seconds_total
和container_memory_working_set_bytes
),然後分割成本分配資料就會識別並自動使用這些指標。
注意
預設 Prometheus 抓取設定中會出現兩個必要度量 (container_cpu_usage_seconds_total
和container_memory_working_set_bytes
),以及受管理的收集器提供的預設組態。 AWS 但是,如果您自訂這些組態,請勿重新標示、修改或移除container_cpu_usage_seconds_total
和container_memory_working_set_bytes
測量結果中的下列標籤:name
namespace
、和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 ARN
security group IDs
、和至少兩個subnet IDs
(在不同的可用區域中),以便在後面的步驟中使用。(選擇性) 將 EKS 叢集的驗證模式設定為
API
或API_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 受管理的收集器。這是將指標從 EKS 叢集傳送至適用於 Prometheus 的 Amazon 受管服務的最簡單方法。但是,它確實最多只有每 30 秒抓取指標的限制。
-
選項 2:創建自己的 Prometheus 代理。在這種情況下,您可以更好地控制抓取配置,但是必須在創建代理後對其進行管理。
選項 1:使用 AWS 受管理的收集器
使用 AWS 受管收集器 (抓取工具) 是將指標從 EKS 叢集傳送至 Prometheus 執行個體的 Amazon 受管服務的最簡單方式。下列程序會逐步引導您建立 AWS 受管理的收集器。如需詳細資訊,請參閱 Amazon Prometheus AWS 受管服務使用者指南中的受管收集器。
注意
AWS 受管理的收集器的最小抓取間隔為 30 秒。如果您的 Pod 壽命短,建議您將抓取器間隔設定為 15 秒。要使用 15 秒的抓取間隔時間,請使用選項 2 創建您自己的 Promethe us 代理。
建立 AWS 受管理的收集器有三個步驟:
-
創建抓取器配置。
-
創建刮刀。
-
配置您的 EKS 集群以允許抓取工具訪問指標。
步驟 1:創建抓取器配置
為了創建刮板,您必須具有抓取器配置。您可以使用預設組態,也可以建立自己的組態。以下是獲取刮板配置的三種方法:
例如,您可以編輯抓取器配置,以修改抓取間隔或過濾抓取的指標。
要過濾抓取的指標以僅包含拆分成本分配數據所需的兩個指標,請使用以下抓取器配置:
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 群集的身份驗證模式設置為API
或API_AND_CONFIG_MAP
,那麼您的抓取器將自動具有正確的集群內訪問策略,並且抓取器將可以訪問您的集群。不需要進一步的組態,而且指標應該會傳送至 Prometheus 的 Amazon 受管服務。
如果您的 EKS 叢集的驗證模式未設定為API
或API_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 伺服器設定擷取,則可以更新抓取組態。
更新您的抓取配置
-
my_prometheus_values_yaml
從指南中進行編輯,並在server
塊中包含示例抓取配置。 -
使用 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 託管服務
-
打開 AWS 定價計算器在 https://calculator.aws/#/
。 -
選擇 Create estimate (建立估計)。
-
在 [新增服務] 頁面上,在搜尋欄位中輸入 Prometheus 的 Amazon 受管服務,然後選擇 [設定]。
-
在「描述」欄位中,輸入估計值的說明。
-
選擇一個區域。
-
選取 [使用基礎結構詳細資料計算成本]。此選項可讓您根據目前或提議的基礎架構設定,估算擷取、儲存和查詢範例成本。
-
在 EC2 執行個體數量中,輸入整個合併帳單系列 (包括所有帳戶和區域) 中所有叢集的 EC2 執行個體總數。如果您使用 AWS Fargate,請使用 Fargate 任務的數量作為 EC2 執行個體計數的代理。
-
分割成本配置資料需要兩個指標:
container_cpu_usage_seconds_total
和container_memory_working_set_bytes
。對於每個 EC2 執行個體的 Prometheus 指標,請輸入 2。 -
拆分成本分配數據表明抓取間隔為 15 秒。針對測量結果收集間隔 (秒),輸入 15。如果您使用不同的間隔 (例如 30 秒),請將其變更為您設定的間隔。
-
分割成本配置資料不會對其他參數施加任何特定需求,因此請根據您的業務需求,為其餘的輸入參數輸入適當的值。
-
選擇 [儲存並新增服務]。