ARMS Prometheus 监控可以通过 ARMS Prometheus Grafana 大盘来展示监控数据,并且支持自定义创建 Grafana 大盘和从 Grafana 官网导入大盘两种方式。本文主要介绍自定义 Grafana 大盘来展示监控数据的方式。

步骤一:将应用部署至阿里云容器服务 K8s 集群

首先需要将应用部署至容器服务 K8s 集群,以便 ARMS Prometheus 监控抓取 JVM 数据。

  1. 逐行运行 buildDockerImage.sh 中的以下命令。
    mvn clean install -DskipTests
    docker build -t <本地临时Docker镜像名称>:<本地临时Docker镜像版本号> . --no-cache
    sudo docker tag <本地临时Docker镜像名称>:<本地临时Docker镜像版本号> <Registry域名>/<命名空间>/<镜像名称>:<镜像版本号>
    sudo docker push <Registry域名>/<命名空间>/<镜像名称>:<镜像版本号>
    例如:
    mvn clean install -DskipTests
    docker build -t promethues-demo:v0 . --no-cache
    sudo docker tag promethues-demo:v0 registry.cn-hangzhou.aliyuncs.com/fuling/promethues-demo:v0
    sudo docker push registry.cn-hangzhou.aliyuncs.com/fuling/promethues-demo:v0
    此步骤构建了名为 promethues-demo 的 Docker 镜像,并将镜像推送至阿里云 Docker Registry。
  2. 登录容器服务 Kubernetes 版控制台
  3. 在左侧导航栏选择集群 > 集群,在集群列表页面上的目标集群右侧操作列单击控制台
    K8s Cluster Console Button
  4. 在左侧导航栏选择工作负载 > 部署,在页面右上角单击创建,并在使用文本创建页签上填写以下示例内容。
    说明 以下配置文件中的 prometheus.io/portprometheus.io/path 的值分别为应用中暴露的 Prometheus 监控端口和路径。
    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
      name: prometheus-demo
    spec:
      replicas: 2
      template:
        metadata:
          annotations:
            prometheus.io/scrape: 'true'
            prometheus.io/path: '/prometheus-metrics'
            prometheus.io/port: '8081'
          labels:
            app: tomcat
        spec:
          containers:
          - name: tomcat
            imagePullPolicy: Always
            image: registry.cn-hangzhou.aliyuncs.com/fuling/promethues-demo:v0
            ports:
            - containerPort: 8080
              name: tomcat-normal
            - containerPort: 8081
              name: tomcat-monitor
    此步骤将 promethues-demo 这个 Docker 镜像部署至容器服务 K8s 集群中。
  5. 在左侧导航栏选择服务发现与负载均衡 > 服务,在页面右上角单击创建,并在使用文本创建页签上填写以下内容。
    apiVersion: v1
    kind: Service
    metadata:
      labels:
        name: tomcat
      name: tomcat
      namespace: default
    spec:
      ports:
      - name: tomcat-normal
        port: 8080
        protocol: TCP
        targetPort: 8080
      - name: tomcat-monitor
        port: 8081
        protocol: TCP
        targetPort: 8081
      type: NodePort
      selector:
        app: tomcat

步骤二:为应用安装 ARMS Prometheus Agent

  1. 登录 ARMS 控制台
  2. 在左侧导航栏中单击 Prometheus监控
  3. Prometheus监控页面顶部选择容器服务 K8s 集群所在的地域,并在目标集群右侧的操作列单击安装
    说明 如果安装失败,请多次尝试安装直至成功。如果多次尝试后依然失败,请联系我们的钉钉账号 23148410 进行解决。

步骤三:为应用配置 Prometheus 监控采集规则

ARMS Prometheus Agent 安装完成后,会默认监控CPU信息、内存信息、网络信息等。如果您需要监控默认数据外的其他数据,例如订单信息,那么需要为应用配置 Prometheus 监控采集规则。

  1. 在目标集群右侧的操作列单击设置
  2. 为应用配置 Prometheus 监控采集规则分为以下两种情况。
    • 如果您需要监控部署在 K8s 集群内的应用的业务数据,例如订单信息,可以在配置详情页签上单击添加ServiceMonitor,并在新增ServiceMonitor 对话框中参考以下示例内容进行填写。
      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
    • 如果您需要监控部署在 K8s 集群之外的业务数据,如 Redis 连接数时,可以在配置详情页签上单击编辑prometheus.yaml 配置原生的 prometheus.yaml 文件,并在编辑prometheus.yaml 对话框中参考以下示例内容进行填写。
      global:
        scrape_interval:     15s
        evaluation_interval: 15s
      scrape_configs:
        - job_name: 'prometheus'
          static_configs:
          - targets: ['localhost:9090']

步骤四:自定义创建 Grafana 大盘

  1. 打开 ARMS Prometheus Grafana 大盘概览页
  2. 在左侧导航栏中选择 + > Dashboard,并在 New Panel 区域框中单击 Add Query
    Create Grafana DashBoard
  3. Query 右侧的下拉列表中选择集群。在 A 折叠面板的 Metrics 下拉列表中选择监控指标,例如:go_gc_duration_seconds
    Grafana Add Query
  4. 单击页面左侧的图表图标,选择大盘的可视化类型,如图形、表格、热点图等,并根据您的需求配置其他参数。
    Create Dashboard Visualization
  5. 单击页面左侧的设置图标,填写图表名称。
    Set Visualization General
  6. 单击页面左侧的铃铛图标,在 Alert 区域单击 Create Alert 配置告警。后续告警配置页面会跳转至 ARMS Prometheus 监控告警配置页面,详情请参见创建 Prometheus 监控报警
  7. 单击右上角的保存图标,在 Save As... 对话框中输入大盘名称,并选择集群,然后单击 Save 保存大盘和图表。您可根据需要自行创建多个大盘和图表。
    Save Grafana Dashboard

步骤五:进行数据调试监控复杂指标

如果需要监控涉及复杂运算的指标,您需要在 ARMS Prometheus 监控中进行数据调试,从而得到相应的 PromQL 语句。

  1. Prometheus监控页面,单击目标集群右侧的操作列的设置
  2. 单击数据调试,跳转至 ARMS Prometheus Grafana 的 Explore 页面,您可以在 Metrics 输入框中输入 PromQL 语句进行调试。
    Prometheus Data Debug
  3. 调试成功后,您可以参考上述步骤继续添加大盘或图表,详情请参见步骤四:自定义创建 Grafana 大盘

执行结果

配置完毕后的 ARMS Prometheus Grafana 大盘如图所示。ARMS Prometheus Grafana Dashboard to Customize