本文为您介绍如何通过阿里云ARMS服务收集并查看Flink作业的监控指标,以及如何基于监控指标设置报警。
前提条件
已在E-MapReduce on ACK控制台创建Flink集群,详情请参见快速入门。
已开通阿里云应用实时监控服务ARMS,详情请参见Prometheus实例for容器服务。
配置Prometheus监控
进入Prometheus监控页面。
在EMR on ACK页面,单击目标集群所在行所属ACK集群列的链接。
在左侧导航栏中,选择 。
在Prometheus监控页面,控制台自动安装组件、检查监控大盘。
安装完成后,单击各个页签可以查看相应监控数据。
在Prometheus监控页面,单击右上角的跳转到Prometheus服务。
开启默认服务发现。
在左侧导航栏,单击服务发现。
在服务发现页面,单击配置页签。
在默认服务发现页签,打开kubernetes-pods操作列的开关。
在弹出的对话框中,单击开启。
提交Flink作业,具体操作请参见提交Flink作业。
重要需要在作业YAML的podTemplate中指定Prometheus Metric Reporter对应的annotation。
作业示例如下。
apiVersion: flink.apache.org/v1beta1 kind: FlinkDeployment metadata: name: basic-emr-example spec: flinkVersion: v1_13 flinkConfiguration: state.savepoints.dir: file:///flink-data/flink-savepoints state.checkpoints.dir: file:///flink-data/flink-checkpoints metrics.reporter.prom.factory.class: org.apache.flink.metrics.prometheus.PrometheusReporterFactory serviceAccount: flink podTemplate: metadata: annotations: prometheus.io/path: /metrics prometheus.io/port: "9249" prometheus.io/scrape: "true" spec: serviceAccount: flink containers: - name: flink-main-container volumeMounts: - mountPath: /flink-data name: flink-volume ports: - containerPort: 9249 name: metrics protocol: TCP volumes: - name: flink-volume emptyDir: {} jobManager: replicas: 1 resource: memory: "2048m" cpu: 1 taskManager: resource: memory: "2048m" cpu: 1 job: jarURI: local:///opt/flink/examples/streaming/StateMachineExample.jar parallelism: 2 upgradeMode: stateless
作业运行起来后,可以在服务发现页面的Targets页签中查看到kubernetes-pods的状态,并且可以采集到对应Flink作业的JobManager和TaskManager的指标。
可选:配置Grafana大盘查看指标曲线。
在Prometheus监控页面,单击其他页签。
单击集群Prometheus自身监控页签。
单击在新页面打开。
在左侧导航栏选择 。
重要使用Grafana专家版本才可添加新的仪表盘(Dashboard)。
单击Add new panel。
在Query区域的下拉列表中选择集群,在A折叠面板的Metrics下拉列表中选择您想查看的监控指标,例如:flink_jobmanager_job_lastCheckpointDuration。
在页面右侧的区域,填写Panel title,并根据您的需求配置其他参数。
单击右上角Save,在弹出的对话框中输入大盘名称,并选择集群,然后单击Save。
查看告警
进入告警规则页面。
在EMR on ACK页面,单击目标集群所在行所属ACK集群列的链接。
在左侧导航栏中,选择 。
在Prometheus监控页面,控制台自动安装组件、检查监控大盘。
安装完成后,单击各个页签可以查看相应监控数据。
在Prometheus监控页面,单击右上角的跳转到Prometheus服务。
在左侧导航栏,单击告警规则。
配置告警规则。
在Prometheus告警规则页面,单击创建Prometheus告警规则。
创建Prometheus告警规则,具见请参见通过自定义PromQL创建Prometheus告警规则。
在Prometheus告警规则页面,单击目标告警操作列的告警事件历史。
当报警条件满足时,即可看到相应的报警。