zoukankan      html  css  js  c++  java
  • 分布式监控开发 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.被动通信

  • 相关阅读:
    WM_CHAR消息分析
    数据库OleDbConnection对象参考
    数据库使用Command对象进行数据库查询
    如何在VBNET中使用调试输出类Debug和Trace
    数据库与数据库连接
    数据库ADONETOleDbDataReader对象参考
    VBNET运行时处理对象事件(AddHandler和RemoveHandler)
    防火墙分类简述(班门弄斧了)
    杀毒防护类软件的组合转帖
    数据库ADONETOleDbCommand对象参考
  • 原文地址:https://www.cnblogs.com/yangliheng/p/6942060.html
Copyright © 2011-2022 走看看