54 | 套路篇:应用监控的一般思路
倪朋飞
该思维导图由 AI 生成,仅供参考
你好,我是倪朋飞。
上一节,我带你学习了,如何使用 USE 法来监控系统的性能,先简单回顾一下。
系统监控的核心是资源的使用情况,这既包括 CPU、内存、磁盘、文件系统、网络等硬件资源,也包括文件描述符数、连接数、连接跟踪数等软件资源。而要描述这些资源瓶颈,最简单有效的方法就是 USE 法。
USE 法把系统资源的性能指标,简化为了三个类别:使用率、饱和度以及错误数。 当这三者之中任一类别的指标过高时,都代表相对应的系统资源可能存在性能瓶颈。
基于 USE 法建立性能指标后,我们还需要通过一套完整的监控系统,把这些指标从采集、存储、查询、处理,再到告警和可视化展示等贯穿起来。这样,不仅可以将系统资源的瓶颈快速暴露出来,还可以借助监控的历史数据,来追踪定位性能问题的根源。
除了上一节讲到的系统资源需要监控之外,应用程序的性能监控,当然也是必不可少的。今天,我就带你一起来看看,如何监控应用程序的性能。
指标监控
跟系统监控一样,在构建应用程序的监控系统之前,首先也需要确定,到底需要监控哪些指标。特别是要清楚,有哪些指标可以用来快速确认应用程序的性能问题。
对系统资源的监控,USE 法简单有效,却不代表其适合应用程序的监控。举个例子,即使在 CPU 使用率很低的时候,也不能说明应用程序就没有性能瓶颈。因为应用程序可能会因为锁或者 RPC 调用等,导致响应缓慢。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
应用监控的一般思路是通过指标监控和日志监控两大部分来实现。指标监控主要是对一定时间段内性能指标进行测量,然后通过时间序列的方式进行处理、存储和告警。而日志监控则提供更详细的上下文信息,通常通过ELK技术栈来进行收集、索引和图形化展示。在复杂业务场景中,还可以构建全链路跟踪系统,动态跟踪调用链中各个组件的性能,生成整个流程的调用拓扑图,加快定位复杂应用的性能问题。文章还介绍了监控应用程序的性能指标和搭建链路跟踪和日志监控系统的方法,以及如何快速定位应用瓶颈。通过监控系统,可以及时汇报问题给相关团队处理,并通过直观的图形界面动态展示应用程序的整体性能。全链路跟踪系统可以帮助快速定位跨应用的性能问题,生成线上系统的调用拓扑图,在分析复杂系统时尤其有效。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Linux 性能优化实战》,新⼈⾸单¥68
《Linux 性能优化实战》,新⼈⾸单¥68
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(18)
- 最新
- 精选
- 科学Jia最近在使用skywalking这个全链路监控系统,感觉比日志监控什么好太多了。
作者回复: 链路监控和日志监控的目标不一样,一个是跨组件的整体监测,一个是单组件的详细细节,通常是互补的
2019-05-09316 - 玉剑冰锋ELK中采集端还可以使用filebeat,整个架构可以拓展为filebeat-kafka(zookeeper)-logstash或sparkstreaming-es。除了可以做日志查询之外可以做业务关联等
作者回复: 👍
2019-04-0310 - 江中芦苇全链路跟踪,如何打标使其在监控系统为一个调用链的?
作者回复: 最常用的方法是在调用入口处生成一个跟踪ID,在后续所有的调用中都保留着这个ID
2019-07-093 - 科学Jia上次老师也回答过我,应用程序需要自己提供metric到监控服务,今天讲到这里,那再具体点,请问老师是否有什么推荐的框架或者插件,java开发可以使用到程序里去收集自己的metric?
作者回复: 这个取决于应用程序使用的框架了,很懂框架都已经内置了Metrics库。如果是使用Prometheus的话,可以使用它的Java客户端
2019-04-012 - Maxwell公司的项目用了dubbo服务,这个要怎么监控应用程序的性能呢?
作者回复: 请参考 dubbo 的文档
2019-04-17 - Martin_X系统层:falcon 应用性能层&链路层:cat 日志入hive 业务更细粒度定制(无覆盖死角)会再封装一层监控,比如应用内部层的路由,,环比、同比等动态阈值告警
作者回复: 👍谢谢分享
2019-04-02 - 世勤🤔php微服务怎么监控
作者回复: 如果是php-fpm的话,修改配置就可以开启status
2019-04-01 - 黑客不够黑我在我们线上部署了一套ELK监控日志,只是做了些架构调整,logstash采集日志发往kafka,再用logstash订阅kafka中的日志发往elasticsearch,另外开了一个spark程序消费kafka中的日志流,并且做了个简单过滤错误日志的功能,过滤到的错误日志再写回kafka,再用一个Java程序消费错误日志流,将其通过微信的api发送即时消息到微信,以起到告警作用。其实当初设计时”架构比较大包含了Hadoop存储,spark集群等组件,后来由于线上资源不够只能做了阉割,因为对Java不太熟,spark的功能没有继续扩展,目前只是简单的过滤错误日志。2020-03-2416
- Issac慜感觉搞嵌入式的,就只能通过日志了🌝🌝2021-12-074
- Aaron Cheung打卡 efk2019-04-012
收起评论