Flink系列--Flink监控告警初探

背景

Flink流任务开发完成,然后提交运行就万事大吉了吗?流任务通常是对于数据源源不断的拉取,持续不断的计算,不断更新或者产出结果,任务一旦启动,会长时间运行。所以,任务正常的运行且按照用户想要的逻辑正确的、长时间的稳定运行是流任务保障的核心诉求。

对于当前平台针对任务的运行状态变化提供了监控告警,此方式在任务停止后通知用户任务存在问题,但是任务为何停止,目前只能人工干预通过看日志、重跑任务、分析代码等方式定位,效率较低,可回溯内容较少,对于Flink机制认识不深或者不熟悉的人来说,体验较差。

是否可以在任务运行中监控数据反压情况、io使用情况、数据处理逻辑等,做到提前感知风险,提供实时告警;也可存储监控指标,协助定位问题,提供任务可检测、可维护性,答案是无疑可以的。Flink针对job,task、operate多层次提供了指标监控,可帮助我们针对任务进行全链路监控,提升任务可维护性。

当前业界也有成熟的界面方案: Prometheus(自研或其它时序数据库) + grafana(自研或者其它图表展示组件)。(查看附录链接和示意图)

平台当前任务数较少,考虑投入产出比,当前以针对用户常遇到的问题为出发点,构建监控告警项,帮助用户管理维护Flink作业。

2 Flink metric介绍

Metrics | Apache Flink

主要系统metric截图如下:

核心监控项

3.1 系统指标

除了以下列举的,针对自定义connector或者datastream程序可以添加业务指标,提升作业可维护性。

序号

指标类型

关键metric

描述

1

可用性

如 numRestarts

The total number of restarts since this job was submitted, including full restarts and fine-grained restarts.

2

内存

如 Heap.Used

Heap.Max

The amount of heap memory currently used (in bytes).

he maximum amount of heap memory that can be used for memory management (in bytes).

3

checkpointing

如lastCheckpointDuration

The time it took to complete the last checkpoint (in milliseconds).

4

GC

<GarbageCollector>.Count

<GarbageCollector>.Time

The total number of collections that have occurred.

The total time spent performing garbage collection.

5

流量

如 numBytesOutPerSecond

The number of bytes this task emits per second.

6

CPU

Status.JVM.CPU Load

Status.JVM.CPU Time

The recent CPU usage of the JVM.

The CPU time used by the JVM.

7

网络

如numBuffersInLocalPerSecond

The number of network buffers this task reads from a local source per second.

(Metrics related to data exchange between task executors using netty network communication.)

8

Connector

loopFrequencyHz

The number of calls to getRecords in one secon

...

9

自定义指标

处理逻辑耗时打点

业务出错告警

处理失败的数据占比

过滤数据统计、占比

超时丢弃数据量

3.2 监控维度

作业状态相关

作业性能相关

业务逻辑相关

作业故障

处理延迟

上游数据问题

运行不稳定

数据倾斜

数据丢失

影响可用性的风险因素

(cpu,内存,网络,io等)

性能瓶颈

数据处理出错率高

3.3 监控应用场景

1、监控告警、异常上报

2、问题定位、回溯-> 智能诊断

3、智能运维(自动运维、资源优化)

单个作业全链路监控

平台当前任务数较少,考虑投入产出比,当前以针对用户常遇到的问题为出发点,构建监控告警项,帮助用户管理维护Flink作业。

1、第一步 核心指标监控体系

根据核心指标,构建监控项,进行监控告警配置,提升作业可维护性

如作业运行状态,数据倾斜、反压,source/sink连通性等

指标采集: metricReport & Flink rest api方式获取

示例:参考阿里dataphin

报警原因

报警规则

业务延时过高

当任务运行过程中的延时超过设定时间后,即可触发报警。

TPS超过范围

当任务运行过程中的TPS(Transaction Per Second)超过设定的范围后,即可触发报警。

失败频率超过配置

当任务运行过程中的失败频率超过设定的频率后,即可触发报警。

数据滞留超过配置

当任务运行过程中的数据滞留超过设定的时间后,即可触发报警。

checkpoint失败配置

当任务运行过程中的checkpoint连续失败超过设定的次数后,即可触发报警。

2、第二步 作业评估标准构建

针对作业健康值,作业风险等级的评估指标,提示用户风险,帮助用户优化作业逻辑、作业资源配置,检查运行环境稳定性。

可参考阿里“实时计算FLink”能力

示例:

3、第三步 智能诊断

可以针对收集的指标信息,对于失败的任务进行智能诊断,判断任务运行失败原因,提升问题排查速度,提升运维效率

参考“ 基于 Monitoring REST PI 的 Flink轻量级诊断”中作业诊断章节

 

4、第四步 智能运维

针对资源,任务分配等场景,智能运维,提升作业运行效率和资源利用率等场景

此项要结合任务调度、资源调度(容器化)才可实现

附录

1、Grafana

 

Grafana allows you to query, visualize, alert on and understand your metrics no matter where they are stored. Create, explore, and share beautiful dashboards with your team and foster a data driven culture。

Grafana允许您查询、可视化、告警和了解您的指标,无论它们存储在何处。创建、探索并与您的团队共享漂亮的仪表板,培养数据驱动的文化。

Grafana: The open observability platform | Grafana Labs

2、Prometheus

Prometheus官网上的自述是:“From metrics to insight.Power your metrics and alerting with a leading open-source monitoring solution.”翻译过来就是:从指标到洞察力,Prometheus通过领先的开源监控解决方案为用户的指标和告警提供强大的支持。

https://prometheus.io/docs/introduction/overview/

  • 20
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要安装 Flink 监控告警,您可以按照以下步骤进行操作: 1. 安装 Prometheus:首先您需要安装 Prometheus,它是一个开源的监控系统。您可以从 Prometheus 官方网站下载最新版本的安装包,并按照官方文档进行安装和配置。 2. 配置 Flink:在 Flink 的 conf 文件夹中,找到 flink-conf.yaml 文件,并添加以下配置: ``` metrics.reporters: prom metrics.reporter.prom.class: org.apache.flink.metrics.prometheus.PrometheusReporter metrics.reporter.prom.port: 9250 ``` 这将启用 Flink 的 Prometheus 监控报告器,并将其绑定到本地的 9250 端口。 3. 启动 Prometheus:使用 Prometheus 的命令行工具启动 Prometheus。您可以通过以下命令在 Prometheus 的安装目录下启动它: ``` ./prometheus --config.file=prometheus.yml ``` 这里的 prometheus.yml 是您的配置文件,您可以根据需要进行相应的配置。 4. 配置 Prometheus 数据源:打开 Prometheus 的配置文件 prometheus.yml,添加以下配置: ``` scrape_configs: - job_name: 'flink' static_configs: - targets: ['localhost:9250'] ``` 这将告诉 Prometheus 去抓取位于本地 9250 端口的 Flink 监控数据。 5. 重启 Flink:重新启动 Flink 集群,使配置生效。 6. 访问 Grafana:打开 Grafana 的 Web 界面,并添加一个新的数据源。选择 Prometheus 作为数据源类型,并配置 Prometheus 的地址。 7. 导入仪表盘:在 Grafana 中导入 Flink监控仪表盘。您可以在 Grafana 官方网站或 Flink 社区中找到现成的仪表盘模板,或者自己创建一个仪表盘。 完成上述步骤后,您就可以通过 Grafana 监控和设置告警规则来监控 Flink 集群了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值