前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >分布式系统如何定位压力问题监控监控什么呢实际的压力问题怎么发生的我用的工具

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

作者头像
大宽宽
发布2018-05-14 11:30:41
1.1K0
发布2018-05-14 11:30:41
举报

监控

简单来说,分布式系统需要实现一个基本的监控工具。最简单的办法是在每个节点上部署一个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
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017.12.19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 监控
  • 监控什么呢
  • 实际的压力问题怎么发生的
  • 我用的工具
相关产品与服务
Grafana 服务
Grafana 服务(TencentCloud Managed Service for Grafana,TCMG)是腾讯云基于社区广受欢迎的开源可视化项目 Grafana ,并与 Grafana Lab 合作开发的托管服务。TCMG 为您提供安全、免运维 Grafana 的能力,内建腾讯云多种数据源插件,如 Prometheus 监控服务、容器服务、日志服务 、Graphite 和 InfluxDB 等,最终实现数据的统一可视化。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档