手动接入应用至应用监控 eBPF 版

阿里云应用监控 eBPF 版是一套针对Kubernetes集群开发的一站式可观测性产品,为Kubernetes集群手动安装应用监控 eBPF 版组件后,即可查看基于Kubernetes集群下的指标、应用链路、日志和事件。

前提条件

说明

应用监控 eBPF 版目前正在公测中,公测期间您可以免费使用阿里云应用监控 eBPF 版,如果您在使用中有任何问题,请联系应用监控 eBPF 版答疑钉钉群(群号:35568145)获取帮助。

接入说明

Kubernetes集群安装应用监控 eBPF 版组件即可将集群接入应用监控 eBPF 版

安装前,需先检查目标集群是否存在ARMS Addon Token,否则会出现权限不足的报错。若存在ARMS Addon Token,ARMS会进行免密授权,组件安装完成后,即可使用应用监控 eBPF 版;若不存在ARMS Addon Token,则需要手动添加ARMS和链路追踪权限策略。查看ARMS Addon Token和手动添加权限策略方法如下:

查看集群是否存在ARMS Addon Token。

  1. 登录容器服务管理控制台,在集群列表页面,单击目标集群名称进入集群详情页。

  2. 在左侧导航栏选择配置管理 > 保密字典,然后在顶部选择命名空间kube-system,查看addon.arms.token是否存在。

手动添加权限策略。

  1. 登录容器服务管理控制台,在集群列表页面单击目标集群名称。

  2. 集群信息 > 基本信息页签的集群资源区域,单击Worker RAM角色右侧的链接。

  3. 权限管理页签单击新增授权

  4. 新增授权面板添加以下两个权限策略,然后单击确认新增授权

    • AliyunTracingAnalysisFullAccess:可观测链路 OpenTelemetry 版的完整权限。

    • AliyunARMSFullAccess:ARMS的完整权限。

说明
  • Kubernetes托管版集群:对于部分Kubernetes托管版集群,可能存在没有ARMS Addon Token的情况,因此,对于Kubernetes托管版集群,建议首先检查ARMS Addon Token是否存在。若不存在,仍需进行手动授权。

  • Kubernetes专有版集群:默认不支持ARMS Addon Token,需进行手动授权。

安装应用监控 eBPF 版组件

为已有应用安装组件

如果您的应用已安装过应用监控 eBPF 版组件,请在容器服务管理控制台目标集群下的运维管理 > 组件管理页面确认ack-arms-cmonitor组件版本是否为4.0.0或以上,如果不是,请单击升级将组件升级至最新版本。

  1. 登录容器服务管理控制台,在集群列表页面单击目标集群名称。

  2. 在左侧导航栏,选择运维管理 > 集群拓扑

  3. 在集群拓扑页面,单击开始安装。ACK控制台将会为您自动安装应用监控 eBPF 版组件。

    说明

    命名空间默认为arms-prom

  4. 如果是专有版集群,请更新AK/SK配置。

    1. 在左侧导航栏,选择应用 > Helm

    2. arms-cmonitor右侧单击更新,修改accessKeyaccessKeySecret为阿里云账号的AccessKey IDAccessKey Secret。获取方法,请参见获取AccessKey

      重要

      请确认对应的阿里云账号已包含AliyunARMSFullAccessAliyunSTSAssumeRoleAccess权限。

    3. 单击确定

