2019年6月爱奇艺会员规模突破1亿,爱奇艺的会员服务业务随之迅速增长,同时也带来了机器集群规模的增加,原有的监控体系也暴露出一些问题。数据监控体系是业务维持稳定服务的基石,会员日志监控体系形成闭环,从网络、应用、异常、页面加载多维度监控,极大提高了系统的成功率、稳定性,对会员视频播放、营销、下单等核心功能增强异常感知。

提高定位的效率,快速发现问题,缩短解决问题时间,避免客诉等。爱奇艺会员服务团队基于线上实时日志,抽取相应监控指标,进行了监控体系的迭代。本文将分享一下会员服务团队在日志实时数据监控的探索与实践。

传统监控的痛点

以往监控依赖虚机部署的shell、py脚本,单台虚机异常数目达到阈值,即推送报警,这种方式存在如下问题。

为解决如上痛点,我们实时分析线上日志,采集各业务访问日志、异常日志、Nginx日志、前端日志,四种维度数据上报,衡量应用系统质量的标准得以完善;对四种日志不同指标进行数据监控,各应用具备了分钟级应用的报警能力;搭建日志体系,整个系统有了提取关键线索能力,多维度快速定位问题。问题一旦定位就能通过会员的线上运维规范进行容灾操作:降级,切换通道或限流,从而保证整体的核心链路稳定性,避免客诉、用户报障。

目前会员监控分为基础监控及上层监控,基础监控依赖于shell脚本,进行数据上报,监控机器相关指标(CPU、内存、线程数等);上层监控依赖于各层日志数据,监控各业务的网络状态、成功率、RT时间、业务异常、业务状态码等上层指标,目前已实现分钟粒度报警,5min内快速响应。

技术方案

线上实时日志量是巨大的,当数据量增长到10亿至百亿级别,传统的关系型数据库基本被排除在可选的集数架构之外了,同时基于日志的时间序列特点及公司体系建设情况,经过对功能性、可扩展性、社区活跃度和文档完善度的对比后,我们选择Spark Streaming和Flink作为流计算引擎,选择Druid作为实时分析数据库。Spark Streaming通过微批次将实时数据拆成一个个批处理任务,通过批处理的方式完成各个子Batch,API非常简单灵活。Flink基于原生数据流计算实现,保证Exactly once语义,支持延时数据处理,可以达到毫秒级低延时。Druid是一款开源的为实时数据的亚秒级查询设计的数据存储引擎。主要用于进行OLAP聚合分析。这些工具的API和文档都比较完善,社区活跃度较高,通过服务云实时分析平台(RAP)能够快速搭建,维护成本低。

数据流图

数据采集:虚机中安装Venus-Agent(爱奇艺自研基于Filebeat数据采集)进行实时数据采集,上报至指定kafka集群。

实时处理:会员日志监控90%指标是由实时计算产生的,相关报警数据处理依赖大数据实时分析平台(Realtime analysis platform)进行解析,过滤,处理,聚合之后写入分布式存储当中。

存储:Druid集群在整个会员监控中是集数据存储、展现的数据中心,所有的实时计算结果数据、阈值数据、其他时间序列的数据都要汇总到Druid存储当中。

离线计算:离线计算部分主要处理的是离线的数据表,数据来源为Druid及Mysql集群中,用于每天的日报、周报,用来进行长时间跨度的分析,智能化指标数据训练。

监控相关功能

下图为已有相关功能图:

利用Nginx日志、应用异常日志、应用访问、前端投递日志进行如上不同维度的分析,实现了固定阈值、实时突增等触发方式,热聊、邮件、电话等推送方式。

日志监控

Nginx日志:可获取网络层信息,如:接口、机房、HTTP状态码、域名、IP、RT时间等,我们对这些信息进行实时聚合、监控、报警后二次分析,进行精细化告警,提供排查方向,极大提高排查效率。例如下图中,通过报警截图可知单台机器499状态码占比过高,引起成功率降低,排查方向可确定为这台机器问题,极大提高排查效率。

前端投递日志:后端监控到的响应时间,往往不能完全真实反映用户的网络状况,因此我们在关键业务相关页面,进行接口相关数据投递,从用户侧反映后端接口状态,更具有价值。目前监控维度包括页面加载耗时、后端接口耗时、静态资源耗时等,区分地区、地域、运营商等信息。如通过指标分析出某个运营商、某个地区的用户请求存在较高延时,则可进一步调整对应DNS配置,从用户侧优化网络状态。

业务访问日志:业务返回的状态码,可从业务角度实时监测服务状态,提取ERROR日志,进行实时分析告警;比如会员鉴权业务,Code-Q00508代表平台值不匹配,对应业务可能存在编辑划价错误;实现方式同异常告警相似,同样进行了问题分析定位,给与排查方向。

业务异常日志:对于业务来说,每一次异常都代表了系统间的一个问题,就是隐藏的一次客诉,比如ResourceAccessException超时问题、NEP空指针问题、UnknownHostExcepiton解析问题,都会对线上用户带来影响;

