架构实战案例解析
王庆友
前 1 号店首席架构师
18817 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 23 讲
架构实战案例解析
15
15
1.0x
00:00/00:00
登录|注册

14 | 高可用架构案例(二):如何第一时间知道系统哪里有问题?

你好,我是王庆友。
在前面两讲中,我与你介绍了系统的高可用都有哪些设计原则和具体手段。其中我也特别提到,要想保证系统的高可用,我们还需要对系统进行全面有效的监控
监控是系统的眼睛,无监控,不运维。今天我们就从监控的角度来聊聊如何保证系统的高可用。
在开发软件时,我们经常强调一个业务功能的可测性,甚至有一种说法是测试驱动开发。在开发之前,我们会先设计测试用例,再去考虑如何实现功能。同样,当我们对系统作了很多加固,也是希望能保证它的稳定可用。
但我们怎么判断系统的各个节点当前是否正常呢?这个就对应了节点的可监控性,如果你事先想好了系统应该如何监控,如何判断每个节点是否正常,那你就会更清楚应该采取什么样的措施。很多时候,我们可以从监控的角度来倒推系统的可用性设计。

监控的分类

第 11 讲中,我和你介绍了系统的组成,它包括接入层、应用系统、中间件、基础设施这几个部分,那我们的监控也是针对这些部分来实施的。一般来说,监控可以分为 5 个层次,如下图所示:
从上到下,分别为用户体验监控、业务监控、应用监控、中间件监控、基础平台监控。
用户体验监控:指的是从前端用户的访问速度出发,来监测系统的可用性,包括页面能否打开、关键接口的响应时间等等,用户体验监控一般结合前端的埋点来实现。
业务监控:它是从业务结果的角度来看,比如说订单数、交易金额等等,业务监控也是最直观的,我们知道,如果业务数据没问题,系统整体也就没有问题。对于业务监控,我们一般是从数据库里定时拉取业务数据,然后以曲线的方式展示业务指标随着时间的变化过程。除了当前的曲线,一般还有同比和环比曲线。同比是和前一天的数据进行比较,环比是和一周前的数据进行比较,两方面结合起来,我们就能知道当前的业务指标有没有问题。
应用监控:指的是对自己开发的代码进行监控,比如接口在一段时间内的调用次数、响应时间、出错次数等等。更深入一点的应用监控还包含了调用链监控,我们知道,一个外部请求的处理过程包含了很多环节,比如说网关、应用、服务、缓存和数据库,我们可以通过调用链监控把这些环节串起来,当系统有问题时,我们可以一步步地排查。有很多 APM 工具可以实现调用链监控,如 CAT、SkyWalking 等等。
中间件监控:指的是对标准中间件进行监控,它是第三方开发的代码,比如数据库、缓存、Tomcat 等等,这些组件对应的是系统的 PaaS 层。这些中间件往往带有配套的监控系统,比如,RabbitMQ 就有自带的监控后台。
基础平台监控:指的是对系统底层资源进行监控,如操作系统、硬件设备等等,这个层次的监控对应的是系统的 IaaS 层。Zabbix 就是典型的基础设施监控工具,它可以监控 CPU、内存和磁盘的使用情况。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

文章总结:构建高效的系统监控体系 本文介绍了如何通过监控来保证系统的高可用性。监控是系统的眼睛,无监控就无法进行有效的运维。文章从监控的分类入手,介绍了用户体验监控、业务监控、应用监控、中间件监控和基础平台监控等五个层次的监控方式。同时,文章指出了监控面临的痛点,包括发现问题慢、定位问题慢和解决问题慢等方面的挑战。作者提出了解决监控面临的困境的思路,即构建一个实时的、直观的、一体化的监控系统,类似交通图一样,可以一眼就看出系统的问题所在。作者还介绍了监控系统的整体架构和效果,以及监控的分类和碎片化监控带来的问题,并给出了整体化的解决思路以及具体的落地方案。最后,作者鼓励读者深入领悟和掌握监控系统,并留下思考题,引发读者思考和讨论。 通过本文,读者可以了解到系统监控的重要性、分类方式以及面临的挑战,以及如何构建一个高效的监控系统来应对线上事故,提升系统的可用性。这对需要了解系统监控及高可用架构的读者具有一定的参考价值。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《架构实战案例解析》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(14)

  • 最新
  • 精选
  • GEEKBANG_6638780
    置顶
    你好,老师,问个问题。jdbc监控那块,是不是通过简单的表查询作用不是很大。就拿文中的列子来说,是因为慢查询导致的问题。假如我的数据库连接还没被慢查询占满,这个时候jdbc监控就不会有问题。如果想实现,慢查询监控,是不是要对mysql本身做更细致化的监控了,而不是等连接被打满以后才去解决问题。

    作者回复: 很好的问题,你看的很细。 这里的监控不追求很精确,保证80-90%的问题能监控到就可以,这肯定比不上中间件专门的管理后台。以你说的为例,如果数据库有慢查询,通过连接数据库和读写简单表可能检测不出来,但使用数据的应用或服务节点会提示性能和功能问题,它们会被检测到。 下一讲有针对这一点的说明。

    2020-03-23
    7
  • 阳仔
    “每隔3秒采集数据”,频率还挺高, 这个监控系统如何不会影响到正常业务服务的性能呢?

    作者回复: 3s调用业务系统的http接口一次,接口处理时间1ms左右,对业务系统几乎没影响。

    2020-08-26
    2
    1
  • 滕建兴
    老师问一下,这个是针对某个业务场景的整体化监控,但是一个系统很多场景,那不是要绘制很多这样的监控图

    作者回复: 前端一套代码就可以,下一讲会具体介绍

    2020-03-24
    1
  • 熊猫
    老师您好,请问下有没有开源?或现有类似的开源项目

    作者回复: 自研系统,没有开源。你可以关注一些全链路监控系统,比如skywalking、cat等。

    2022-11-15归属地:四川
    2
  • 每天晒白牙
    服务器节点的监控由公司运维平台监控,当cpu,内存使用过高都会发报警短信,带上ip信息,收到后可以登录服务器去排查,但业务报警主要通过 Prometheus 埋点实现的,有的时候流量抖动也会触发报警,因为业务流程比较长,业务相对复杂些,加上节点多,日志少,在高度紧张的情况下,排查问题还是挺难的 我们也正在弄监控报警这一块,想把监控报警弄的智能一些,实现自己简单的分析系统,期待老师下一篇细节篇
    2020-03-23
    9
  • 现在应用监控的工具比如skywalking 是可以直接监控中间件或者数据库的,有的还能监控到基础设施
    2020-04-01
    2
  • piboye
    数据库推导到会员问题,我觉得有问题
    2022-10-21归属地:广东
  • 杜秀清
    基于 Zabbix + Prometheus + Grafana 开发的
    2022-10-10归属地:上海
  • 流云追风
    我们现在就是碎片化监控,没有整体的图, 调用链没有,排查起问题来跟老师的例子中一模一样
    2021-10-25
  • Robin康F
    公司有监控平台minitor,会实时监控应用服务器线程状况,CPU、内存、磁盘剩余空间,还有redis和rocketmq的监控,是否阻塞,同时也有调用链的展示。之前接过听云,后来不知道为啥不用了。如果发现异常,会发送飞书(类似企业微信)进行工作群报警,研发第一时间介入。最大的坑是公司某些组件有bug,导致的堆积产生的爆发性故障
    2020-04-29
收起评论
显示
设置
留言
14
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部