背景

随着流量业务的高速发展以及已经到来的5G时代,业务支撑系统的规模不断增大、服务不断增多,业务、应用和系统运行性能指标数据持续以指数级的速度增长,每日计费话单量已突破百亿。系统监控的实时性、准确性的能力不足成为运维工作的瓶颈。

江苏移动IT运维团队以SRE理念为指导,结合实时监控“高并发写入”、“低查询延时,高查询并发”、“轻量级存储”等实际诉求,深入研究时序数据库的特性和适用程度,打造符合自身系统运维特点的性能管理平台,实现百亿级话单处理过程的实时全景监控分析。

时序库选型

目前市场较流行的时序数据库产品有Prometheus、Graphite、InfluxDB、OpenTSDB等,我们比对了这些产品的使用范围、优缺点。

通过比较,我们发现Prometheus最适合搭建BOSS运维监控系统。单个的Prometheus实例就能实现每秒上百万的采样,同时支持对于采集数据的快速查询。Prometheus对于采样数据进行压缩存储,16字节的采样数据平均只需要1.37个字节的存储空间,极大减少了存储资源占用。查询实时数据时,磁盘I/O平均负载小于1%。

性能管理平台架构设计

本方案中运维人员以Prometheus时序库为中心,实现与应用相关的所有实时监控数据的采集、清洗、存储,并实时展现系统总体和各环节、各独立应用处理性能、趋势性的预测和智能分析,准确掌握系统运行健康度。

图1 系统架构

1、根据业务系统的部署,我们在双中心各部署一套Prometheus集群。

2、对于系统、应用日志、Java应用我们采用拉取方式采集指标数据;对于应用、业务、组件的性能指标数据采用推送网关(pushgateway)暂存数据,然后再由Prometheus拉取的方式采集。

3、为保证实时采集和查询的高性能,采集prometheus时序库中保存短期内较近数据,同时写入一份到远程的历史时序库中。

4、可视化展示和实时告警通过负载均衡从prometheus和历史库中采集数据。

适配性改造

在部署和使用过程中我们发现原生Prometheus存在一些不足,为此我们进行了一些适配改造工作。

1、夯实高可用能力:原生的Prometheus部署都是单点的,不足以保证数据可用性,为此我们通过服务注册的方式实现了Prometheus的高可用性。集群启动时每个节点都尝试获取锁,获取成功的节点成为主节点执行任务,若主节点宕机,从节点获取锁成为主节点并接管服务。

图2 高可用能力实现方式

2、优化数据存储方式:在Prometheus节点上保存短周期数据用于告警实时触发和展现,引入InfluxDB用于实时传输并保存长周期的历史数据,保证采集数据的连续性并为后续数据挖掘提供资源支撑。

3、自研改造推送网关组件:在实际使用过程中我们发现推送网关(pushgateway)中的数据有较大概率被重复采集到Prometheus中,容易产生错误的性能数据和误告警。为此我们在Prometheus的采集方法中增加从pushgateway拉取数据后主动删除数据的保障机制,确保数据采集的唯一性。

4、拓展集成数据展示方式:性能数据可视化展示原先采用Grafana原生组件,但是使用过程中发现插件配置灵活性不足,难以展现多种形式关联指标数据的情形。因此我们自研了可视化工具,实现涵盖系统、应用、业务性能等多维度指标的个性化展示,实时掌控系统健康状态。

5、更改时区:原生的Prometheus查询指标时页面显示的指标趋势图是根据GMT时间显示的,与北京时间相差8小时,为此我们将源码中获取时间的方式修改成从本地系统时间获取,成功解决了该问题。

指标采集范围

结合实际运维场景及需求,整体指标采集分为两个方面,性能指标和业务指标:

指标类别

指标采集范围

性能指标

  • 系统层面:主机、网络、容器、NAS的运行状态,包括CPU 的负载,上下文切换、内存使用率、磁盘读写速度、磁盘使用率、磁盘 inode 使用率
  • 应用层面:应用消耗CPU、内存、文件描述符等;应用数据操作时长,获取每个函数的执行耗时;GC频次、暂停时间等
  • 组件层面:Redis、RocketMQ、Zookeeper、Nginx、Coherence性能指标

业务指标

  • 业务指标数据:访问量、成功率、错误率、访问时长等

  • 业务处理数据:处理速度、积压量等

实时展示

通过对各类指标数据加工汇聚,生成BOSS系统健康度统一视图, 涵盖各应用性能、业务量、各类服务调用量及响应时间等,可以灵活通过多种维度实时展示指标数据,支持下钻到具体应用、具体进程性能指标,快速实时掌握第一手运维监控数据,实现“运维监控一张图”,大幅提升系统监控和分析效率,有效节约运维人力资源。

图3 实时全景视图

趋势预测及异常检测

海量的性能时序数据是运维的宝贵数据资产沉淀,对基础数据进行有效的建模分析和规划,辅以合理的算法学习,实现部分场景的智能化分析和监测,将大幅提升运维效能,目前已应用于以下运维场景:

1、性能预测:通过对应用处理速度的实时监控、历史数据比对分析,自动计算应用处理最大速度,实时准确预测完成待处理话单所需时间。

2、业务趋势预测:通过对时序库中存储大量系统和业务指标数据按天、周、月维度进行平均、加权序时平均、移动平均、加权移动平均、特列统计等分析,预测未来话单处理趋势、系统资源利用趋势,为系统容量管理提供合理依据。

3、异常检测:通过对数据进行环比分析、同比分析、均值变化分析、相同时间窗口内数据的均值和标准差分析、局部数据波动分析、周期性特征分析等算法及时发现业务处理异常。

