Prometheus 指標 - Amazon EKS

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

Prometheus 指標

Prometheus 是湊集端點的監控和時間序列資料庫。它提供查詢、彙總和儲存收集之資料的能力。您也可以將其用於警示和警示彙總。本主題說明如何將 Prometheus 設定為受管或開放原始碼選項。監控 Amazon EKS 控制平面指標是常見的使用案例。

Amazon Managed Service for Prometheus 是與 Prometheus 相容的監控和警示服務,可讓您輕鬆地大規模監控容器化應用程式和基礎設施。這是一項全受管服務,既可自動擴展指標的擷取、儲存、查詢和提醒,它還與 AWS 安全服務集成,以便快速安全地訪問您的數據。您可以使用開放原始碼 PromQL 查詢語言來查詢指標並根據指標發出提醒。

如需如何在開啟 Prometheus 指標後使用該指標的詳細資訊,請參閱《Amazon Managed Service for Prometheus 使用者指南》。

建立叢集時開啟 Prometheus 指標

重要

Prometheus 資源的 Amazon 受管服務不在叢集生命週期之外,需要獨立於叢集進行維護。刪除叢集時,請務必同時刪除任何適用的抓取工具,以停止適用的成本。如需詳細資訊,請參閱 Amazon Prometheus 受管服務使用者指南中的尋找和刪除抓取工具

建立新叢集時,您可以開啟將指標傳送至 Prometheus 的選項。在中 AWS Management Console,此選項位於建立新叢集的 [設定可觀測性] 步驟中。如需詳細資訊,請參閱 建立 Amazon EKS 叢集

Prometheus 透過稱為湊集的提取型模式,從您的叢集中探索並收集指標。湊集器的設定是為了從您的叢集基礎設施和容器化應用程式收集資料。

當您開啟傳送 Prometheus 指標的選項時,Amazon Managed Service for Prometheus 會提供完全受管的無代理程式湊集器。使用以下進階組態選項以根據需要自訂預設湊集器。

湊集器別名

(選用) 輸入湊集器的唯一別名。

目的地

選擇 Amazon Managed Service for Prometheus 工作區。工作區是專用於儲存和查詢 Prometheus 指標的邏輯空間。使用此工作區,您能夠跨具有該工作區存取權的帳戶檢視 Prometheus 指標。建立新工作區選項會讓 Amazon EKS 知道可以使用您提供的工作區別名來代表您建立工作區。使用選取現有工作區選項,您可以從下拉式清單中選取現有的工作區。如需工作區的詳細資訊,請參閱《Amazon Managed Service for Prometheus 使用者指南》中的管理工作區

服務存取

本節總結您在傳送 Prometheus 指標時授予的許可:

  • 允許 Amazon Managed Service for Prometheus 描述湊集的 Amazon EKS 叢集

  • 允許遠端寫入 Amazon 受管 Prometheus 工作區

如果 AmazonManagedScraperRole 已經存在,則湊集器會使用它。選擇 AmazonManagedScraperRole 連結以查看許可詳細資訊。如果 AmazonManagedScraperRole 尚未存在,請選擇檢視許可詳細資訊連結,以查看您透過傳送 Prometheus 指標來授予的特定許可。

子網

檢視湊集器會繼承的子網路。如果您需要變更它們,請返回建立叢集指定聯網步驟。

安全群組

檢視湊集器會繼承的安全群組。如果您需要變更它們,請返回建立叢集指定聯網步驟。

湊集器組態

視需要修改 YAML 格式的湊集器組態。若要執行這項操作,請使用表單或上傳取代 YAML 檔案。如需詳細資訊,請參閱《Amazon Managed Service for Prometheus 使用者指南》中的湊集器組態

Amazon Managed Service for Prometheus 是指作為 AWS 受管收集器與叢集一起建立的無代理程式湊集器。如需有關 AWS 受管收集器的詳細資訊,請參閱AWS Amazon Prometheus 受管服務使用指南中的受管收集器。

重要

您必須設定 aws-auth ConfigMap 來授予湊集器叢集內許可。如需詳細資訊,請參閱《Amazon Managed Service for Prometheus 使用者指南》中的設定 Amazon EKS 叢集

檢視 Prometheus 湊集器詳細資訊

建立叢集並啟用 Prometheus 指標選項後,您可以檢視 Prometheus 湊集器詳細資訊。在中檢視叢集時 AWS Management Console,請選擇 [可觀測性] 索引標籤。表格會顯示叢集的湊集器清單,包含湊集器 ID、別名、狀態和建立日期等資訊。

若要檢視湊集器的更多詳細資訊,請選擇湊集器 ID 連結。例如,您可以檢視湊集器組態、Amazon Resource Name (ARN)、遠端寫入 URL 和聯網資訊。您可以使用湊集器 ID 作為輸入到 Amazon Managed Service for Prometheus API 操作 (例如 DescribeScraperDeleteScraper)。您也可以使用 API 來建立更多湊集器。

