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

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

首先需要将应用部署至容器服务K8s集群,以便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

步骤二:为应用安装Prometheus Agent

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

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

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. 打开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配置告警。后续告警配置页面会跳转至Prometheus监控告警配置页面,详情请参见创建Prometheus监控报警
  7. 单击右上角的保存图标,在Save As...对话框中输入大盘名称,并选择集群,然后单击Save保存大盘和图表。您可根据需要自行创建多个大盘和图表。
    Save Grafana Dashboard

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

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

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

执行结果

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