将阿里云Prometheus接入注册集群

注册集群接入阿里云Prometheus能为分布在各处的Kubernetes集群提供统一的管理方式。本文介绍如何将阿里云Prometheus接入至注册集群中。

前提条件

步骤一:为ack-arms-prometheus组件配置RAM权限

通过onectl配置

  1. 在本地安装配置onectl。具体操作,请参见通过onectl管理注册集群

  2. 执行以下命令,为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。

展开查看如何配置AccessKey

  1. 创建RAM用户。具体操作,请参见创建RAM用户

  2. 创建自定义权限策略。具体操作,请参见创建自定义权限策略。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"
            }
        ]
    }
  3. 为RAM用户添加权限。具体操作,请参见为RAM用户授权

  4. 为RAM用户创建AccessKey。具体操作,请参见获取AccessKey

  5. 使用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.

通过控制台安装

  1. 登录容器服务管理控制台,在左侧导航栏选择集群

  2. 集群列表页面中,单击目标集群名称,然后在左侧导航栏中,选择应用 > Helm

    Helm页面存在arms-prometheus和arms-prom安装记录,请删除对应的安装记录后,再按照后续操作重新接入。

  3. 在集群管理页左侧导航栏,选择运维管理 > 组件管理

  4. 组件管理页面,单击日志与监控页签。

  5. 找到ack-arms-prometheus卡片,单击右下角的安装。然后单击确定

安装完成后,您可登录Prometheus控制台。进入对应集群实例,查看监控数据和定义告警规则。更多信息,请参见阿里云Prometheus监控创建Prometheus监控报警

如何切换ack-arms-prometheus组件采集CAdvisor 10250端口数据

ack-arms-promethues组件默认采集CAdvisor 10255端口数据,如果您的注册集群只打开了kubelet 10250端口,可以按照以下步骤切换ack-arms-promethues组件的采集端口。

  1. 使用以下YAML内容,在注册集群中部署配置ServiceMonitor。

    展开查看YAML内容

    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后,进行采集数据验证。

  2. 验证切换端口后的采集数据。

    1. 登录ARMS控制台

    2. 在左侧导航栏选择Prometheus监控 > 实例列表,进入可观测监控 Prometheus 版的实例列表页面。

    3. Prometheus监控页面的顶部菜单栏,选择集群所在的地域。

    4. 实例列表页面,单击目标实例名称进入集成中心页面,然后在左侧导航栏单击服务发现,单击Targets页签。

      查看是否已存在arms-prom/arms-prom-cadvisor-10250采集任务,且采集任务状态是否正常。采集数据