• 关于监控数据的几个问题。


    监控系统之数据存储
     
    关于监控数据的存储问题,是一个典型的大数据存储的例子,
    系统设计的时候的一个很重要的的工作的就是容量规划
     
    至少有如下几点需要严谨的测算
    1 整个系统需要面临的流量压力: QPS ,网络流量等
    2 需要存储的数据量:每天新增的数据量,稳定的总数据量
    3 最常用的查询方式
    进而需要根据测算的结果决定:
    1 需要的服务器数量,系统的数据流向
    2 需要多少的存储空间,用什么来存储数据
    3 是否需要关系型数据库
     
    监控系统 流量估算:
    --QPS (Query Per Second)
    监控系统中主要的QPS压力来自部署在每个机器上的监控agent,假设为了保证监控报警的及时性。
    我们每台机器5s向上游传输一次监控数据,假设公司虚拟机1000台那么产生的QPS大约是:
    1000/5 = 200(QPS)
    这样的压力还是可以用单台服务器承载的
    --网络流量
    我们假设:每个监控项占用16个Bytes,一共50个监控项,我们都存储在一行,那么网络流量大约是
    16*50*200 = 16000(Bps) 约等于160(KBps) = 1.28 (Mbps)
    依旧是单台服务器能够承载的
    监控系统的数据量估算
    每天新增的数据量:
    根据上次估算,一天下产生的数据行数为:
    200*(24*3600) = 17280000 约等于 1700万行
    产生的数据量大约是:
    16 * 50*17280000 = 13824000000 约等于 13GB
    稳定的数据量
    一般的情况下:我们比价关注的是7天之内的监控数据,更久远的数据为们可以另外归档到一个冷数据库,而7天的数据量为
    17280000 * 7 = 120 960 000 约等于1.2亿行
    数据量:
    13 824000000 * 7 = 96768 000 000 约等于96.8G
    最常用查询方式:
    监控的数据直接没有什么直接的关联关系,查询的场景往往是限定机器,监控项,时间段
    一次查询放回的数据量可能会比较大
    综合上面的估算和分析,监控数据存储即可以使用传统性的关系型数据库,也可以使用key-value数据库
    key-Value 数据库能做,MySQL也能做,大多数性能更好,可靠性更高。
    这里我们必须要明白,MySQL的纯QPS性能不如redis不是由于MySQL的实现或者算法有问题。而是MySQL定位是数据库
    redis定位是缓存,所以Mysql需要保证每条数据的更改尽可能的进行持久化,而redis没有保证这一点,持久化就意味着
    数据需要落在硬盘上才能给用户返回成功。保证这一点就会造成很多损失,对于一个数据库来说,这些损失也是必要的
     
    MySQL通过拆库,拆表是可以应对任意多的数据量的,但是有一个前提就是需要提前规划,而且很难做到客户端透明,
    但是对于我们监控数据的存储,这完全是可以消化的。

  • 相关阅读:
    tomcat7修改tomcat-users.xml文件,但服务器重启后又自动还原了。
    show命令
    Hive 桶表
    Hive是读时模式
    Hive命令 参数
    Hive设置变量
    hive 排序 order by sort by distribute by cluster by
    Hive常用配置
    hive 排序 order by sort by distribute by cluster by
    配置hive使用mysql存储metadata metadatastore
  • 原文地址:https://www.cnblogs.com/nerdlerss/p/9084205.html
Copyright © 2020-2023  润新知