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

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

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

系统难点与设计

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

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

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

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


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

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

个巡的特点

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

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

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

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

原文地址:http://blog.51cto.com/13031991/2108109

时间: 2024-10-24 23:05:46

亿级高并发系统的监控与报警的相关文章

MySQL面试必考知识点:揭秘亿级高并发数据库调优与最佳实践法则

做业务,要懂基本的SQL语句: 做性能优化,要懂索引,懂引擎: 做分库分表,要懂主从,懂读写分离... 数据库的使用,是开发人员的基本功,对它掌握越清晰越深入,你能做的事情就越多. 今天我们用10分钟,重点梳理一遍以下几方面: 数据库知识点汇总: 数据库事务特性和隔离级别: 详解关系型数据库.索引与锁机制: 数据库调优与最佳实践: 面试考察点及加分项. 知识点汇总 一.数据库的不同类型 1.常用的关系型数据库 Oracle:功能强大,主要缺点就是贵 MySQL:互联网行业中最流行的数据库,这不仅

[转]10分钟梳理MySQL知识点:揭秘亿级高并发数据库调优与最佳实践法则

转:https://mp.weixin.qq.com/s/RYIiHAHHStIMftQT6lQSgA 做业务,要懂基本的SQL语句: 做性能优化,要懂索引,懂引擎: 做分库分表,要懂主从,懂读写分离... 数据库的使用,是开发人员的基本功,对它掌握越清晰越深入,你能做的事情就越多. 今天我们用10分钟,重点梳理一遍以下几方面: 数据库知识点汇总: 数据库事务特性和隔离级别: 详解关系型数据库.索引与锁机制: 数据库调优与最佳实践: 面试考察点及加分项. 一.数据库的不同类型 1.常用的关系型数

JAVA架构师大型分布式高并发电商项目实战,性能优化,集群,亿级高并发,web安全,缓存架构实战

现任58到家技术委员会主席,高级技术总监,负责企业,支付,营销.客户关系等多个后端业务部门.本质,技术人一枚.互联网架构技术专家,"架构师之路"公众号作者.曾任百度高级工程师,58同城高级架构师,58同城技术委员会主席,58同城C2C技术部负责人. 内容介绍 1.大数据量时,数据库架构设计原则 2.数据库水平切分架构设计方向 3.用户中心,帖子中心,好友中心,订单中心水平切分架构实践 下面是58沈剑老师的演讲实录 大家好,我是58沈剑,架构师之路的小编,后端程序员一枚,平时比较喜欢写写

Golang亿级高并发实例(代码可直接使用)

可以直接拿去当成一个库来用 举例 package main import "your/path/to/.../Concurrence" //定义一个实现Job接口的数据 type Score struct { Num int } //定义对数据的处理 func (s *Score) Do() { fmt.Println("num:", s.Num) time.Sleep(1 * 1 * time.Second) } func main() { num := 100

聊聊高并发系统之限流特技

在开发高并发系统时,有很多手段用来保护系统:缓存.降级和限流.缓存的目的是提升系统访问速度和增大系统处理能力,可谓是抗高并发流量的银弹:而降级是当服务出问题或者影响到核心流程的性能则需要暂时屏蔽掉,待高峰过去或者问题解决后再打开的场景:而有些场景并不能用缓存和降级来解决,比如稀缺资源(秒杀.抢购).写服务(如评论.下单).频繁的复杂查询(评论的最后几页),因此需有一种手段来限制这些场景的并发/请求量,即限流. 限流的目的是通过对并发访问进行限速或者一个时间窗口内的的请求进行限速来保护系统,一旦达

【转载】聊聊高并发系统之降级特技

原文:聊聊高并发系统之降级特技 在开发高并发系统时有三把利器用来保护系统:缓存.降级和限流.之前已经有一些文章介绍过缓存和限流了.本文将详细聊聊降级.当访问量剧增.服务出现问题(如响应时间慢或不响应)或非核心服务影响到核心流程的性能时,仍然需要保证服务还是可用的,即使是有损服务.系统可以根据一些关键数据进行自动降级,也可以配置开关实现人工降级.本文将介绍一些笔者在实际工作中遇到的或见到过的一些降级方案供大家参考. 降级的最终目的是保证核心服务可用,即使是有损的.而且有些服务是无法降级的(如加入购

高性能高并发系统的稳定性保障

小码哥 于 1 月前 发表在 七嘴八舌 作者:肖飞,于2011年8月份加入京东,曾亲身参与到京东的应用性能监控.统一日志.流式计算.内存缓存.四层防攻击等一些基础技术平台的研发和搭建工作,经历了京东的技术系统从简单粗放向复杂精细化的演变过程.目前主要工作为多中心交易项目中的数据复制中间件JingoBUS的研发.平时也会开发一些公共的平台和工具,关注分布式系统的实现.程序设计.性能优化.开发语言等. 本文是2015年肖飞在内部分享的<高性能高并发系统的稳定性保障>PPT内容. 性能.并发.稳定性

大数据高并发系统架构实战方案(LVS负载均衡、Nginx、共享存储、海量数据、队列缓存)

课程简介: 随着互联网的发展,高并发.大数据量的网站要求越来越高.而这些高要求都是基础的技术和细节组合而成的.本课程就从实际案例出发给大家原景重现高并发架构常用技术点及详细演练. 通过该课程的学习,普通的技术人员就可以快速搭建起千万级的高并发大数据网站平台. 亮点一:真实环境还原,课程采用了VM环境重现大网站集群服务器环境,真实环境还原再现. 亮点二:基础实用,细节决定成败,课程内容在演练过程中重点介绍各种细节,保证初级人员快速入门及高级进阶. 亮点三:讲师丰富的海量平台运作经验 讲师tom5多

大数据高并发系统架构实战方案

大数据高并发系统架构实战方案(LVS负载均衡.Nginx.共享存储.海量数据.队列缓存 ) 随着互联网的发展,高并发.大数据量的网站要求越来越高.而这些高要求都是基础的技术和细节组合而成的.本课程就从实际案例出发给大家原景重现高并发架构常用技术点及详细演练.通过该课程的学习,普通的技术人员就可以快速搭建起千万级的高并发大数据网站平台,课程涉及内容包括:LVS实现负载均衡.Nginx高级配置实战.共享存储实现动态内容静态化加速实战.缓存平台安装配置使用.mysql主从复制安装配置实战等.课程二十.