文档章节

监控方案设计

-启曙-
 -启曙-
发布于 2015/10/29 18:37
字数 1781
阅读 209
收藏 9
点赞 0
评论 0

飞鸽监控目的

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

© 著作权归作者所有

共有 人打赏支持
-启曙-
粉丝 9
博文 14
码字总数 11526
作品 0
广州
程序员
集群监控系统的设计方案

背景 一个项目发展了一段时间以后,总会分成为数众多的子应用,各自以集群的形式部署在不同的服务器上。当部署的应用多了以后,整个集群的异常监控就成为一个比较麻烦的事情。最近接到的需求...

GameKing ⋅ 2016/08/12 ⋅ 2

运维学习和发展的一个线路

一、运维学习和发展的一个线路 1.搭建服务 (部署并运行起来) 2.用好服务(监控、管理、优化) 3.自动化(服务直接的关联和协同工作) 4.产品设计(如何设计一个监控系统) 二、系统架构师(...

blank614 ⋅ 2016/06/20 ⋅ 0

容器云落地的痛点

企业要用正确的姿态拥抱容器并且使用好容器,需要在应用容器技术之前考虑清楚以下九个关键问题: 企业容器云方案设计需要遵循什么原则?容器云技术产品如何选型?容器云的网络应该如何设计?...

baishuchao ⋅ 2017/12/22 ⋅ 0

电梯无线监控方案解决方案

总体规划及设计原则 参考地址:http://www.winertech.com/solution.asp?id=203&DTU/RTU/ROUTER 1、设计依据 根据中华人民共和国国家安全行业标准GB50348-2004《安全防范工程技术规范》、GB/...

wilcolin ⋅ 2014/12/12 ⋅ 0

10个免费的服务器监控工具

原文出处:sixrevisions 译文出处:9iphp 监控你的WEB服务器或者WEB主机运行是否正常与健康是非常重要的。你要确保用户始终可以打开你的网站并且网速不慢。服务器监控工具允许你收集和分析有...

sixrevisions ⋅ 2015/07/09 ⋅ 0

谈谈为什么需要服务治理(Dubbo)

服务治理主要针对于当前分布式架构下多服务、微服务等。 服务是分布式系统下的一个不大不小的部分,有了服务的组成,整个系统才能活起来。 随着业务的增长,服务不能一味地随之增长,需要管理...

煎鱼不可能有BUG ⋅ 06/03 ⋅ 0

电梯安全无线监测解决方案设计

总体规划及设计原则 参考地址:http://www.winertech.com/solution.asp?id=203&DTU/RTU/ROUTER 1、设计依据 根据中华人民共和国国家安全行业标准GB50348-2004《安全防范工程技术规范》、GB/...

wilcolin ⋅ 2014/12/09 ⋅ 1

10 个免费的服务器监控工具

监控你的WEB服务器或者WEB主机运行是否正常与健康是非常重要的。你要确保用户始终可以打开你的网站并且网速不慢。服务器监控工具允许你收集和分析有关你的Web服务器的数据。 有许多非常好的服...

酱醋茶丶 ⋅ 2015/08/21 ⋅ 0

容器技术在企业落地的9个关键问题

当今容器技术被广泛关注,已经有越来越多的企业开始布局或者已经采用容器技术来构建自己的云基础设施。 在用容器设计新的微服务应用架构或者如何改造现有的应用时,应该了解哪些因素和相关特...

xjsunjie ⋅ 2017/12/21 ⋅ 0

百度大规模时序数据存储(二)| 存储选型及数据模型设计

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

g2v13ah ⋅ 2017/11/09 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

BS与CS的联系与区别【简】

C/S是Client/Server的缩写。服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统,如Oracle、Sybase、InFORMix或 SQL Server。客户端需要安装专用的客户端软件。 B/S是Brower/...

anlve ⋅ 48分钟前 ⋅ 0

发生了什么?Linus 又发怒了?

在一个 Linux 内核 4.18-rc1 的 Pull Request 中,开发者 Andy Shevchenko 表示其在对设备属性框架进行更新时,移除了 union 别名,这引发了 Linus 的暴怒。 这一次 Linus Torvalds 发怒的原...

问题终结者 ⋅ 今天 ⋅ 0

在树莓派上搭建一个maven仓库

在树莓派上搭建一个maven仓库 20180618 lambo init 项目说明 家里有台树莓派性能太慢。想搭建一个maven私服, 使用nexus或者 jfrog-artifactory 运行的够呛。怎么办呢,手写一个吧.所在这个...

林小宝 ⋅ 今天 ⋅ 0

Spring发展历程总结

转自与 https://www.cnblogs.com/RunForLove/p/4641672.html 目前很多公司的架构,从Struts2迁移到了SpringMVC。你有想过为什么不使用Servlet+JSP来构建Java web项目,而是采用SpringMVC呢?...

onedotdot ⋅ 今天 ⋅ 0

Python模块/包/库安装(6种方法)

Python模块/包/库安装(6种方法) 冰颖机器人 2016-11-29 21:33:26 一、方法1: 单文件模块 直接把文件拷贝到 $python_dir/Lib 二、方法2: 多文件模块,带setup.py 下载模块包(压缩文件zip...

cswangyx ⋅ 今天 ⋅ 0

零基础学习大数据人工智能,学习路线篇!系统规划大数据之路?

大数据处理技术怎么学习呢?首先我们要学习Python语言和Linux操作系统,这两个是学习大数据的基础,学习的顺序不分前后。 Python:Python 的排名从去年开始就借助人工智能持续上升,现在它已经...

董黎明 ⋅ 今天 ⋅ 0

openJdk和sun jdk的区别

使用过LINUX的人都应该知道,在大多数LINUX发行版本里,内置或者通过软件源安装JDK的话,都是安装的OpenJDK, 那么到底什么是OpenJDK,它与SUN JDK有什么关系和区别呢? 历史上的原因是,Ope...

jason_kiss ⋅ 今天 ⋅ 0

梳理

Redux 是 JavaScript 状态容器,提供可预测化的状态管理。 它是JS的状态容器,是一种解决问题的方式,所以即可以用于 react 也可以用于 vue。 需要理解其思想及实现方式。 应用中所有的 stat...

分秒 ⋅ 今天 ⋅ 0

Java 后台判断是否为ajax请求

/** * 是否是Ajax请求 * @param request * @return */public static boolean isAjax(ServletRequest request){return "XMLHttpRequest".equalsIgnoreCase(((HttpServletReques......

JavaSon712 ⋅ 今天 ⋅ 0

Redis 单线程 为何却需要事务处理并发问题

Redis是单线程处理,也就是命令会顺序执行。那么为什么会存在并发问题呢? 个人理解是,虽然redis是单线程,但是可以同时有多个客户端访问,每个客户端会有 一个线程。客户端访问之间存在竞争...

码代码的小司机 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部