飞鸽服务有OS、JWS、MySQL、飞鸽server、飞鸽admin、飞鸽SDK组成mysql
随着业务量的发展变化,服务器数量逐渐增多,单台server的可用性和总体服务的可用性,都须要进行监控,对发生的问题进行告警。redis
从时间角度考虑,发布者业务的爆发,会给飞鸽和消费者带来冲击,server的压力上升,消费者消息的积压;飞鸽接入量的变化,给飞鸽server的压力。 所以须要一种预警机制,提取发现问题暴露的苗头,及早进行调整。sql
数据流转过程:缓存
具体到监控该如何作,能够采用分层的架构模式。 采集部分只负责数据的采集,产生元数据。 统计汇总,则对元数据根据统计规则和业务规则,进行汇总统计,并产生统计数据 监控逻辑,对产出的统计数据,结合监控告警规则,向告警平台发出告警请求。服务器
从飞鸽app服务到使用飞鸽做为组件;从一台飞鸽服务器到多台飞鸽服务器考虑。飞鸽须要提供业务的监控功能由两部分组成:业务监控和组件监控 而出现问题时辅助定位的工具也是不可缺乏的。 所以整个飞鸽有3部分组成:业务层监控、组件层监控、辅助定位工具架构
从发展变化的视角看飞鸽可用性,业务层监控须要提供:告警和预警功能。 告警:对目前飞鸽服务可用性问题发生时,通知相关人员。 预警:对业务量的增加带来的可用性风险,通知相关人员。app
飞鸽告警elasticsearch
飞鸽预警工具
飞鸽使用的组件,一旦发生问题,势必会影响飞鸽的可用性,所以对于飞鸽使用组件的监控也是必不可少的。 飞鸽组件的监控,须要提供飞鸽使用组件(jws、os、mysql)的监控。性能
当出现可用性或者其余问题时,如何快速的协助业务定位出问题所在,减小问题定位所花费的时间,是对可用性的间接提高。 所以问题定位辅助工具,须要提供快速定位问题的有效信息:提供消息流转过程,有效定位出问题点。
经过以上的介绍,飞鸽须要进行的监控包括如下内容:
其中飞鸽功能可用、飞鸽服务性能、及时发现问题数据飞鸽业务层监控范畴;快速定位问题属于飞鸽问题定位辅助工具范畴;业务爆发影响属于组件层以及部分业务层范畴。
Logstash:收集日志 ElasticSearch:进行日志的汇总和统计 Kibana:展示日志记录 DoveAdmin:根据业务规则展示性能数据和链接数据;请求提供数据查询接口给Diag。 Diag:从DoveAdmin获取各个Server数据信息,并做为业务的组件层展现。
DoveServer:上报链接以及性能统计数据 ElasticSearch:存储上报的相关数据 DoveAdmin:根据业务展现逻辑,汇总查询数据;提供Diag查询接口,在业务的组件层展现 Diag:业务立体化监控,进行相关的展现和告警。
须要Diag提供对飞鸽的特别支持。
DoveAdmin:提供配置拉取接口,供Diag使用。 飞鸽Diag:先从 DoveAdmin拉取配置,而后根据配置,向每一个server获取server的链接信息、性能数据;获取到的数据存储在ElasticSearch中,并在飞鸽Diag的业务层展现 DoveServer:提供接口供飞鸽Diag查询链接和性能数据。 业务Diag:业务Diag能够复用diag的数据,做为业务的组件层数据
注意:飞鸽Diag获取DoveServer的数据,能够有两种方式:飞鸽Diag主动向DoveServer查询;DoveServer主动上报给飞鸽Diag。
对比项 | ELK方案 | ES方案 | diag方案 |
---|---|---|---|
性能 | logstash采集日志,使用redis进行缓存<br>elasticsearch进行汇总统计<br>kibana 进行展现<br>因为elasticsearch的写入速度限制,须要加上redis提高性能,可是数据量大,统计分析任务重<br>总评:性能中 | elastic的写入性能低 <br> 总评:低 | DoveServer进行汇总后发送给DoveAdmin,使用HTTP接口<br> 总评:性能中 |
成本(硬件) | 须要较多的服务器和存储支持 | 存储成本高,整体中 | DoveAdmin存储性能数据,有效期7天,成本低。 |
扩展性 | 存储了元数据,能够根据业务对元数据进行灵活使用。扩展性高 | DoveServer进行了基本的汇总不少细节数据不存在。扩展性低 | 也是进行了汇总。扩展性低(diag只能提供接口请求量整体数据以及组件层监控) |
复杂度 | 涉及组件较多,复杂度高 | 复杂度中等 | 目前已实现,须要添加diag部分,复杂度中 |
维护性 | 组件太多,维护成本高 | 维护成本中 | 维护成本中 |
接入diag(立体化监控),使用立体化监控进行监控和告警。 diag目前已经支持了组件层的监控,主要有:mysql 、OS 、 jws 等
使用ELK(ElasticSearch + logstash + Kibana)方案。 logstash:进行日志收集 elasticsearch:进行汇总分析 kibana:进行日志的可视化展现