线上监控

作者: Lydia1991 | 来源:发表于2020-06-10 13:43 被阅读0次

    监控类型

    系统监控

    系统监控更多是关注业务系统所在的环境及其资源的情况,简单理解就是能让系统正常运行起来的先决条件的监控。

    • 资源层:关注运行环境的硬件等资源,如cpu,内存,磁盘的使用率以及网络流量等,这也是通用的监控点;同时也会监控中间网络服务,比如DNS的访问,保证域名等有效性,是否负载均衡,机器流量分布不均会导致业务流程阻塞,资源也未必能很好地被利用;中间件如一些消息服务是否有出现消息堆积等情况。

    • 基础架构层:关注实现业务系统的技术底层运行情况,以java开发的系统为例,比如jvm,一般会对其线程进行监控,如线程占用的内存,内存回收机制是否正常,是否有内存泄漏,同时在方法区,方法的调用情况是否正常,堆栈使用是否合理,代码逻辑异常时是否有正常抛出,日志是否清晰等。

    • 数据层:关注数据库读写情况,比如proxy连接数是否在运行范围内,慢查询的数量,数据量的大小以及表的大小会影响读写情况,在一些耗时超时的跟踪上是可以通过监控手段进行跟踪。

    • 依赖方:关注调用情况,调用链路是否正常,是否有越权调用的情况,调用耗时等各种方面。

    业务监控

    业务监控主要关注两个方面,就是系统功能以及数据。

    • 功能监控
      就是对用户的操作行为进行打点监控。比如用户在使用某一功能过于频繁,导致操作被限制,用户由于对功能不理解反馈功能异常;又或者对于获得利益的功能,比如领取代金券领取奖品等,领取是否正常等;
      同时关注业务接口尤其是几个关联接口的使用场景,比如领奖的几个关联接口中的某一个不通或者异常导致整个链路失败的,这时就可以直接根据告警信息来准确地处理问题;
      对于页面访问的情况,是否出现白屏,load超时,页面不兼容的情况,可以通过打点监控获取到相关的信息,如果是bug或其他优化问题就可以记录并做日后优化的一个工作项;
      定时任务,在业务场景用应用是非常广泛的,如定时更新游戏里面的任务,定时给用户发奖,定时去获取某些信息等等,监控定时任务的执行情况保证业务流程的正常执行。
    • 数据监控
      数据监控是针对业务数据来说的,有些业务系统每天都会出业务报表,如果报表中的业务数据变化比较大的话,就必须通过告警让相关关注人员去确认业务数据的变化是否合理,现这种场景,一般就是通过环比同比设置预警阀值进行监控,比如环比超过10%,就需要告警到对应人员。
      结合业务场景来说,如上面提到的发奖品等,数据层面就要关注发出量和领取量以及库存量,如果有设置了每天发出量的限制的话就要监控是否有超出预值,同时当库存量不足支持发奖活动的需求的,就要即时的告警出来。
      除了数据量相关的监控以外,还有就是数据逻辑功能,比如数据计算,是否和预期值是正常的,尤其是在大数据量的计算的时候,如果一条条找错误数据的话明显非常低效,于是就可以通过监控告警的方式,将不符合既定规则的数据告警出来,就可以精准定位到是哪条数据出现问题,然后再去追溯跟进问题原因。

    不同的业务系统有不同的监控点,所以这里只讨论比较通用的场景,业务监控是建立在具体的业务逻辑上,依据其具体的逻辑去实现监控点。

    监控实施

    监控点都梳理情况之后,就可以设计监控实施的方案,这里会涉及需要用到的工具或技术栈,以及对于的一个预警方案和救火方案,可以通过这几个明细项去设计实施方案:

    1、监控层:比如系统监控中的运行环境资源
    2、监控项:比如系统监控中的运行环境资源中的cpu,内存等
    3、监控点:比如网络使用中的网络io,网络连接数据,丢包率、重传率等
    4、监控工具(方案):其实就是应用在这个监控点上具体的工具或者是方法
    5、预警策略:当监控工具将对应的监控点都监控起来,我们就能得到相关的数据,依据数据或信息设置一些预警策略,在业务层面上,比如当库存少于XXX量时,就告警,系统层面上比如磁盘使用率超过90%时就告警
    6、告警载体:如以邮件,钉钉等方式通知到关注方
    7、关注方:相关技术人员

    举例如图: image

    上图通过上述的一部分监控类型举例

    在监控工具(方案)上面,上述是通过一些点去选择具体的工具或方案,但尤其是在系统监控方面,一个个点用工具去实施维护肯定是不切实际的,现在行业里面也有很多具体的方案或工具可以全面的对系统方面进行监控,比如新型监控告警工具Prometheus,像利用Prometheus+Grafana搭建起监控运维平台,就基本上面可以满足系统监控的实施需求。

    监控价值评价

    • 从盘点到设计到落地,监控起来后,结合做监控的目的——为了提升线上问题感知能力,降低排查问题的成本,实施方案需要评价最后得到的价值和结果。

    • 基于此目的出发,我们可以记录每实施一项监控点是否满足此目的,比如做数据计算规则的监控,可以精准定位到时哪一条数据出现问题,而不是自己一条条去排查,降低排查成本,告警梳理完善,信息更加精确地推送到关注方。

    • 但也有反例,就是实施了监控之后让告警信息复杂化,过多的无效告警信息,或者是不需要关注方关注的信息告警出来,长期以来会让关注方对告警信息麻木,最后真的有线上问题的时候就忽略了重要信息,还有就是实现监控之后对业务系统有较大的代码插入,带来系统bug,这样也是得不偿失,所以综合来说可以通过判断实施监控前和实现监控后的效果来判断监控是否有效,对于无效监控应当机立断地废弃掉。

    附录:

    使用Prometheus+Grafana搭建监控系统实践
    系统监控工具集

    原文链接

    相关文章

      网友评论

        本文标题:线上监控

        本文链接:https://www.haomeiwen.com/subject/dznutktx.html