V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zhoudaiyu
V2EX  ›  程序员

想实时采集约 2000 台服务器的系统运行时快照,当中间件或应用出问题的时候能翻采集记录排查,大家有啥思路吗?

  •  
  •   zhoudaiyu · 2021-02-09 11:23:32 +08:00 · 2933 次点击
    这是一个创建于 1375 天前的主题,其中的信息可能已经有所发展或是发生改变。

    抓取的信息有 CPU 、内存、IO 、进(线)程、网络连接情况,还可能有一些中间件的特有的指标,大概 1s 抓取一次。我的思路是部署 agent 到每台机器做采集工作(目前试过用 go 调用 shell 去抓取,然后再把 shell 的 stdout 做解析和整合),将整个后结果推到 Kafka,再用 kafka-xx-connetor 或者类似的东西把 kafka 的数据同步到 ES 、mongo 或者 mysql 里。请问大家觉得我这个思路怎么样?还有就是有啥更好想法吗?包括抓取指标的维度、抓取方式、数据转移链路,存储后端等等方面。

    24 条回复    2021-02-10 13:26:58 +08:00
    Aumujun
        1
    Aumujun  
       2021-02-09 11:27:39 +08:00
    你需要的应该是“ZABBIX”这种东西
    cslive
        2
    cslive  
       2021-02-09 11:29:40 +08:00
    日志都单独挂载在一个一盘里,然后将日志扔到 hadoop 里吧
    Qetesh
        3
    Qetesh  
       2021-02-09 11:30:19 +08:00 via iPhone
    同意楼上,感觉楼主要的是监控吧
    主机监控和 apm 监控
    zhoudaiyu
        4
    zhoudaiyu  
    OP
       2021-02-09 11:38:07 +08:00 via iPhone
    @Aumujun
    @Qetesh Zabbix 我了解,我们用的 Falcon-Agent,这个 falcon 都是以分钟为单位上报数据的,有时候 cpu 尖峰就是几秒的事情,感觉 falcon 时间尺度不够使
    zhoudaiyu
        5
    zhoudaiyu  
    OP
       2021-02-09 11:38:28 +08:00 via iPhone
    @cslive 也是要有这个 agent 吧
    eason1874
        6
    eason1874  
       2021-02-09 11:41:08 +08:00
    我搞新东西,自己没经验就会找大厂产品研究下。

    看看腾讯云、阿里云那些 agent 脚本,看看网站的控制台面板,看看云监控自定义上报功能,就能猜到他们怎么设计的吧。
    ElmerZhang
        7
    ElmerZhang  
       2021-02-09 11:50:40 +08:00   ❤️ 1
    本机打日志然后 fluentd 之类的收集一下就好了。
    通用指标可以试试 dstat
    zhoudaiyu
        8
    zhoudaiyu  
    OP
       2021-02-09 11:57:52 +08:00 via iPhone
    @eason1874 好主意老哥,我这就去看看
    @ElmerZhang dstat 这个很不错啊,多谢多谢
    defunct9
        9
    defunct9  
       2021-02-09 15:29:47 +08:00 via iPhone   ❤️ 1
    prometheus
    DoctorCat
        10
    DoctorCat  
       2021-02-09 15:32:17 +08:00
    prometheus
    jlwrp
        11
    jlwrp  
       2021-02-09 15:35:42 +08:00
    ELk
    wzwwzw
        12
    wzwwzw  
       2021-02-09 18:10:57 +08:00
    prometheus
    pc10201
        13
    pc10201  
       2021-02-09 20:41:20 +08:00
    有一个软件叫 atop,不过推荐一分钟采集一次
    xuzhzzz
        14
    xuzhzzz  
       2021-02-09 21:27:35 +08:00 via iPhone
    别乱想方案,找开源的行吗
    CallMeReznov
        15
    CallMeReznov  
       2021-02-09 21:38:17 +08:00
    zabbix 自己调整下取值的间隔,你想 1 秒取一次都可以!
    Lemeng
        16
    Lemeng  
       2021-02-09 21:48:08 +08:00
    看看也想了解了解
    AnyISalIn
        17
    AnyISalIn  
       2021-02-09 22:19:13 +08:00
    Prometheus, Zabbix 之类的方案都行,就是抓取周期为 1s 频率太高,这里的难点在于你的数据要存储多久。

    Zabbix 的问题在于后端 数据通过 MySQL 存储,数据库是一个很大的瓶颈,横向扩展只能通过类似 Sharding 的方案来做。
    Prometheus 支持的插件比较多,大部分中间件都能覆盖,而且 TSDB 的性能很强劲,性能应该不是问题,但集群方案得借助第三方方案类似 Thanos, Cortex 来解决,并且对内存的要求很高 (默认 2 小时内的数据都放在内存里,如果 1s 一次采集,数据量太大了),如果要做的话,你这种需求可能要用 hasmod + thanos 才能搞定。

    ELK (MetricBit) 的方案也是可以的,扩展性很强,但是你这种时间粒度和规模的要求,索引会很大,并且 Elasticsearch 本身的维护成本也很高。

    主要的难点不是 2000 台机器,同样是 2000 台机器,15/30 秒抓取一次 1s 的抓取频率,会让数据规模翻几十倍。
    akira
        18
    akira  
       2021-02-09 23:09:38 +08:00
    1s 一次,这个有点夸张了啊。。
    1 分钟一次外面现成的方案挺多的
    victor97
        19
    victor97  
       2021-02-10 08:04:32 +08:00 via Android
    本地一秒钟抓一次,传可以一分钟传一次。另外也可以只传一分钟内的最大值,最小值和平均值。
    sampeng
        20
    sampeng  
       2021-02-10 09:42:03 +08:00 via iPhone   ❤️ 1
    没有任何监控有需要 1 秒监控一次的……头一次做监控的时候总是这么想,我需要 2 秒监控一次。本质上监控是统计问题,没有真正的所谓这个时间点性能怎么样。都是通过多个采样点计算出大致的。只要采样点足够多就是可信的。1 秒和一分钟的区别仅仅是精读差别,甚至可以说汇出图出来没有任何指导价值…因为抖动可能大得吓人。而抖动又没有价值

    比如说流量,一秒飙到 100Mb 很正常,持续一分钟也很正常,只有持续 10 分钟可能不正常。所以一秒间隔采样点没价值。浪费性能

    再比如抖动最多的内存,java 虚拟机内部先把内存分走了,下一秒就回收掉了。

    监控只有看持续才会有有问题。瞬间点没任何指导价值
    Lee2019
        21
    Lee2019  
       2021-02-10 09:50:24 +08:00
    1s 一次说实话没必要,这种瞬时的尖峰是很正常的吧
    Nillouise
        22
    Nillouise  
       2021-02-10 09:58:44 +08:00
    @sampeng 抖动为什么没有价值?不是还能看看 gc 的情况吗(如果不用 java 自带的 gc 记录)。
    sampeng
        23
    sampeng  
       2021-02-10 10:25:23 +08:00 via iPhone
    @Nillouise 因为只有持续 n 分钟以上的才需要干预。几秒钟维度的监控,没有处理的必要,浪费人力资源
    py2ex
        24
    py2ex  
       2021-02-10 13:26:58 +08:00
    @Lee2019 @Nillouise @sampeng 1s 监控在数据量大的时候(贴主想做 2000 台服务器),性能优化也是很大的挑战
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3889 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 04:14 · PVG 12:14 · LAX 20:14 · JFK 23:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.