本文介绍容器服务Kubernetes基于业务实时监控服务ARMS(Application Real-Time Monitoring Service)如何进行应用监控。

背景信息

业务实时监控服务ARMS(Application Real-Time Monitoring Service)是一款阿里云应用性能管理(APM)类监控产品。

ARMS应用监控是一款针对Java应用的性能管理(Application Performance Management,简称APM)软件。您无需修改任何代码,只需要在Java应用的启动脚本中挂载一个探针,该探针就能够对您的Java应用进行全方位监控,帮助您更快速地定位出错接口和慢接口、重现调用参数、检测内存泄漏、发现系统瓶颈,从而大幅提升线上问题诊断问题的效率。ARMS产品详情,可参见业务实时监控服务ARMS

主要功能
  • 自动发现应用拓扑自动发现应用拓扑
  • 自动发现并监控接口
  • 捕获异常事务和SQL分析、慢事务
  • Java异常报表
  • 查询基于调用链的事务快照事务快照
  • 即席多维排查(多维度调用链搜索,异常调用链搜索)
  • PaaS平台集成

前提条件

安装组件

  1. 登录容器服务管理控制台
  2. 在控制台左侧导航栏中,选择市场 > 应用目录
  3. 应用目录页面选择ack-arms-pilot
  4. 应用目录-ack-arms-pilot页面,单击右侧的创建
    应用目录-ack-arms-pilot
    在左侧导航栏中选择 应用 > 无状态,选择目标集群和命名空间,可以看到名称为 ack-arms-pilot-default-ack-arms-pilot的应用已成功创建。 无状态

授权

  1. 在容器服务管理控制台,单击左侧导航栏集群,进入集群列表页面。
    说明 请以主账号登录容器服务管理控制台进行授权操作。
  2. 单击目标集群的名称,查看集群的详细信息。
  3. 单击集群资源区域的Worker RAM角色,进入RAM访问控制台的RAM角色管理页面。
    Worker RAM角色
    说明

    本文以新版RAM访问控制台为例进行介绍。

    若您使用的是旧版的RAM访问控制台:

    方法一

    1. 单击左侧导航栏角色管理,在角色名中输入Worker RAM角色的名称进行搜索。单击角色名称角色管理
    2. 基本信息区域,单击页面右上角的编辑基本信息基本信息

    方法二

    单击页面右下角 体验新版,切换到新版RAM访问控制台。在容器服务管理控制台单击 Worker RAM角色重新登录RAM访问控制台。 Worker RAM角色
  4. RAM角色管理页面,单击权限管理区域的权限策略名称,查看具体的权限策略。
  5. 权限策略管理页面,单击策略内容区域的修改策略内容
    修改策略内容
  6. 策略内容区域增加以下字段后,单击确定
    {
        "Action": "arms:*",
        "Resource": "*",
        "Effect": "Allow"
    }
    策略内容

部署ARMS应用监控

在创建Deployment的yaml文件中,通过添加以下 annotations部署ARMS应用监控。
annotations:
  armsPilotAutoEnable: "on"
  armsPilotCreateAppName: "<your-deployment-name>"
说明
  • annotations添加到yaml文件spec字段templatemetadata下。
  • armsPilotCreateAppName的内容为ARMS中应用的名称。
  1. 在控制台左侧导航栏中,单击集群
  2. 集群列表页面中,单击目标集群名称或者目标集群右侧操作列下的详情
  3. 在集群管理页左侧导航栏中,单击工作负载
  4. 单击页面右上角使用模板创建
  5. 无状态页签中,选择示例模板自定义,基于以下内容修改Deployment,然后单击添加部署
    apiVersion: apps/v1 
    kind: Deployment
    metadata:
      name: arms-springboot-demo
      labels:
        app: arms-springboot-demo
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: arms-springboot-demo
      template:
        metadata:
          annotations:
            armsPilotAutoEnable: "on"
            armsPilotCreateAppName: "arms-k8s-demo"
          labels:
            app: arms-springboot-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/v1 
    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
    ---
  1. 无状态页签中,可看到刚刚部署的Deployment。
  2. 单击目标Deployment操作列ARMS控制台,登录ARMS管理控制台查看应用的详细信息,例如:应用健康概览接口调用等。
    说明操作列ARMS控制台,请检查您是否授权容器服务调用ARMS。
    ARMS控制台