文档章节

亿级高并发系统的监控与报警

个推
 个推
发布于 2016/04/11 15:28
字数 1700
阅读 124
收藏 13

什么是系统监控

对于功能简单,用户量较少的软件系统,大部分公司不需要额外的监控系统来保证公司业务的正常运行而当公司发展到一定程度,系统越来越多元化,单一系统越来越复杂面对的用户数量越来越多为了能实时保证系统的正常与稳定和对外业务的实时监控,大部分互联网公司都会根据自己的系统架构和业务级别来设计并开发一套监控系统,例如阿里巴巴的"鹰眼"系统

 

个巡 - 个推系统监控

随着个推业务的不断扩展,用户量不断的增加个推急需一套完整的监控系统来实时保证系统和业务的正常运转系统层面上,个推必须保证上亿用户在同时接入时的系统稳定和正常业务层面上,个推需要通过实时数据来反应每天的业务增长和下降个巡就是在这时孕育而生了。

 

系统难点与设计

多元化的数据

基于推送业务,个推扩展出许多独立运行的系统,而且每个系统的监控数据也不一样为了保证系统的稳定和可扩展性,我们将所有数据来源分成了两类一类为基于JMX的可配置型数据,另一类为独立封装的接入型数据基于两种数据的特性,JMX数据设计为去主动收集,独立封装数据设计为被动接收

庞大的节点分布

面对大量的用户,个推需要布置许多节点在不同的地域以保证业务的实时性面对大量的节点,并发型的数据收集和接收设计是唯一方案并且基于不同的数据来源我们也需要封装不同类型的线程和线程池但大量多线程并发的带来的另一难点就是,共享资源的设计与分配,原子操作的保证与回滚,以及数据收集的准确性基于此难点,代码结构上采用Producer-Consumer模式,以及进程与线程的设计思路

复杂的业务逻辑

监控系统的另一功能就是能实时反应出公司业务的发展趋势并及时报警为了保证个推的每一项决策都能反应在用户量与业务量上,我们的监控系统收集了大量的系统接入以及不同种类请求的数据基于这些数据,许多分析策略和报警策略需要写入程序,因此使得业务逻辑异常复杂动态的加载不同策越,Strategy 设计模式成为不二选择.

实时性的需求

监控系统的一大特性就是能够及时对异常数据进行报警,以及对大量数据的秒级收集,分类,分析和展示因此,内存数据库(couchbase)和数据搜索引擎(elasticsearch)成为保证系统实时性的关键性中间键

系统层面上,集成了包括Database, couchbase, elasticsearch, flume, kafka等一系列外部工具

代码层面上通过试用不同的设计模式来帮助整套系统能够更好的兼容不同的数据,保证系统的稳定运行和数据的准确抓取和展示

 

个巡的特点

异常日志报警

当系统有异常日志时, 会实时同步到个巡的ES。个巡一旦监控到有异常日志时,就会马上发告警信息给相应人员。这样我们会实时收到系统异常的问题,为及时处理线上的问题提供了必要条件。

 

周期性的比较

对于某些监控点,每天都应该有一个固定的趋势,如下图所示。我们通过前7天的数据更新这个趋势,当线上数据不符合这个趋势的时候,就发告警信息。

 

自监控

个巡是用来监控线上系统的,而个巡也是线上系统的一部分,那么个巡怎么做到自己监控自己呢?我们使用自动修改阀值的方式做到自监控。当修改阀值后,个巡会发送告警邮件,然后10分钟后再把阀值改成原来的样子,然后我们会收到恢复正常的邮件,并且整个过程是自动。所以当我们收不到自告警的邮件时,个巡本身就有问题了。

开发总结

