共计 3818 个字符,预计需要花费 10 分钟才能阅读完成。
引言
阿里云实时计算 Flink 作为一款业余级别的高性能实时大数据处理系统,它在各种业务场景中都施展了要害的作用。丰盛而简单的上下游零碎让它可能撑持实时数仓、实时风控、实时机器学习等多样化的利用场景。然而,随着零碎的复杂性减少,用户在日常应用中往往须要面临诸如简单的数据开发报错剖析、工作运行报错解决、工作运行调优等疑难问题。
然而,因为谬误日志剖析透出和全链路异样诊断能力方面存在肯定的有余。这些问题通常较难通过自助机器人进行拦挡和排查。由此,用户不得不通过提交工单等形式寻求反对,这种状况又会导致人工服务单量大幅上涨,给运维团队带来了不小的压力。
为了解决这些问题,咱们设计了一款数智运维工具:Flink 智能诊断(Advisor)。这个工具的指标是解决用户在应用 Flink 全托管产品全生命周期中可能遇到的各种难题。Flink 智能诊断通过精准的错误诊断和优化倡议,可能晋升用户应用 Flink 的体验,升高了对人工服务的依赖。
问题合成
通过对大量的 Flink 用户案例剖析,咱们将常见的 Flink 的问题分成 谬误日志剖析、异样剖析(影响作业以后运行)、危险剖析(不影响以后运行) 三个大类,并为其制订了明确的剖析我的项目。
谬误日志剖析
剖析内容为以后作业抛出的日志栈,剖析蕴含两个阶段:
- 开发阶段: 开发状态的异样日志栈剖析,如常见的语法错误、表模式配置谬误等。
- 运行 阶段: 作业运行过程中产生的异样日志栈剖析,如上游 binlog 过期、Time 字段存在 Null 脏数据等。
异样剖析
次要剖析内容为影响作业以后运行的问题,剖析蕴含三个阶段:
- 启动阶段: 启动文件剖析、依赖的云资源剖析、数据源权限探测、网络分析、Session 集群剖析等。
- 运行阶 段: Checkpoint 查看、权限查看、状态查看等。
- 进行阶段: 进行速度剖析。
危险剖析
次要剖析内容为不影响作业运行的问题,剖析蕴含两个阶段:
- 配置阶段:JobGraph 查看、版本查看、HA 查看等
- 运行阶段:Checkpoint 查看、作业运行环境查看等。
核心技术
工程架构
Flink 智能诊断的技术架构分为 数据层、服务层和业务层:
数据层
向服务层提供诊断所需的实时数仓能力,它将根底集群(Kubernetes)、产品引擎(VVP&Flink)的根底数据,通过大数据 &AI 计算引擎进行 ETL、聚类、剖析,最终将数据存储到数智平台的实时数仓中。这些数据蕴含用户 Flink 作业全生命周期的残缺可观测数据,为剖析用户全托管 Flink 产品提供底层数据反对。
服务层
服务层提供了两种能力,别离为谬误日志剖析服务,用于剖析用户开发、运维过程产生的实时日志信息;以及作业诊断服务,提供更多纬度的数据分析能力,蕴含数据层提供的 Flink 全生命周期数据。两种能力通过接口层提供谬误日志诊断、作业衰弱分、作业深度诊断服务,为业务层提供多样的作业探查能力提供底层反对。
- 谬误日志剖析服务:借助数智平台提供的日志聚类 & 举荐算法,建设服务于 Flink 业务场景的谬误日志知识库,积淀了 用户报错信息输出 – 谬误日志库聚类日志 – 产研 /SRE 剖析 – 日志打标 – 回馈用户解决方案 这样一套欠缺的谬误日志分析方法。相比于传统工单形式,谬误日志诊断服务买通用户问题直接触达产研的渠道,真正帮忙用户解决面临的高优报错问题,进步了用户问题解决的效率。谬误日志诊断服务通过引入日志聚类能力,解决传统日志剖析场景通过正则匹配形式面临的信息拟合准确度问题以及海量信息去重的难题。其余对于日志聚类细节会在技术创新局部详解。
- 作业诊断服务:调度引擎是智能诊断的大脑,通过读取数据层 Flink 残缺生命周期的数据,会定期轮训执行决策树,并产出诊断后果。决策树中积淀了 Flink 产研 /SRE 数载打磨 Flink 产品积淀下来的专家教训,蕴含作业报错、作业性能、作业配置、底层运行环境危险等。将这些作业面临的危险通过数条诊断项模式透出给接口层,帮忙用户实现全托管、免运维的产品体验。
业务层
通过调用接口层封装了不同模式的 Flink 诊断数据,实现了多入口的数据查问能力,包含 VVP(阿里云实时计算 Flink 用户作业控制台)、钉钉答疑机器人和 ABM 诊断等。不同应用方通过以上入口获取到 Flink 作业的异样信息以及解决方案,最终帮忙终端解决作业异样,助力 Flink 实时计算产品稳固晦涩运行。Flink 智能诊断中日志聚类 & 举荐局部算法侧整体链路如图所示,整体分为两个阶段:
- 常识积淀:面向大量日志,通过算法提取要害信息并积淀在知识库中。
- 日志诊断:通过报错日志内容,从知识库中匹配相应的起因和解决方案。
次要提供两大外围能力:
- 诊断能力:实时为谬误日志匹配相应的起因和解决方案,提供日志诊断能力。
- 自动化剖析能力:定时对未命中谬误日志进行剖析,晋升专家教训集成效率。
技术创新
诊断能力
日志实时诊断面临的最大问题是日志数量宏大且信息碎片化重大,无奈无效提取要害信息。为了解决这个问题,Advisor 建设了面向 Flink 谬误日志的日志知识库,通过算法提取日志中的信息,并联合专家教训进行聚合,积淀要害信息。日志聚类算法次要流程如下:
- 冗余信息荡涤[日志预处理和编码]:去除非结构化信息,缩小信息烦扰。
- 日志特色构建[分词 & 特征选择]:提取日志特色,将日志转化为结构化表征。
- 档次聚类:基于日志特色间的类似度,对日志进行聚合。
- 联合标注:联合专家教训对类别进行调整和细化,晋升后果准确性。
当日志诊断算法服务被触发时,算法的匹配逻辑如下:
- 规定:优先依据 Flink 产研 /SREs 事后定义的规定匹配相应的起因及解决方案。
- 算法:计算日志内容与知识库中类别的类似度对日志进行归类,给出对应的起因和解决方案。
无关日志诊断相干的原理能够参考 基于 Flink ML 搭建的智能运维算法服务及利用,如需更进一步体验日志聚类,能够参考 SREWorks 开源的日志聚类算法SREWorks v1.5 版本公布 | 基于实时作业平台的日志聚类开源。
自动化剖析能力
为了可能升高专家教训集成和产品化的门槛,晋升产研共建的效率,Advisor 构建了日志自动化剖析能力。
- 定时收集产品未命中的谬误日志信息
- 联合知识库中积淀的后果以及专家教训对未命中的谬误日志进行聚类,将海量日志聚合成数量无限的日志类
- 依据类别调用频率进行排序
日志自动化剖析能力带来的外围劣势如下:
- 实时性:可能帮忙产研和 SRE 实时感知日志匹配状况。
- 高效性:明确给出了产品以后无奈解决的日志类别,给产品功能完善提供了明确的方向。同时算法还能剖析已有规定的有余,实现查漏补缺。
- 低门槛:算法对海量日志进行了去重并给出了关键词,升高了产研的标注老本和门槛。
性能实战
开发态谬误日志剖析
在 Flink 全托管开发控制台作业开发页面,您能够应用开发态谬误日志剖析:
- 登录实时计算控制台。
- 在 Flink 全托管 页签,单击指标工作空间 操作 列下的 控制台。
- 在左侧导航栏上,抉择 利用 > 作业开发。
- 编写 SQL 后,点击验证,可查看谬误日志的剖析。
实时计算控制台:
https://realtime-compute.console.aliyun.com/console/cell
查看衰弱分
在 Flink 全托管开发控制台作业运维页面,您能够查看作业的衰弱分
- 登录实时计算控制台。
- 在 Flink 全托管 页签,单击指标工作空间 操作 列下的 控制台。
- 在左侧导航栏上,抉择 利用 > 作业运维。
- 您能够查看以下信息。
实时计算控制台:
https://realtime-compute.console.aliyun.com/console/cell
查看运行态日志剖析
在 Flink 全托管开发控制台作业运维页面,您能够应用开发态谬误日志剖析
- 登录实时计算控制台。
- 在 Flink 全托管 页签,单击指标工作空间 操作 列下的 控制台。
- 在左侧导航栏上,抉择 利用 > 作业运维。
- 单击指标作业名称。
- 在作业详情页面,单机 作业探查。
- 在右边可切换运行日志、启动日志、异样信息可查看运行态日志剖析。
实时计算控制台:
https://realtime-compute.console.aliyun.com/console/cell
对作业进行诊断
在 Flink 全托管开发控制台作业运维页面,您能够通过诊断性能,查看作业具体的危险起因及平台所给的倡议。
- 登录实时计算控制台。
- 在 Flink 全托管 页签,单击指标工作空间 操作 列下的 控制台。
- 在左侧导航栏上,抉择 利用 > 作业运维。
- 单击指标作业名称。
- 在作业详情页面右上角,单击 诊断。
- 在页面左侧,查看诊断后果和优化倡议。
总结
Flink 智能诊断的外围能力次要体现在:1、产品体验:产品控制台开发引入了秒级实时报错诊断性能,笼罩了作业从开发态到运维态的全流程,不便用户自助解决问题,升高工单量。2、技术创新:采纳了日志聚类和举荐算法来代替传统的正则表达式,不仅解决了海量日志“去重”难题,同时也大幅升高了专家业务教训的集成门槛。3、根因倡议:笼罩异样场景,提供 100% 精确匹配异样起因诊断以及解决方案,麻利公布热更新即刻失效。4、产研共建:智能诊断是 SRE、研发、服务团队、产品多团队联结共建的后果,属于全链路专家教训产品化的产物,已造成常态化运作及保护机制,保障继续迭代优化。Flink 智能诊断上线至今,在用户 PV、问题覆盖率等几个方面都获得了较好的阶段性后果:
- 每个 Flink 用户均匀每天应用诊断 3.5 次。
- 作业运维类征询工单(报错日志 & 运行异样)降落了 28%。