全部产品
Search
文档中心

弹性容器实例:ASK接入ARMS应用监控

更新时间:Oct 11, 2022

借助ARMS应用监控,您可以对ASK集群中的应用进行应用拓扑、接口调用、异常事务和慢事务监控、SQL分析等监控。本文介绍如何将ASK集群接入ARMS应用监控。

前提条件

  • 已创建ASK集群。

  • 已开通ARMS服务。具体操作,请参见开通ARMS

  • 检查您的JDK版本。ARMS应用监控支持的JDK版本如下:

    • JDK 1.7.0+

    • JDK 1.8.0_25+

      说明
      • Kubernetes集群应用部署建议:JDK 1.8.0_191+。

      • 如果JDK版本为1.8.0_25或者1.8.0_31,可能会出现无法安装探针的情况,请升级至1.8.X最新版本。

    • JDK 11.0.8+

    说明

    JDK 1.8及以下版本和JDK 11版本对应的探针安装包不同,请根据不同的JDK版本下载对应的探针安装包或调整应用监控组件ack-onepilot的配置。

背景信息

应用实时监控服务ARMS(Application Real-Time Monitoring Service)是一款应用性能管理(APM)产品,包含应用监控、Prometheus监控等功能模块,能帮助您实现全栈式性能监控和端到端全链路追踪诊断,实现轻松高效的应用运维。

为ASK集群安装ARMS应用监控组件(探针)后,ARMS可以对应用进行全方位监控,帮助您快速定位出错接口和慢接口、重现调用参数、发现系统瓶颈,从而大幅提升线上问题诊断的效率。更多信息,请参见应用监控概述

步骤一:安装应用监控组件

  1. 登录容器服务管理控制台

  2. 在左侧导航栏,选择市场>应用市场

  3. 应用目录页签下,找到ack-onepilot,然后单击该应用。

  4. ack-onepilot页面,单击右上角的一键部署

  5. 创建面板,完成基本信息和参数配置。

    1. 选择目标集群和命名空间,单击下一步

    2. 根据需要配置参数,然后单击确定

  6. 查看安装结果。

    单击集群名称进入集群信息页面,在左侧导航栏选择应用>Helm,确认ack-onepilot的状态是否为已部署

步骤二:授予ARMS资源的访问权限

  1. 打开云资源访问授权页面,完成授权操作。

  2. 重启ack-onepilot组件下的所有Pod。

    1. 容器服务管理控制台集群页面,单击目标集群名称,打开集群管理页面。

    2. 在左侧导航栏,选择工作负载>无状态

    3. 重新部署命名空间为ack-onepilot的所有Deployment。

      部署完成后,可在容器组页面确认相关Pod(命名空间为ack-onepilot)的状态是否均为Running

步骤三:为应用开启应用监控

  1. 在集群管理页面的左侧导航栏,选择工作负载>无状态,或者选择工作负载>有状态

  2. 根据需要创建新的应用,或者更新已有应用。

    在应用的YAML配置文件中为Pod添加Label即可开启应用监控。相关Label如下:

    labels:
      armsPilotAutoEnable: "on"      #开启应用监控
      armsPilotCreateAppName: "<your-deployment-name>"    #请将<your-deployment-name>替换为您的应用名称
      one-agent.jdk.version: "OpenJDK11"    #如果应用的JDK版本是JDK 11,则需要配置此参数
      armsSecAutoEnable: "on"    #如果需要接入应用安全,则需要配置此参数
    说明
    • Label请添加在Pod的metadata下,例如配置Deployment时,需添加在spec>template>metadata下。

    • 对于已有应用,更新Label后请重启应用。

    创建Java应用并开启ARMS应用监控的完整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
            armsPilotAutoEnable: "on"
            armsPilotCreateAppName: "arms-springboot-demo"
            one-agent.jdk.version: "OpenJDK11"
        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
            armsPilotAutoEnable: "on"
            armsPilotCreateAppName: "arms-springboot-demo-subcomponent"
            one-agent.jdk.version: "OpenJDK11"
        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
    ---

步骤四:查看应用监控数据

开启ARMS应用监控后,可以在ARMS控制台的应用监控页面查看数据。

  1. 在集群管理页面的左侧导航栏,选择工作负载>无状态,或者选择工作负载>有状态

  2. 找到要查看监控数据的具体应用,单击对应操作列中的ARMS控制台

  3. 查看应用监控数据。

    ARMS应用监控包括自动发现应用拓扑、捕获异常事务和慢事务、实时诊断性能等功能。关于如何使用ARMS应用监控,请参见ARMS应用监控

    应用监控

相关文档

为容器服务Kubernetes版Java应用安装探针