新建应用时安装组件

  1. 登录容器服务管理控制台,在集群列表页面上的目标集群右侧操作列单击应用管理

  2. 无状态页面单击使用YAML创建资源

  3. 选择示例模板,并在模板(YAML格式)中将以下labels添加到spec.template.metadata层级下。

    labels:
      armseBPFAutoEnable: "on"
      armseBPFCreateAppName: "<your-deployment-name>"    //请将<your-deployment-name>替换为您的应用名称。

    创建一个无状态(Deployment)应用并开启ARMS应用监控 eBPF 版的完整YAML示例模板如下:

    展开查看完整示例YAML文件。

    apiVersion: v1
    kind: Namespace
    metadata:
      name: arms-demo
    ---
    apiVersion: apps/v1 # for versions before 1.8.0 use apps/v1beta1
    kind: Deployment
    metadata:
      name: arms-springboot-demo
      namespace: arms-demo
      labels:
        app: arms-springboot-demo
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: arms-springboot-demo
      template:
        metadata:
          labels:
            app: arms-springboot-demo
            armseBPFAutoEnable: "on"
            armseBPFCreateAppName: "arms-k8s-demo"
        spec:
          containers:
            - resources:
                limits:
                  cpu: 0.5
              image: registry.cn-hangzhou.aliyuncs.com/arms-docker-repo/arms-springboot-demo:v0.1
              imagePullPolicy: Always
              name: arms-springboot-demo
              env:
                - name: SELF_INVOKE_SWITCH
                  value: "true"
                - name: COMPONENT_HOST
                  value: "arms-demo-component"
                - name: COMPONENT_PORT
                  value: "6666"
                - name: MYSQL_SERVICE_HOST
                  value: "arms-demo-mysql"
                - name: MYSQL_SERVICE_PORT
                  value: "3306"
    ---
    apiVersion: apps/v1 # for versions before 1.8.0 use apps/v1beta1
    kind: Deployment
    metadata:
      name: arms-springboot-demo-subcomponent
      namespace: arms-demo
      labels:
        app: arms-springboot-demo-subcomponent
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: arms-springboot-demo-subcomponent
      template:
        metadata:
          labels:
            app: arms-springboot-demo-subcomponent
            armseBPFAutoEnable: "on"
            armseBPFCreateAppName: "arms-k8s-demo-subcomponent"
        spec:
          containers:
            - resources:
                limits:
                  cpu: 0.5
              image: registry.cn-hangzhou.aliyuncs.com/arms-docker-repo/arms-springboot-demo:v0.1
              imagePullPolicy: Always
              name: arms-springboot-demo-subcomponent
              env:
                - name: SELF_INVOKE_SWITCH
                  value: "false"
                - name: MYSQL_SERVICE_HOST
                  value: "arms-demo-mysql"
                - name: MYSQL_SERVICE_PORT
                  value: "3306"
    ---
    apiVersion: v1
    kind: Service
    metadata:
      labels:
        name: arms-demo-component
      name: arms-demo-component
      namespace: arms-demo
    spec:
      ports:
        # the port that this service should serve on
        - name: arms-demo-component-svc
          port: 6666
          targetPort: 8888
      # label keys and values that must match in order to receive traffic for this service
      selector:
        app: arms-springboot-demo-subcomponent
    ---
    apiVersion: apps/v1 # for versions before 1.8.0 use apps/v1beta1
    kind: Deployment
    metadata:
      name: arms-demo-mysql
      namespace: arms-demo
      labels:
        app: mysql
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: mysql
      template:
        metadata:
          labels:
            app: mysql
        spec:
          containers:
            - resources:
                limits:
                  cpu: 0.5
              image: registry.cn-hangzhou.aliyuncs.com/arms-docker-repo/arms-demo-mysql:v0.1
              name: mysql
              ports:
                - containerPort: 3306
                  name: mysql
    ---
    apiVersion: v1
    kind: Service
    metadata:
      labels:
        name: mysql
      name: arms-demo-mysql
      namespace: arms-demo
    spec:
      ports:
        # the port that this service should serve on
        - name: arms-mysql-svc
          port: 3306
          targetPort: 3306
      # label keys and values that must match in order to receive traffic for this service
      selector:
        app: mysql
    --

相关文档

接入应用监控 eBPF 版后,即可查看ACK集群应用的关键指标、上下游依赖组件、拓扑图等,更多信息,请参见应用详情