ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

关于系统监控的想法和实施(一):数据监控

2021-10-05 11:05:16  阅读:241  来源: 互联网

标签:调用 成功率 想法 指标 系统监控 线程 监控 日志


  大家好,我是爱吃里脊,下面由我来讨论下监控的想法。提到监控,对于维护系统至关重要,对发现问题,解决问题起着决定性的作用。

  我们来先来进行整体拆解,一个监控系统包含三个主体:数据采集,数据处理,数据展示。这次我们先来了解数据采集。

  首先要做监控系统首先得有一个监控对象,了解监控对象需要什么指标,比如一个业务后台系统,需要知道物理指标有的cup,磁盘,负载,魔法指标有接口调用数,接口的tp99,接口的可用率等等。一个前端应用,可能需要用户点击某个按钮,某个页面的次数,甚至是记录某个用户行为等等。其实这些指标很多,不同系统差别很大,关注点也会随之改变。要做好一个数据监控系统,就得应对这些变化。下边是具体的一些指标用于参考:
  机器维度的监控指标包括CPU、Load、内存、网络、IO、磁盘等相关指标,详细指标可以参考Liux监控命令对应的指标数据:https://linux.cn/article-9373-1.html?pr (主要可以参见top、vmstat 、free、iostat、netstat 、iptraf等命令相关的核心指标)。
  应用维度的监控指标包括JVM使用情况、线程池使用情况:JVM情况主要包括YGC次数、时间,FullGC次数、时间,新生代老年代占比;线程池情况主要包括的线程池大小、最大线程数、活跃线程数、队列大小等。
  服务维度的监控指标包括error日志报错情况、服务接口调用量、耗时、成功率,调用接口调用量、耗时、成功率,dal层操作调用量、耗时、成功率。
  外部依赖维度主要指应用系统常见的外部依赖的监控情况,主要包括数据库、缓存、消息队列等,这些一般情况都会独立进行部署,对应的机器监控同上面列举的机器维度监控;另外数据库还需要关注连接数、内存使用、SQL调用量、耗时、成功率,慢SQL等;缓存需要关注调用量、成功率,命中率、内存使用等;消息队列需要关注调用量、成功率,队列积压情况、死信队列等
  整体上的监控指标包括可用性监控(服务是否可用)、访问量监控(PV/UV)、负载监控(限流、熔断情况)、自定义的业务监控(异常业务场景、服务统计等)

  很显然,如果在应用程序里写这些监控处理,是很笨的,业务代码与功能代码耦合,违反了程序软件开发的开闭原则,单一原则。对之后的维护添堵。

  比较好的方式是机器安装客户端,或者应用集成客户端来进行采集,应用的日志可以通过aop的方式打印上传,为了尽可能的减少对业务代码的影响,可采用独立线程定时同步或者中间件mq,redis等定时同步。这是推日志的方式,对一些实时性较高的监控还可以进行服务端拉取的方式,这种方式较为复杂,需要客户端注册服务到服务中心,服务端获取服务中心服务后,主动请求目标的日志来拉取。这里可以举个例子:push方法用于Graphite等系统,而pull方法用于Prometheus等监视系统。但是无论哪种方式,基本思想都是这种组件化,独立,异步上传日志。
在这里插入图片描述

标签:调用,成功率,想法,指标,系统监控,线程,监控,日志
来源: https://blog.csdn.net/weixin_40574644/article/details/120611755

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有