分布式监控开发 01 需求

为什么要做监控? 

zabbix已经这么强大了,为什么要写一个监控

首先来说说zabbix的痛。

  1. 性能瓶颈。zabbix是使用MySQL来存放监控历史数据的。一台机器假设有100个监控项,2000台机器,就是20w监控项,监控系统的数据采集没有高峰低谷,是持续性的,周期性的,一般是一分钟采集一次。机器量越来越大,数据量就越来越大,MySQL的写入逐渐成为瓶颈,业界有一些proxy的方案,也只是治标不治本。zabbix有些数据采集是通过pull的方式,也就是server端主动探测的方式,当目标机器量大了之后,这些pull任务也经常出现积压。
  2. zabbix有些易用性问题。比如zabbix的模板是不支持继承的,机器分组也是扁平化的,监控策略不容易复用。zabbix要采集哪些数据,是需要在server端做手工配置的。
  3. 有些公司还需要业务的监控,比如某个thrift rpc接口,每分钟调用的cpslatency,某些url5xx4xx我们也希望做监控,某个开源软件,比redisopenstackmysql的一些状态统计数据
  4. zabbix的大屏是个问题。虽然有些二次开发的界面非常棒

说了这么多不好的地方,只是在某些big的时候不好而已,我们自己写的话,短期内也是不可能超越zabbix的。那么为什么要手写一套监控呢?

1、熟悉IT监控系统的设计原理
自己写的时候肯定有很多事更zabbix相匹配的。
 
2、开发一个简版的类Zabbix监控系统。
为以后团队写监控做准备.zabbix在2K以上数量机器的时候,明显会吃力。小米也正是由于这个自己写了open-falcon。那么如果以后我们遇到大数量的服务器的时候,完全也会基于公司的业务去写一个监控。
那么现在练练手也是完全OK的。
 
 3、掌握自动化开发项目的程序设计思路及架构解藕原则。
    
 

监控系统需求讨论

1.可监控常用系统服务、应用、网络设备等
2.一台主机上可监控多个不同服务、不同服务的监控间隔可不同
3.同一个服务在不同主机上的监控间隔、报警阈值可不同
4.可以批量的给一批主机添加、删除、修改要监控的服务
5.告警级别:
  • 不同的服务 因为业务重要程度不同,如果出了问题可以设置不同的报警级别
  • 可以指定特定的服务或告警级别的事件通知给特定的用户
  • 告警的升级设定
6.历史数据 的存储和优化
  • 实现用最少的空间占用量存储最多的有效数据
  • 做到1s中之内取出一台主机上所有服务的5年的监控数据(采用redis存取模糊点的方式)

7. 数据可视化,做出简洁美观的用户界面

8.实现单机支持5000+机器监控需求
 
9.实现主动以及被动监控方式
 
10.实现监控服务器的水平扩展
 
 

采用什么架构?

  1. Mysql存储主机配置项对应关系
  2. redis存储历史数据
  3. 支持服务端主动的监控方式(SNMP/PING)以及客户端被动的发送数据
  4. 采用HTPP的通信方式
 

采用HTTP好处

1.接口设计简单

2.容易水平扩展做分布式

3.Socket稳定成熟,省去较多的通信维护精力。不用自己从socket底层写起

Http特性:

1.短连接

2.无状态

3.安全认证

4.被动通信

原文地址:https://www.cnblogs.com/yangliheng/p/6942060.html