全部产品
云市场
云游戏

通过ASK集成ARMS监控

更新时间:2020-07-29 15:01:31

本文主要为您介绍如何为运行在ECI上的应用集成ARMS监控。

关于ARMS

应用实时监控服务 (Application Real-Time Monitoring Service, 简称ARMS) 是一款应用性能管理产品,包含前端监控,应用监控和Prometheus监控三大子产品,涵盖了浏览器,小程序,APP,分布式应用和容器环境等性能管理,能帮助你实现全栈式的性能监控和端到端的全链路追踪诊断, 让应用运维从未如此轻松高效。

前提条件

应用监控(arms-pilot)

ARMS 应用监控是一款应用性能管理(Application Performance Management,简称 APM)产品。您无需修改代码,只需为应用安装一个探针,ARMS 就能够对应用进行全方位监控,帮助您快速定位出错接口和慢接口、重现调用参数、发现系统瓶颈,从而大幅提升线上问题诊断的效率。

1、安装 ARMS 应用监控组件

登陆容器服务管理控制台,点击左侧导航栏 市场 > 应用目录,搜索ack-arms-pilot。

arms-pilot

点击参数页,选择右侧安装arms-pilot的目标集群,并填写accessKey和accessKeySecret,点击创建。

2

创建完成后,在Serverless集群的集群详情中,点击 工作负载 > 无状态,切换至arms-pilot命名空间,可以看到组件已经安装完成。

3

2、为应用开启 ARMS 应用监控

  • 新建应用开启 ARMS 应用监控

容器服务管理控制台左侧导航栏选择 工作负载 > 无状态,右上角单击 使用模板创建 进行创建。

4

使用模板创建页面上选择命名空间示例模板,并在模板(YAML格式)中将以下annotations添加至spec > template > metadata层级下。

annotations:
  armsPilotAutoEnable: "on"
  armsPilotCreateAppName: "<your-deployment-name>"

5

以Java应用Spring Cloud Eureka Server为例,开启ARMS应用监控的完整YAML示例模板如下:

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: register-server
spec:
  replicas: 3
  serviceName: register-server
  selector:
    matchLabels:
      app: register-server
  template:
    metadata:
      labels:
        app: register-server
      annotations:
        armsPilotAutoEnable: "on"
        armsPilotCreateAppName: "register-server" 
    spec:
      containers:
        - name: register-server
          image: registry.cn-hangzhou.aliyuncs.com/shuangling/eureka-server:v1
          imagePullPolicy: Always
          env:
          - name: EUREKA_DEFAULT_ZONE
            value: "http://register-server-0.register-server:8000/eureka/,http://register-server-1.register-server:8000/eureka/,http://register-server-2.register-server:8000/eureka/"
          - name: JVM_OPTS 
            value: " -Xms1024m -Xmx1536m "
          - name: MY_POD_NAME
            valueFrom:
              fieldRef:
                fieldPath: metadata.name
          ports:
            - name: http
              containerPort: 8000
              protocol: TCP
          readinessProbe:
            httpGet:
              path: /actuator/health
              port: 8001
              scheme: HTTP
            failureThreshold: 3
            initialDelaySeconds: 60
            periodSeconds: 10
            successThreshold: 1
            timeoutSeconds: 10
          volumeMounts:
          - mountPath: /Charts
            name: data
      volumes:
      - name: data
        emptyDir: {}
  podManagementPolicy: "Parallel"
---
apiVersion: v1
kind: Service
metadata:
  name: register-server
  labels:
    app: register-server
spec:
  clusterIP: None
  type: ClusterIP
  ports:
    - port: 8000
      targetPort: http
      protocol: TCP
      name: http
  selector:
    app: register-server

  • 已有应用开启 ARMS 应用监控

容器服务管理控制台的集群详情页 工作负载 > 无状态/有状态 中,点击具体负载条目的 更多 > 查看Yaml

6

将以下annotations添加至spec > template > metadata层级下, 并点击更新。

annotations:
  armsPilotAutoEnable: "on"
  armsPilotCreateAppName: "<your-deployment-name>"

7

更新后需要一定时间重建容器组,请等待所有容器组滚动更新完毕后再点击ARMS控制台按钮进行查看。

3、应用监控查看

成功开启ARMS应用监控后,在容器服务管理控制台左侧导航栏选择工作负载 > 无状态对应的无状态应用详情行中,点击 ARMS控制台按钮跳转。

8

点击进入后可查看ARMS各项应用监控指标。

9

Prometheus监控(arms-prometheus)

ARMS Prometheus监控全面对接开源Prometheus生态,支持类型丰富的组件监控,提供多种开箱即用的预置监控大盘,且提供全面托管的Prometheus服务。借助ARMS Prometheus监控,您无需自行搭建Prometheus监控系统,因而无需关心底层数据存储、数据展示、系统运维等问题。

1、安装ARMS Prometheus监控组件

登陆容器服务管理控制台,点击左侧操作栏 > 市场 > 应用目录,搜索ack-arms-prometheus。

ack-arms-prometheus

点击参数页,选择右侧安装arms-prometheus的目标集群,替换左侧配置文件中的accessKey和accessKeySecret,点击创建。

arms-prometheus

2、监控查看与配置

组件安装完毕后,点击左侧导航栏集群 > 集群名称/ID, 进入集群信息页。点击集群信息页右上角Prometheus监控

Prometheus

在ARMS的Prometheus监控页面中,可以在大盘列表中查看监控项,在左侧接入配置列表中自定义监控接入项。

prom-demo1

点击大盘列表中的监控项,可以查看监控的具体信息。

deplay

ARMS Prometheus监控兼容并提供三种主流采集规则的实现,包括标准开源prometheus.yaml采集规则配置文件、适合自定义K8s内监控的采集规则ServiceMonitor、以及默认采集规则Annotation。

  • 标准开源prometheus.yaml

应用实时监控服务ARMS控制台,点击集群名进入集群监控页,在左侧导航栏设置 > Prometheus设置进行prometheus.yaml的更新与保存。

ARMS Prometheus监控无需重启,使用prometheus.yaml配置文件即可动态更新采集规则。

prom-ask

  • 自定义K8s内监控的采集规则ServiceMonitor

应用实时监控服务ARMS控制台,点击集群名进入集群监控页,在左侧导航栏设置 > 服务发现 > 添加ServiceMonitor进行K8s集群内应用业务数据的监控。

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  # 填写一个唯一名称
  name: tomcat-demo
  # 填写目标命名空间
  namespace: default
spec:
  endpoints:
  - interval: 30s
    # 填写Prometheus Exporter对应的Port的Name字段的值
    port: tomcat-monitor
    # 填写Prometheus Exporter对应的Path的值
    path: /prometheus-metrics
  namespaceSelector:
    any: true
  selector:
    matchLabels:
      #填写service.yaml的label字段,用来定位目标service.yaml
      app: tomcat

  • 默认采集规则Annotation

在Deployment文件里无需编写多行代码,仅需增加以下3个Annotation注解即可。

annotations:
          prometheus.io/scrape: "true"
          prometheus.io/port: "9090"
          prometheus.io/path: "/metrics"

更多信息:

查看 Prometheus 监控指标配置Prometheus监控采集规则