注冊集群接入阿里云Prometheus能為分布在各處的Kubernetes集群提供統一的管理方式。本文介紹如何將阿里云Prometheus接入至注冊集群中。
前提條件
已通過容器服務Kubernetes版接入一個注冊的Kubernetes集群。具體操作,請參見通過控制臺創建注冊集群、通過onectl創建注冊集群。
已通過kubectl連接注冊集群。具體操作,請參見獲取集群KubeConfig并通過kubectl工具連接集群。
對已通過專線方式與云上VPC互通的注冊集群,已配置指向Promethus內網網段的路由。更多信息,請參見Prometheus內網域名與路由網段對照表。
步驟一:為ack-arms-prometheus組件配置RAM權限
通過onectl配置
在本地安裝配置onectl。具體操作,請參見通過onectl管理注冊集群。
執行以下命令,為ack-arms-prometheus組件配置RAM權限。
onectl ram-user grant --addon arms-prometheus
預期輸出:
Ram policy ack-one-registered-cluster-policy-arms-prometheus granted to ram user ack-one-user-ce313528c3 successfully.
通過控制臺配置
如果您使用公網接入注冊集群,在注冊集群中安裝組件前,您需要在接入集群中設置AccessKey用來訪問云服務的權限。如果您是使用內網接入注冊集群,配置AccessKey步驟可跳過。
執行以下命令,查看集群是否使用內網接入注冊集群。
kubectl -n kube-system get deploy ack-cluster-agent -o=jsonpath='{.spec.template.spec.containers[0].env[?(@.name=="INTERNAL_ENDPOINT")].value}'
若輸出為
true
:表示使用內網接入。若輸出為
false
:表示使用公網接入。您需要按照以下方式配置AccessKey。
創建RAM用戶。具體操作,請參見創建RAM用戶。
創建自定義權限策略。具體操作,請參見創建自定義權限策略。ack-arms-prometheus組件需要的權限策略內容如下。
{ "Version": "1", "Statement": [ { "Action": [ "arms:Describe*", "arms:List*", "arms:Get*", "arms:Search*", "arms:Check*", "arms:Query*", "arms:ListEnvironments", "arms:DescribeAddonRelease", "arms:InstallAddon", "arms:DeleteAddonRelease", "arms:ListEnvironmentDashboards", "arms:ListAddonReleases", "arms:CreateEnvironment", "arms:UpdateEnvironment", "arms:InitEnvironment", "arms:DescribeEnvironment", "arms:InstallEnvironmentFeature", "arms:ListEnvironmentFeatures" ], "Resource": "*", "Effect": "Allow" } ] }
為RAM用戶添加權限。具體操作,請參見為RAM用戶授權。
為RAM用戶創建AccessKey。具體操作,請參見獲取AccessKey。
使用AccessKey在注冊集群中創建名為alibaba-addon-secret的Secret資源。
執行以下命令,創建ack-arms-prometheus組件使用的Secret。
kubectl -n arms-prom create secret generic alibaba-addon-secret --from-literal='access-key-id=<your AccessKey ID>' --from-literal='access-key-secret=<your AccessKey Secret>'
說明<your AccessKey ID>
和<your AccessKey Secret>
為上一步獲取的AccessKey信息。
步驟二:安裝ack-arms-prometheus組件
通過onectl安裝
執行以下命令,安裝ack-arms-prometheus組件。
onectl addon install arms-prometheus
預期輸出:
Addon arms-prometheus, version **** installed.
通過控制臺安裝
登錄容器服務管理控制臺,在左側導航欄選擇集群。
在集群列表頁面中,單擊目標集群名稱,然后在左側導航欄中,選擇 。
若Helm頁面存在arms-prometheus和arms-prom安裝記錄,請刪除對應的安裝記錄后,再按照后續操作重新接入。
在集群管理頁左側導航欄,選擇 。
在組件管理頁面,單擊日志與監控頁簽。
找到ack-arms-prometheus卡片,單擊右下角的安裝。然后單擊確定。
安裝完成后,您可登錄Prometheus控制臺。進入對應集群實例,查看監控數據和定義告警規則。更多信息,請參見阿里云Prometheus監控和創建Prometheus監控報警。
如何切換ack-arms-prometheus組件采集CAdvisor 10250端口數據
ack-arms-promethues組件默認采集CAdvisor 10255端口數據,如果您的注冊集群只打開了kubelet 10250端口,可以按照以下步驟切換ack-arms-promethues組件的采集端口。
使用以下YAML內容,在注冊集群中部署配置ServiceMonitor。
apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: annotations: arms.prometheus.io/discovery: 'true' name: arms-prom-cadvisor-10250 namespace: arms-prom spec: endpoints: - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token honorLabels: true port: https-metrics relabelings: - sourceLabels: - __metrics_path__ targetLabel: metrics_path scheme: https tlsConfig: caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt insecureSkipVerify: true - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token honorLabels: true path: /metrics/cadvisor port: https-metrics relabelings: - sourceLabels: - __metrics_path__ targetLabel: metrics_path scheme: https tlsConfig: caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt insecureSkipVerify: true - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token honorLabels: true path: /metrics/probes port: https-metrics relabelings: - sourceLabels: - __metrics_path__ targetLabel: metrics_path scheme: https tlsConfig: caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt insecureSkipVerify: true jobLabel: k8s-app namespaceSelector: matchNames: - kube-system selector: matchLabels: k8s-app: kubelet
等待大約需要15s~1 min后,進行采集數據驗證。
驗證切換端口后的采集數據。
登錄ARMS控制臺。
在左側導航欄選擇 ,進入可觀測監控 Prometheus 版的實例列表頁面。
在Prometheus監控頁面的頂部菜單欄,選擇集群所在的地域。
在實例列表頁面,單擊目標實例名稱進入集成中心頁面,然后在左側導航欄單擊服務發現,單擊Targets頁簽。
查看是否已存在arms-prom/arms-prom-cadvisor-10250采集任務,且采集任務狀態是否正常。