如需使用 Prometheus API 的詳細資訊,請參閱 Amazon Managed Service for Prometheus API 參考

使用 Helm 部署 Prometheus

或者,您可以使用 Helm V3 部署 Prometheus 到您的叢集中。如果您已經安裝了 Helm,可以使用 helm version 命令檢查您的版本。Helm 是適用於 Kubernetes 叢集的套件管理工具。如需有關 Helm 及其安裝方式的詳細資訊,請參閱 搭配 Amazon EKS 使用 Helm

在您為 Amazon EKS 叢集設定 Helm 之後,即可用它來依照下列步驟部署 Prometheus。

使用 Helm 部署 Prometheus
  1. 建立 Prometheus 命名空間。

    kubectl create namespace prometheus
  2. 新增 prometheus-community 圖表儲存庫。

    helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
  3. 部署 Prometheus。

    helm upgrade -i prometheus prometheus-community/prometheus \ --namespace prometheus \ --set alertmanager.persistentVolume.storageClass="gp2",server.persistentVolume.storageClass="gp2"
    注意

    如果執行此命令時收到錯誤 Error: failed to download "stable/prometheus" (hint: running `helm repo update` may help),請執行 helm repo update prometheus-community,然後嘗試再次執行步驟 2 命令。

    如果收到錯誤 Error: rendered manifests contain a resource that already exists,請執行 helm uninstall your-release-name -n namespace,然後嘗試再次執行步驟 3 命令。

  4. 確認 prometheus 命名空間中的所有 Pods 皆處於 READY 狀態。

    kubectl get pods -n prometheus

    範例輸出如下。

    NAME READY STATUS RESTARTS AGE prometheus-alertmanager-59b4c8c744-r7bgp 1/2 Running 0 48s prometheus-kube-state-metrics-7cfd87cf99-jkz2f 1/1 Running 0 48s prometheus-node-exporter-jcjqz 1/1 Running 0 48s prometheus-node-exporter-jxv2h 1/1 Running 0 48s prometheus-node-exporter-vbdks 1/1 Running 0 48s prometheus-pushgateway-76c444b68c-82tnw 1/1 Running 0 48s prometheus-server-775957f748-mmht9 1/2 Running 0 48s
  5. 使用 kubectl 將 Prometheus 主控台的連接埠轉送到本機機器。

    kubectl --namespace=prometheus port-forward deploy/prometheus-server 9090
  6. 將 Web 瀏覽器連接至 http://localhost:9090 以檢視 Prometheus 主控台。

  7. 從 – insert metric at cursor (- 在游標處插入指標) 功能表中選擇一個指標,然後選擇 Execute (執行)。選擇 Graph (圖表) 標籤以顯示一段時間內的指標。下圖顯示一段時間內的 container_memory_usage_bytes

    
                        Prometheus 指標
  8. 選擇頂部導覽列中的 Status (狀態),然後選擇 Targets (目標)

    
                        Prometheus 主控台

    將會顯示使用服務探索連接至 Prometheus 的所有 Kubernetes 端點。

檢視控制平面原始指標

作為部署 Prometheus 的替代方案,Kubernetes API 伺服器會公開一些以 Prometheus 格式顯示的指標。這些指標對於監視和分析非常有用。它們會透過參照 /metrics HTTP API 的指標端點於內部公開。類似其他端點,此端點在 Amazon EKS 控制平面公開。此端點主要對於查看特定指標有用。若要隨時間分析指標,建議您部署 Prometheus。

若要檢視原始指標輸出,請使用 kubectl--raw 旗標。此命令可讓您傳遞任何 HTTP 路徑並傳回原始回應。

kubectl get --raw /metrics

範例輸出如下。

[...]
# HELP rest_client_requests_total Number of HTTP requests, partitioned by status code, method, and host.
# TYPE rest_client_requests_total counter
rest_client_requests_total{code="200",host="127.0.0.1:21362",method="POST"} 4994
rest_client_requests_total{code="200",host="127.0.0.1:443",method="DELETE"} 1
rest_client_requests_total{code="200",host="127.0.0.1:443",method="GET"} 1.326086e+06
rest_client_requests_total{code="200",host="127.0.0.1:443",method="PUT"} 862173
rest_client_requests_total{code="404",host="127.0.0.1:443",method="GET"} 2
rest_client_requests_total{code="409",host="127.0.0.1:443",method="POST"} 3
rest_client_requests_total{code="409",host="127.0.0.1:443",method="PUT"} 8
# HELP ssh_tunnel_open_count Counter of ssh tunnel total open attempts
# TYPE ssh_tunnel_open_count counter
ssh_tunnel_open_count 0
# HELP ssh_tunnel_open_fail_count Counter of ssh tunnel failed open attempts
# TYPE ssh_tunnel_open_fail_count counter
ssh_tunnel_open_fail_count 0

此原始輸出會逐字傳回 API 伺服器公開的內容。不同的指標會分行列出,每一行都包含指標名稱、標籤和值。

metric_name{"tag"="value"[,...]}
            value