相信很多项目都会遇到以上所提到的四种问题实时上很多系统在开发的紧张过程中也难以从全局去审视和总结一些问题或经验在这里我们仅提供其中一个视角去分析一个庞大的系统:当数据来源多元化的时候,开发人员务必保证在所有数据进入系统业务逻辑前的统一性,也就是常见的数据封装,这样才能保证在多变的需求环境下系统核心模块的稳定性;庞大的数据节点所带来的主要问题则为数据流的稳定性,因此在数据流传入和接受之间加入一层(也就是此系统的Producer-Consumer)来保证数据流的稳定性和可控性变得异常重要复杂的业务逻辑是软件开发中最常见的问题,很多经典书籍都专门讨论过但实际开发中,也别是开发周期较紧迫的时候,很难有一套具体且通行的解决方案,在个巡的开发中,我们也只能根据需求和业务逻辑来制订Strategy代码框架实时性常常会因为数据量的增大而受到印象,在个巡的开发中我们采用的原则是数据分开存储,然后在根据不同的数据应用采用不同的数据库

© 著作权归作者所有

共有 人打赏支持
个推
粉丝 25
博文 61
码字总数 109851
作品 0
杭州
私信 提问
小米开源监控系统OpenFalcon应对高并发7种手段

小米开源监控系统OpenFalcon应对高并发7种手段 原创 2016-04-01 秦晓辉 高可用架构编者按:本文是秦晓辉在 3 月 27 日数人云“百万并发”活动的演讲,授权「高可用架构」首发。转载请注明来自...

tantexian
2016/07/18
526
0
百度大规模时序数据存储(一)| 监控场景的时序数据

作者简介 运小尧 百度高级研发工程师 负责百度运维大数据存储平台的设计和研发,致力于追求大规模存储系统的高性能和高可用。 干货概览 百度运维大数据平台的时序数据存储系统(Time Series...

g2v13ah
2017/10/20
0
0
架构技术实践系列文章

架构技术实践系列文章: 长虹李玮:老牌消费电子企业如何拥抱Docker 徐汉彬:日请求过亿的Web系统PHP7升级实践 窦威:AcFun的视频架构演化实践 傅鸿城:QQ亿级日活跃业务后台核心技术揭秘 宁...

cccyb
2016/06/16
14
0
移动端家庭监控的视频技术

安全问题一直备受关注,人们生活节奏的加快和生活水平的提升,进一步促进人们安全关键的改变,尤其近年来民用安全市场的走俏,家用安全设备逐步走进消费者家中,如何构建一套自己的家庭安保系...

AnyChat
2014/12/30
240
0
如何测试MTOP系统配置的邮箱是否正常启用?

我在Linux环境下搭建了一套MTOP监控系统,系统已经正常运行,报警邮箱也按要求配置完成,但是由于系统初期并没有高并发或者慢查询等问题,所以一直没法知道配置的报警邮箱是否可用,MTOP系统...

匀云
2016/05/16
125
1

没有更多内容

加载失败,请刷新页面

加载更多

钢铁侠自曝:特斯拉“哨兵模式” 来了!

北京时间1月23日消息,特斯拉车主可能很快就可以查看和记录汽车在无人看管时受到的损坏。 一位特斯拉车主在Twitter上向特斯拉CEO埃隆·马斯克(Elon Musk)抱怨称,他的车门凹进去了一大块,希...

Linux就该这么学
33分钟前
3
0
Java基础教程,第十一讲,阻止继承与抽象类

上一节课我们学习了Java中的继承语法,以及如何继承中的方法重写和super()关键字,今天我们将学习一下如何阻止继承以及抽象类。 课程内容 阻止继承:final类和方法 有些时候我们希望阻止某个...

程序员补给栈
46分钟前
1
0
mount命令

mount命令可以将分区挂接到Linux的一个文件夹下,从而将分区和该目录联系起来,因此我们只要访问这个文件夹,就相当于访问该分区了。 mount [-t vfstype] [-o options] device dir loop:用来...

Danni3
52分钟前
1
0
推荐一款接口 API 设计神器!

今天栈长给大家推荐一款接口 API 设计神器,传说中的,牛逼哄洪的 Swagger,它到底是什么?今天为大家揭开谜底! Swagger是什么? 官网:https://swagger.io/ Swagger 如官网所示,它是最好的...

Java技术栈
今天
10
0
AMD直奔5nm!这一步棋下得妙

AMD今年将推出采用7nm工艺的第二代EPYC霄龙、第三代Ryzen锐龙处理器,其中后者已经在CES 2019上公开首秀,性能追评i9-9900K,功耗则低得多。 虽然被称为“女友”的GlobalFoundries临时决定放...

linuxCool
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部