当前位置: 首页 > news >正文

监控方案设计

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

飞鸽监控目的

  1. 业务功能的监控。防止出现问题,导致飞鸽服务长时间的不可用,并且人员未发现。
  2. 性能可用性的监控。功能满足需要,不代表飞鸽的性能满足需要,需要对性能进行监控,以及做出预警。
  3. 提供有效的预警机制。防止业务爆发式增长带来的隐患:消费能力不足;飞鸽存储不足。
  4. 提供快速定位问题的有效信息。提供消息流转过程,有效定位出问题点。
  5. 提供飞鸽使用组件(jws、os、mysql)的监控。

飞鸽监控的思路

服务组成的思路

服务组成的思路

飞鸽服务有OS、JWS、MySQL、飞鸽server、飞鸽admin、飞鸽SDK组成

从少到多的思路

从少到多

随着业务量的发展变化,服务器数量逐渐增多,单台server的可用性和整体服务的可用性,都需要进行监控,对发生的问题进行告警

发展变化的思路

发展变量

从时间角度考虑,发布者业务的爆发,会给飞鸽和消费者带来冲击,server的压力上升,消费者消息的积压;飞鸽接入量的变化,给飞鸽server的压力。 因此需要一种预警机制,提取发现问题暴露的苗头,及早进行调整。

分层的思路

分层思路

数据流转过程:

分层的流程

具体到监控该如何做,可以采用分层的架构模式。 采集部分只负责数据的采集,产生元数据。 统计汇总,则对元数据根据统计规则和业务规则,进行汇总统计,并产生统计数据 监控逻辑,对产出的统计数据,结合监控告警规则,向告警平台发出告警请求。

飞鸽监控逻辑结构

逻辑结构

从飞鸽app服务到使用飞鸽作为组件;从一台飞鸽服务器到多台飞鸽服务器考虑。飞鸽需要提供业务的监控功能由两部分组成:业务监控和组件监控 而出现问题时辅助定位的工具也是不可缺少的。 因此整个飞鸽有3部分组成:业务层监控、组件层监控、辅助定位工具

业务层监控

从发展变化的视角看飞鸽可用性,业务层监控需要提供:告警和预警功能。 告警:对目前飞鸽服务可用性问题发生时,通知相关人员。 预警:对业务量的增长带来的可用性风险,通知相关人员。

飞鸽告警

  1. 这里是列表文本提供业务功能的监控。防止出现问题,导致飞鸽服务的不可能。
  2. 提供性能可用性的监控。功能满足需要,不代表飞鸽的性能满足需要。

飞鸽预警

  • 这里是列表文本提供有效的预警机制。防止业务爆发式增长带来的隐患。

业务层监控

飞鸽使用的组件,一旦发生问题,势必会影响飞鸽的可用性,因此对于飞鸽使用组件的监控也是必不可少的。 飞鸽组件的监控,需要提供飞鸽使用组件(jws、os、mysql)的监控。

辅助定位工具

当出现可用性或者其他问题时,如何快速的协助业务定位出问题所在,减少问题定位所花费的时间,是对可用性的间接提升。 因此问题定位辅助工具,需要提供快速定位问题的有效信息:提供消息流转过程,有效定位出问题点。

飞鸽监控内容

通过以上的介绍,飞鸽需要进行的监控包括以下内容:

监控内容

其中飞鸽功能可用、飞鸽服务性能、及时发现问题数据飞鸽业务层监控范畴;快速定位问题属于飞鸽问题定位辅助工具范畴;业务爆发影响属于组件层以及部分业务层范畴。

飞鸽监控方案

业务层监控方案

ELK方案

ELK方案

Logstash:收集日志 ElasticSearch:进行日志的汇总和统计 Kibana:展现日志记录 DoveAdmin:根据业务规则展现性能数据和连接数据;请求提供数据查询接口给Diag。 Diag:从DoveAdmin获取各个Server数据信息,并作为业务的组件层展示。

ES方案

ES方案

DoveServer:上报连接以及性能统计数据 ElasticSearch:存储上报的相关数据 DoveAdmin:根据业务展示逻辑,汇总查询数据;提供Diag查询接口,在业务的组件层展示 Diag:业务立体化监控,进行相关的展示和告警。

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:进行日志的可视化展示

转载于:https://my.oschina.net/u/583362/blog/523713

相关文章:

  • 浅析:Android--Fragment的懒加载
  • iText生成pdf中文字体解决方案
  • c#xml操作
  • VC常用代码之创建进程
  • 第六章 对象作用域与servlet事件监听器
  • JavaScript HTML DOM 事件
  • 3D-HEVC的TAppDecorder
  • Hibenate second-level ehcache
  • JVM垃圾回收日志结构分析
  • MFC用户界面套包BCGControlBar Pro for MFC v24.3正式发布[附下载]
  • 线程的创建
  • Android EditText 多行,滚动条 等
  • C#中两个时间的比较
  • Eclipse导入第三方库或工程时出现红色叹号的解决方法
  • Redis Ltrim 命令
  • Docker 1.12实践:Docker Service、Stack与分布式应用捆绑包
  • HashMap ConcurrentHashMap
  • IIS 10 PHP CGI 设置 PHP_INI_SCAN_DIR
  • mysql 数据库四种事务隔离级别
  • Node 版本管理
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • 读懂package.json -- 依赖管理
  • 服务器之间,相同帐号,实现免密钥登录
  • 关于Java中分层中遇到的一些问题
  • 计算机常识 - 收藏集 - 掘金
  • 力扣(LeetCode)22
  • 模型微调
  • 如何利用MongoDB打造TOP榜小程序
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • 小程序button引导用户授权
  • 在GitHub多个账号上使用不同的SSH的配置方法
  • 组复制官方翻译九、Group Replication Technical Details
  • ​linux启动进程的方式
  • ​如何防止网络攻击?
  • # 20155222 2016-2017-2 《Java程序设计》第5周学习总结
  • #include
  • #前后端分离# 头条发布系统
  • $.each()与$(selector).each()
  • (1)(1.19) TeraRanger One/EVO测距仪
  • (2)(2.4) TerraRanger Tower/Tower EVO(360度)
  • (四)Linux Shell编程——输入输出重定向
  • (四)搭建容器云管理平台笔记—安装ETCD(不使用证书)
  • (一)RocketMQ初步认识
  • (转)es进行聚合操作时提示Fielddata is disabled on text fields by default
  • (最简单,详细,直接上手)uniapp/vue中英文多语言切换
  • .net core MVC 通过 Filters 过滤器拦截请求及响应内容
  • .Net Winform开发笔记(一)
  • .Net 高效开发之不可错过的实用工具
  • .net下简单快捷的数值高低位切换
  • .NET业务框架的构建
  • @JsonSerialize注解的使用
  • @param注解什么意思_9000字,通俗易懂的讲解下Java注解
  • @RequestMapping处理请求异常
  • @staticmethod和@classmethod的作用与区别