图4 性能预测场景示意

总结与展望

目前性能管理平台能满足每秒10万级的监控指标入库,支撑百亿级话单处理过程的实时监控。可通过对这些海量数据的分析,实现容量、性能、故障的精准定位和预测,并前置性地做好应对措施以规避问题的产生和蔓延。

该性能平台已成功应用在BOSS系统,未来将进一步总结经验并持续改进提升,陆续向其他业务支撑领域和管信领域进行推广。

java时序图工具_基于时序数据库,实现百亿级话单实时全景监控分析相关推荐

  1. java时序图工具_快速学习时序图:时序图简介、画法及实例

    点击上方☝Java编程技术乐园,轻松关注!及时获取有趣有料的技术文章 做一个积极的人 编码.改bug.提升自己 我有一个乐园,面向编程,春暖花开! 一. 什么是时序图? 时序图(Sequence Di ...

  2. java时序图工具_开源在线绘图工具,界面美观,功能丰富,总有一款适合你

    俗话说,一图胜千言,一张小小的图片可以替代大段的文字说明,更可以形象直观地描述业务流程.展示算法...,下面给大家带来几款我最近收藏的开源在线绘图工具. Ant Design Pro 项目地址:htt ...

  3. java时序图工具_时序分析之STA(1)

    一个人的兴趣越广泛,他拥有属的快乐机会就越多,而受命运播弄的可能性也就越小,因为即使失去了某一种兴趣,他仍然可以转向另一种. - -罗素 一. STA 时序分析分为动态时序分析(DTA, Dynami ...

  4. java时序图工具_每日学习:静态时序分析入门面面观

    关注并标星大同学吧 每天1次,打卡学习 积累1个新知识,增1分职场底气 作者称谓:Jack xu 个人介绍:不断学习的数字后端工程师 微信公众号:志芯 半导体知识分享第41期 技能升级,从这里开始 本 ...

  5. java时序图工具_开发必备的小工具,你用过几个?

    今天就简单介绍一下平时用到的一些小工具.首先我平时是用IDEA开发的,所以下面的介绍都是和IDEA相关的.本文主要介绍我平时在哪些场景使用,使用了哪些功能,至于IDEA怎么安装插件和插件有哪些额外的功 ...

  6. Java并发编程实战_阿里P9整理分享的亿级流量Java高并发与网络编程实战PDF

    前言 为了帮助初级开发者快速掌握高并发.网络编程.微服务.海量数据的处理这些实用技术,本文以"理论+范例"的形式对各个知识点进行了详细的讲解,力争让读者在实践中快速掌握相关知识. ...

  7. 如何设计日志系统_架构 - 如何设计一个百亿级日志系统

    " 日志是记录系统中各种问题信息的关键,也是一种常见的海量数据. 日志平台为集团所有业务系统提供日志采集.消费.分析.存储.索引和查询的一站式日志服务. 主要为了解决日志分散不方便查看.日志 ...

  8. java生成iso9660工具_基于数据库的代码自动生成工具,生成JavaBean、生成数据库文档、生成前后端代码等(TableGo v7.0.0版)...

    TableGo_20210212 v7.0.0 正式版发布,此次版本更新如下: 1.新增对DB2数据库的支持 2.新增按字段生成文件,支持把字段.JSON.XML数据转换成任何代码 3.新增大量新的自 ...

  9. java 网站统计工具_基于B/S模式下的JAVA网站流量统计系统

    今日思考,完成一个网站流量统计系统项目,需要实现哪些功能? 此类项目常见描述如下: 传统的网站只是在页面上使用计数器进行简单的访问者数量的统计.随着网站运营规模的扩大,依靠这种简单的数量统计并不能真正 ...

最新文章

  1. 使用css实现瀑布流的效果
  2. Linux学习之CentOS(三十四)--配置域主DNS服务器
  3. Java与WCF交互(一):Java客户端调用WCF服务
  4. 软件工程进度条-第十二周
  5. windows 2008 开机启动 Docker Toolbox 并运行容器
  6. 华为手机获取状态栏高度是错误的_你的华为手机状态栏有HD图标吗?这又代表着什么?看完你就懂了...
  7. 基于springboot+shiro一套可落地实施安全认证框架整合
  8. jquery +ajax 上传加预览
  9. java反射取实体字符串_JAVA反射机制 通过反射 Field类获取和修改对象类的字符串值...
  10. 《流量的秘密 Google Analytics网站分析与商业实战》一2.2 版本选择的标准
  11. 基环树DP(bzoj 1040: [ZJOI2008]骑士)
  12. HTML头标签使用-又一次定向,refresh
  13. Callable接口与runable和Thread类
  14. C#效率优化(2)-- 方法内联
  15. Java迷宫小游戏,老程序员花一天时间完成,你可以吗?
  16. kubernetes(centos7)域名解析失败
  17. [Other]规范的邮件签名格式及HTML代码
  18. android开发split的方法在String中的特殊使用
  19. Python xls转换为xlsx
  20. 骁龙AR2平台解析:分布式架构开启轻量化AR眼镜新时代

热门文章

  1. 使用View modification扩展SAP Fiori应用的一个案例
  2. 如何将bing搜索页面以HTML Mashup的方式嵌入到SAP C4C页面
  3. 实现ABAP条件断点的三种方式
  4. 调用Hybris API时遇到的错误消息Cannot find user with uid如何解决
  5. SAP UI5 main page design
  6. how is AppointmentList.view being loaded in the runtime
  7. 如何使用代码区分service contract和service contract quotation
  8. 如何用ABAP读取LRAW中的数据
  9. an example of Ascii using 问号 as example
  10. 打印user webclient ui浏览历史的工具