如下报警截图所示,ResourceAccessException异常集中于电信机房,问题出在下游系统中电信机房服务超时,同时提供接口名称,可快速定位问题方,提高排查效率,避免客诉问题。

网络运维数据:以往线上机器数量及流量配比,多依赖于运维经验,容易出现错误;利用Nginx日志,可离线统计每日流量峰值,进一步分析机器数量,提出优化建议,提高机器利用率,避免机器浪费;同时检测Nginx机房流量不均问题,提供予运维人员以数据指导,极大增加了操作的安全性、及时性。

除此之外提供网络拓扑、流量拓扑等功能,也能进一步增加开发人员对网络感知。

遇到的问题

1、数据标准化

处理日志信息首要问题是要统一日志格式,保证采集到数据的准确性,同时会员这边80%的应用部署在虚机上,20%部署在QAE中,监控采集需同时兼容两种部署方式;

·  Nginx日志,提供统一化运维平台,封装Nginx安装、扩容、克隆等操作,内置工具统一Nginx日志模块,统一日志格式;

·  Exception日志,提供通用化配置方案,支持QAE应用及虚机应用,分别采用不同数据流处理,将kafka流合并后统一消费;

·  业务日志,提供统一日志组件,打印request、response相应信息即可。

2、机器采集性能瓶颈,延迟

采集日志客户端(Venus-Agent)部署在应用机器上,目前通过CGroup限制资源使用(默认使用1核128M内存),采集效率依赖于CPU、内存资源等资源,同时也被提取规则的复杂程度所影响。

·  对于大流量应用来说,应尽可能精简提取规则,同时平衡资源等关系 ;

·  精简无用日志打印,尽可能一条请求打印一条日志,避免重复打印;

·  日志流量过大,考虑采样提取。

历史教训 : 

·  20WQPS应用,一条请求打印5条日志,日志量放大至100WQPS,资源集群濒临崩溃;

·  经过总结:经反复实践,对于Nginx机器(8core32G),限制在2core 2G可保证4WQPS 同时采集;

·  对于虚机(6core8G),可维持在1core 512M 进行采集 。

3、减少计算资源,节约成本

计算资源同样需要合理分配,Druid单Task预计能消费15Wqps的消息,增加Task可以提高处理能力。由于Druid自身的partition能力不是特别出色,所以多5倍资源并不能提升5倍的处理能力。所以采取将高QPS的实时数据拆分成多个子Topic的方式,接入Druid多个Datasource,对于百万QPS的Nginx流量来说,有如下两种节约方案,采用第二点方案,拆分多个数据流后,相应计算资源节约了120core。:

·  采样流量数据。优点:改造成本小;缺点:Nginx日志对排查问题极为重要,采样会缺少相应日志;

·  Nginx机器流量拆分,高流量应用Nginx集群独立部署,拆分多个数据流。优点:可避免流量冲击对其他Nginx集群造成影响,保证核心业务的稳定性;缺点:改造成本高,依赖于基础运维体系。

4、Spark Streaming/Flink消费延迟

对于监控系统,报警时间尤为重要,如何保证消费时能平稳进行,不出现延迟尤为重要,将调优Kafka Partition数以及Druid Task数,调整到最优的值。

另外,由于Spark Streaming伪实时,将实时任务拆分成一个个批处理逐一阻塞处理。从中发现SparkStreaming任务中的平均处理时间并不高,常常由于单个Task太慢,导致单批次处理太慢。于是针对实时OLAP、并不关注消息的到达顺序的场景,将spark.streaming.concurrentJobs配置成流任务的并行度,以提高流计算任务并行处理能力。

价值与未来规划

爱奇艺会员服务团队供通用化监控平台,接入方式简单,可快速对系统搭建以上监控体系,并可以面向公司的其他业务团队监控服务。建立完整的跟进机制,多级反馈,提高告警感知,提升排查效率80%以上,预先发现90+次会员客诉问题,客诉率极大降低,监控覆盖400+种异常提供有效告警4800+次。

未来,爱奇艺会员服务团队将从监控阈值智能化、流量问题预测、辅助定位等方面进行进一步优化:

·  监控阈值智能化:将监控向智能化增强,在业务监控的某些环节上代替人工执行和判断的过程。人工维护监控目标和阈值是以经验为参考的;依赖对历史样本数据统计分析、以往问题场景判断,得出依据,系统自动判断哪些目标需要监控、同时智能调整相应阈值策略。

·  流量问题预测:通过对Nginx流量日志的收集,使用智能预测算法模型,收集原有流量数据及收集相应热剧、营销等流量指标,预测服务流量峰值,给开发人员以流量预警机制。

·  辅助定位:监控覆盖更多的链路及模块,将报警关联,智能分析出问题场景,提高分析问题原因准确性,降低报警漏报率、误报率。

猜你喜欢

1、数仓那点事:从入门到佛系

2、SQL语句大全,所有的SQL都在这里

3、Kafka生产者ack机制剖析

4、Spark + AI Summit North America 202006 高清 PPT 全部更新完

过往记忆大数据微信群,请添加微信:fangzhen0219,备注【进群】

