全部产品
Search
文档中心

应用实时监控服务ARMS:通用Kubernetes环境接入应用监控 eBPF 版

更新时间:Apr 11, 2024

借助ARMS应用监控 eBPF 版,您可以对通用Kubernetes环境的应用实现无侵入的监控,提供如应用拓扑、接口调用、应用概览和告警等监控。本文介绍如何将通用Kubernetes环境中的应用接入ARMS应用监控 eBPF 版

说明

如果您使用的Kubernetes集群由容器服务ACK提供,本文不适用,ACK集群接入ARMS的操作请参见手动接入应用至应用监控 eBPF 版

前提条件

  • 请确保您的Kubernetes集群版本在1.20及以上版本。

  • 如果您的Kubernetes集群没有部署在阿里云,请确保集群连通公网,或者通过云企业网等方式打通阿里云VPC和集群之间的连接。

  • 目前只支持x86架构,且机器内核版本需为4.19或以上版本,同时。更多环境要求,请参见应用监控 eBPF 版运行环境要求和限制

步骤1:安装Helm3

安装Helm3的操作,请参见Helm官方文档

步骤2:安装应用监控 eBPF 版组件

ARMS应用监控 eBPF 版目前仅支持无状态(Deployment)和有状态(StatefulSet)两种类型的应用接入,两种类型的应用接入方法相同。此处以将Kubernetes环境中的无状态(Deployment)类型的应用接入ARMS应用监控 eBPF 版为例。

  1. 执行以下wget命令下载ack-arms-cmonitor安装包。

    wget 'https://aliacs-app-catalog.oss-cn-hangzhou.aliyuncs.com/charts-incubator/ack-arms-cmonitor-4.1.2.tgz'
  2. 执行以下命令解压ack-arms-cmonitor安装包。

    tar xvf ack-arms-cmonitor-4.1.2.tgz
  3. 将otel-collector-deployment.yaml中的环境变量IS_PUBLIC修改为public

  4. 编辑安装包下的values.yaml文件,根据实际情况修改以下参数,然后保存。

    registry: registry-__ACK_REGION_ID__-vpc.ack.aliyuncs.com
    cluster_id: __ACK_CLUSTER_ID__
    accessKey: __ACCESSKEY__
    accessKeySecret: __ACCESSKEY_SECRET__
    uid: "__ACK_UID__"
    region_id: __ACK_REGION_ID__
    • registry:镜像地址,修改__ACK_REGION_ID__为对应的RegionID。

      说明

      以上示例为VPC环境镜像地址,公网环境镜像地址为:

      registry-__ACK_REGION_ID__.ack.aliyuncs.com
    • __ACK_REGION_ID__:阿里云地域ID,应用监控 eBPF 版支持的地域,请参见开服地域

    • __ACK_CLUSTER_ID__:自定义Kubernetes集群ID,集群的唯一标识。建议格式为<uid>-<clusterid>

    • __ACCESSKEY____ACCESSKEY_SECRET__:阿里云账号的AccessKey ID和AccessKey Secret。获取方法,请参见获取AccessKey

      重要

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

    • __ACK_UID__:阿里云账号(主账号)ID。将鼠标悬浮于阿里云控制台右上角的头像上可以获取。

  5. 执行以下命令安装ack-arms-cmonitor。

    请在ack-arms-cmonitor安装包外执行此命令。

    helm3 upgrade --install ack-arms-cmonitor ack-arms-cmonitor --namespace arms-prom --create-namespace

步骤3:修改应用的YAML文件

  1. 执行以下命令查看目标无状态(Deployment)应用的YAML文件。

    kubectl get deployment {deployment名称} -o yaml
    说明

    若您不清楚{deployment名称},请先执行以下命令查看所有无状态(Deployment)应用,在执行结果中找到目标无状态(Deployment)应用,再查看目标无状态(Deployment)应用的YAML文件。

    kubectl get deployments --all-namespace
  2. 启动编辑目标无状态(Deployment)应用的YAML文件。

    kubectl edit deployment {Deployment名称} -o yaml
  3. 在YAML文件中的spec.template.metadata层级下添加以下内容。

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

    如果您需要在K8s环境中创建一个新的无状态(Deployment)应用并接入ARMS,则应用的完整YAML文件如下:

    展开查看完整示例YAML文件

    apiVersion: apps/v1beta1 # for versions before 1.8.0 use apps/v1beta1
    kind: Deployment
    metadata:
      name: arms-springboot-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: MYSQL_SERVICE_HOST
                  value: "arms-demo-mysql"
                - name: MYSQL_SERVICE_PORT
                  value: "3306"
    ---
    apiVersion: apps/v1beta1
    kind: Deployment
    metadata:
      name: arms-demo-mysql
      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
    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
    ---
  4. 保存配置后,应用将自动重启,以上配置生效。

    2~5分钟后,若您的应用出现在ARMS控制台应用监控 eBPF 版 > 应用列表页面中且有数据上报,则说明接入成功。

相关文档

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