分布式系统如何定位压力问题监控监控什么呢实际的压力问题怎么发生的我用的工具

监控

简单来说,分布式系统需要实现一个基本的监控工具。最简单的办法是在每个节点上部署一个agent,定时上报该机器的信息。这一块鱼龙混杂。开源的实施起来就比较复杂了。这一块主要分四层:

  • 收集,具体怎么收集数据(比如sar命令、JMX等)
  • 传输,收集到的数据如何传到存储(比如用syslog,fluentd,statsd)
  • 存储+分析,如何存储收集到的数据,并提供查询(比如用mysql,postgres等一般数据库,RRD Tools工具,或者InfluxDB这样的专用时序数据库)
  • 界面展示和报警,数据怎么变成好看的图表,并提供不同维度的查询;如果可以,一些参数超过一定的阈值,就要自动报警(发邮件、发短信、发微信等)。(比如grafana, icinga等)

也有很多All-in-one的收费方案,比如New Relic,听云等。

不同监控的侧重点不同,有的主打通用,于是可以对接一堆其他工具。有的则主打特定领域,比如Java自带的JMC可以监控JVM的GC,线程等情况;Percona Monitoring Plugins可以监控MySql的内部情况等。可以根据需要具体选择。有些云服务提供商也会提供一些最基本的监控,比如阿里云的相关工具。

监控什么呢

当搭建一个集群,要监测三大类数据

  • 机器数据:最主要包括
    • CPU idle,io,load值等
    • 内存的使用和swap
    • 磁盘io KB/s,iops (如果是数据库的的机器特别重要)
    • 网络,总带宽占用,io KB/s, packet/s (如果是服务的机器就特别重要)
  • 框架/服务级别的监控
    • 例如,如果是JVM,Java的堆内存情况;GC,尤其是FullGC的频率和暂停时间;线程数量和状态;如果可以的话,方法执行的耗时排名;
    • 如果是DB,为内存占用,磁盘io,慢查询,链接数的监控
  • 业务级别监控
    • 比如单位时间下单数、Cache命中率等等、Log中500错误数等等。随着业务的变化,这些监控会不断的变化

这是一个浩大的工程。不可能一蹴而就,也不可能一套工具就全搞定。必须结合Infra和业务开发工程师的共同努力才能构建出来。如果预算不是那么紧,建议采购一两套收费的方案来减少这方面的开发资源消耗。毕竟做公司的主要精力是业务本身,而不是开发完备的基础设施。当公司体量大到一定程度,自然就会建立专门的团队来做这些。

构建监控体系时注意 报警不能淹没使用者的接收。铺天盖地的报警只会让人把报警直接关了。所以设计时要考虑报警的频率,级别,ACK等机制。而且可能会反复调整。尽量把“关键问题的报警”提供出来。

实际的压力问题怎么发生的

压力问题主要发生在两个时刻

  • 上线的时候。比如曾经有一个同学做了一个实现,勿用了正则表达式,造成了一上线CPU飙高直接打到100%。这时通过监控工具和报警可以马上识别所有上线的包都有问题,立刻实施紧急回滚。类似的问题还有,比如写代码的SQL没有用好索引造成全表扫描。异步代码写成了同步的,卡死了接收端等等。
  • 用户流量压力突然增加。比如我们的长赢指数投资计划非常受欢迎。一发车就流量(带宽)升高10倍。这个第一次发生时没有应对的策略。事后我们使用K8S,提前准备热备机器来顶住流量。此外,很多压力会集中到DB,因此需要花跟多精力开发Cache(Cache其实是个很难的问题,回头单独讲)

我用的工具

工具太多了,我们粗选了几个就用了,不一定是最好的,但至少目前还是可以解决问题的

  • 收集端就用服务自带的命令即可,比如操作系统的top、sar,redis的info命令等
  • 传输和存储使用influxdb
  • 分析工具使用grafana和icinga

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏顾宇的研习笔记

一怒之下,我写了一个开源流量测试工具

继一怒之下我写出了 Vivian(详见“测试驱动开发 Nginx 配置”)之后。又在等待客户审批流程的时间里自己写了一个流量测试工具。

1045
来自专栏沃趣科技

基于Prometheus的数据库监控

作者 金 戈 沃趣科技技术专家 传统监控系统面临的问题 Prometheus的前身:Borgmon Borgmon介绍 应用埋点 服务发现 指标采集与堆叠 ...

62610
来自专栏我的小碗汤

Jetbrains家族软件激活方法

IDEA的运行速度非常令人满意,这点尤为重要,Eclipse虽然富有多种插件,看上去似乎可以完成多种功能,但是令人沮丧的是,他的运行速度越来越慢了,逐渐的慢到了...

842
来自专栏数据和云

云端迁移 - Evernote 基于Google 云平台的架构设计和技术转型(上)

编辑手记:Evernote在短暂的时间里完成了向云端的迁移,其战果可喜可贺,然而每一次成功,都是背后的默默的努力和付出支撑起来的。在迁移的过程中,面对网络、硬件...

37911
来自专栏跨界架构师

分布式系统关注点——「负载均衡」到底该如何实施?

        前面两篇《分布式系统关注点——初识「高可用」》、《分布式系统关注点——仅需这一篇,吃透「负载均衡」妥妥的》看完后,相信大家对实现高可用的思路和负...

1284
来自专栏微服务

全面解读NoSQL数据库Redis的核心技术与应用实践

互联网和Web的蓬勃发展正在改变着我们的世界,随着互联网的不断发展和壮大,企业数据规模越来越大,并发量越来越高,关系数据库无法应对新的负载压力,随着Hadoop...

3666
来自专栏沃趣科技

Gitlab删库事件回顾,备份手段还停留在“原始社会”?

作者简介:孙朝阳 沃趣科技高级产品经理。 Gitlab简介 Gitlab是大家很熟悉的开源Git代码托管工具,国内公司大多使用社区版自行搭建私有化的内部代码托...

3466
来自专栏IT技术精选文摘

高并发大容量NoSQL解决方案探索

1593
来自专栏原创

高并发大容量NoSQL解决方案探索

1548
来自专栏程序人生

Docker: 优雅地部署

在我去年的一篇博客自动化的高效团队开发环境提到了用vagrant来统一开发团队的开发环境。用vagrant基本上解决了开发环境异构的问题,但VM(vagrant...

3528

扫码关注云+社区