爱奇艺在日志实时数据监控的探索与实践相关推荐

  1. 听见用户的声音,爱奇艺全渠道用户反馈分析的探索与实践

    01 前言 随着互联网用户增长拐点的到来,竞争态势更多转变为博弈存量用户,做到极致的用户体验就成为其中关键.用户反馈作为用户对产品体验最直接的表达,是改善及衡量用户体验的重要输入,它具备海量.多样化的 ...

  2. 拥有一亿会员的爱奇艺如何搭建大数据实时分析平台

    生活在信息爆炸时代的我们越来越清晰的认识到海量信息与数据分析的重要性,如提高数据挖掘能力.为运营决策提供关键数据.通过数据分析助力业务创新.在商业决策中的提供较有价值的信息等成为关键,于是大数据分析平 ...

  3. 爱奇艺在 Dubbo 生态下的微服务架构实践

    作者 | 周晓军  爱奇艺中间件团队负责人 导读:本文整理自作者于 2020 年云原生微服务大会上的分享<爱奇艺在 Dubbo 生态下的微服务架构实践>,重点介绍了爱奇艺在 Dubbo.S ...

  4. dubbo 自定义路由_爱奇艺在 Dubbo 生态下的微服务架构实践

    作者 | 周晓军 爱奇艺中间件团队负责人 导读:本文整理自作者于 2020 年云原生微服务大会上的分享<爱奇艺在 Dubbo 生态下的微服务架构实践>,重点介绍了爱奇艺在 Dubbo.Se ...

  5. 爱奇艺智能内容中台|无人值守的应用与实践

    本文为爱奇艺智能内容中台系列稿件的第一弹,接下来我们还会陆续为大家带来爱奇艺在智能内容生产.运营上的一系列探索,敬请期待. 无人值守系统是爱奇艺内容中台的一个重要智能化组件. 首先,对于业务密度大.流 ...

  6. 爱奇艺视频千万级生产 Kubernetes 集群优化实践!

    本文介绍爱奇艺针对视频生产场景.在 Kubernetes(以下简称 K8s) 集群优化方面的实践:如何使高优先级任务获得更多的 CPU 资源,更快完成任务. 01    背景 视频生产集群所面临的一个 ...

  7. 爱奇艺AR应用亮相,联合Nreal探索内容新玩法

    爱奇艺又拿下"一块屏". 近日,爱奇艺宣布推出AR应用,并率先与AR眼镜品牌Nreal合作发布第一款定制版AR应用.通过自制全息内容与AR终端的深度融合,爱奇艺将为用户带来全新的沉 ...

  8. 爱奇艺内容中台之数据中心的设计与实现

    点击"开发者技术前线",选择"星标

  9. 低代码在爱奇艺鹊桥数据同步平台的实践

    前言 为应对软件危机,诞生了软件工程,以期望其达到降低软件生产成本 .改进软件产品质量.提高软件生产率水平的目标.自上个世纪60年代以来,从模块化.面向对象设计到设计模式,从瀑布流模型到敏捷开发,de ...

最新文章

  1. 为什么我十分喜欢 C,却很不喜欢 C++
  2. 不知道当前谁激活键盘时的隐藏键盘方法
  3. 初学数位DP--hdu 2089
  4. 零基础可以学python吗-python零基础能学吗
  5. 1026 Modular multiplication of polynomials
  6. 设计包含min()函数的栈
  7. BZOJ1004 [HNOI2008]Cards 【burnside定理 + 01背包】
  8. P3007 [USACO11JAN]大陆议会The Continental Cowngress(2-SAT)
  9. linux内核通俗理解,简洁明了!高手带你理解ARM-Linux的启动过程
  10. cannot import name ‘Imputer‘ from ‘sklearn.preprocessing‘
  11. Oracle的表使用plsql导出excel文件
  12. PLC网关是什么 PLC网关是做什么的
  13. ubuntu18 搜狗输入法不显示
  14. 生物信息学二级计算机,生物信息学-张红-第二章-计算机基础
  15. NVIDIA GeForce GTX 1060 驱动安装--------TensorFlow系列学习笔记(一)
  16. CTFSHOW: 36D杯 misc ez-qrcode
  17. 73个word使用终极技巧
  18. 自然语言处理NLP星空智能对话机器人系列:深入理解Transformer自然语言处理 Noisy relationships
  19. Halcon算子大全
  20. 计算机网络实验四:配置网络路由

热门文章

  1. 2006部门联欢晚会!
  2. mysql慢查询 如何构造_mysql如何构造慢查询
  3. atthesametime啥意思_aroundthesametime和atthesametime的区别是什么
  4. 零知识证明: 抛砖引玉
  5. linux命令行提交代码以及一些命令行学习
  6. 企业活动 新品发布会做媒体邀约有什么好处,有哪些流程?
  7. java数组循环_Java之循环结构及数组
  8. 为什么要有refreshToken
  9. linux 6.5光驱是什么意思,centos 6.5 把光盘设置为本地yum源
  10. KKB: jquery-图片放大器