借助 ARMS 应用监控,您可以对开源 Kubernetes 环境的应用进行应用拓扑、接口调用、异常事务和慢事务监控、SQL 分析等监控。本文将帮助您将开源 Kubernetes 环境中的应用接入 ARMS 应用监控。

前提条件

  • 开通 ARMS 服务
  • 确保您的 Kubernetes api-server 组件接口版本在 1.10 及以上。
  • 确保您的集群联通公网。

步骤一:安装探针

ARMS 应用监控目前仅支持无状态(Deployment)和有状态(StatefulSet)两种类型的应用接入。将开源 Kubernetes 环境中的无状态(Deployment)类型的应用接入 ARMS 应用监控的操作步骤如下。

  1. 采用以下方法之一下载 arms-pilot。
    • 方法一:手动下载最新安装包
    • 方法二: 执行以下 Wget 命令下载 arms-pilot 安装包。
      wget 'http://arms-apm-hangzhou.oss-cn-hangzhou.aliyuncs.com/arms-pilot/arms-pilot-0.1.1-community.tgz' -O arms-pilot-0.1.1.tgz                                
  2. 执行以下命令解压 arms-pilot 安装包。
    tar zxvf arms-pilot-0.1.1.tgz                         
  3. 执行以下命令安装 arms-pilot。
    helm install ./arms-pilot --namespace arms-pilot-system                        

步骤二:获取 Licensekey

  1. 登录 ARMS 控制台,在左侧导航栏中选择应用监控 > 应用列表
  2. 应用列表页面右上角单击新接入应用
  3. 新接入应用页面然后查看并保存 LicenseKey。

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

  1. 执行以下命令查看目标无状态(Deployment)应用的配置。
    ### 查看指定无状态(Deployment)类型应用的配置
    kubectl get deployment {deployment 名称} -o yaml                            
    说明 若您不清楚 {deployment 名称},请先执行以下命令查看所有无状态(Deployment)应用,在执行结果中找到目标无状态(Deployment)应用,再查看目标无状态(Deployment)应用的配置。
    ### 查看所有无状态(Deployment)类型应用的配置
    kubectl get deployments --all-namespace                
  2. 启动编辑目标无状态(Deployment)应用的 YAML 文件。
    kubectl edit deployment {deployment名} -o yaml                        
  3. 在 YAML 文件中的 spec -> template -> metadata -> labels 层级下加入以下内容。
    ARMSApmAppName: xxx
    ARMSApmLicenseKey: xxx                           
    说明
    • 请将 xxx 分别替换成您的 LicenseKey 和应用名称,应用名暂不支持中文。
    • 将 LicenseKey 中的符号 @ 替换为符号 _
    在开源环境中创建一个无状态(Deployment)应用并接入 ARMS 应用监控的完整 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
            ARMSApmLicenseKey: "xxx_xxx"
            ARMSApmAppName: "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 # for versions before 1.8.0 use 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 控制台的应用监控 > 应用列表中且有数据上报,则说明接入成功。

卸载探针

  1. 如果您不需要再监控开源 Kubernetes 环境中的 Java 应用时,可执行以下命令卸载 arms-pilot。
    helm del --purge arms-pilot
  2. 重启您的业务Pod。

更多信息