如何做好监控微服务调⽤?

监控对象
  • ⽤户端监控。通常是指业务直接对⽤户提供的功能的监控

  • 接口监控。通常是指业务提供的功能所依赖的接口的监控

  • 资源监控。通常是指某个接⼝依赖的资源的监控。比如该接口使用的redis 缓存,对redis 的监控就是资源的

    监控

  • 基础监控。通常是指对服务器本身的健康状况的监控。主要包括CPU利⽤率、内存使⽤量、I/O读写量、⽹卡

    带宽等

监控指标
  • 请求量。请求量监控分为两个维度,⼀个是实时请求量QPS,⼀个是统计请求量PV。QPS(Queries Per

    Second) 即每秒查询次数来衡量,它反映了服务调⽤的实时变化情况。统计请求量⼀般⽤PV(Page View)

    即⼀段时间内⽤户的访 问量来衡量,⽐如⼀天的PV代表了服务⼀天的请求量,通常⽤来统计报表。

  • 响应时间。⼤多数情况下,可以⽤⼀段时间内所有调⽤的平均耗时来反映请求的响应时间。可以把响应时间划

    分为多个区间,⽐如0~10ms、10ms~50ms、50ms~ 100ms、100ms~500ms、500ms以上这五个区

    间。除此之外,还可以从P90、P95、P99、P999⻆度来监控请求的响应时间,⽐如P99 = 500ms,意思是

    99%的请求响 应时间在500ms以内,它代表了请求的服务质量,即SLA。

  • 错误率。错误率的监控通常⽤⼀段时间内调⽤失败的次数占调⽤总次数的⽐率来衡量,⽐如对于接⼝的错误率

    ⼀般⽤接⼝ 返回错误码为503的⽐率来表示。

监控维度
  • 全局维度。从整体⻆度监控对象的的请求量、平均耗时以及错误率,全局维度的监控⼀般是为了让你对监控对象的调⽤情 况有个整体了解。

  • 分机房维度。

  • 时间维度。同⼀个监控对象,在每天的同⼀时刻各种指标通常也不会⼀样

  • 核⼼维度。业务上⼀般会依据重要性程度对监控对象进⾏分级,最简单的是分成核⼼业务和⾮核⼼业务。

    核⼼业务和⾮核⼼业务在部署上必须隔离,分开监控,这样才能对核⼼业务做重点保障。

监控系统

主要包括四个环节:数据采集、数据传输、数据处理和数据展示

  • 数据采集

    通常有两种数据收集⽅式:

    • 服务主动上报,这种处理⽅式通过在业务代码或者服务框架⾥加⼊数据收集代码逻辑,在每⼀次服务

      调⽤完成后,主动上报服务的调⽤信息。

    • 代理收集,这种处理⽅式通过服务调⽤后把调⽤的详细信息记录到本地⽇志⽂件中,然后再通过代理去解

      析本地⽇志⽂ 件,然后再上报服务的调⽤信息。

  • 数据传输

    • UDP传输,这种处理⽅式是数据处理单元提供服务器的请求地址,数据采集后通过UDP协议与服务器建⽴

      连接,然后把数 据发送过去。

    • Kafka传输,这种处理⽅式是数据采集后发送到指定的Topic,然后数据处理单元再订阅对应的Topic,就

      可以从Kafka消息队列中读取到对应的数据。

      image-20210615200330740
  • 数据处理

    数据聚合两个维度:接口维度和机器维度

    聚合后的数据持久化: 索引数据库(es) 或者 时序数据库influxDB

  • 数据展示

    数据展示有多种⽅式,⽐如曲线图、饼状图、格⼦图展示

请我吃🍗