互联网APP监控即时报警解决最终方案及总结

前言
  1. 首先描述下公司APP监控的建构,通过agent采集app的request-metrics,jvm-metrics,第三方(mysql-metrics,http-metrics)等指标信息
  2. 通过thrift协议发送到服务端,push到kafka,最终持久化时序数据库druid。
  3. 我们alarm系统就是从kafka拉去consumer数据来做流式计算达到即时报警的目的。
初始版本问题
  1. 由于是按照metrics设计策略,一次只能选择一个metric,同一个app需要设置n策略才能app所有监控,而且产生多个alarm通知,使用体验不好。
  2. 于是决定把关于app的所有指标维度都聚合在一起。
  3. 参考alartManager把通知事件进行一个聚合,聚合方案就是30s等待时间,发结果一次通过email发送出去。
指标整理
  1. request-metric app本身流量指标
  • request 每分请求数
  • count5xx 每分500错误数
  • count5xxRate 500错误率=总500错误数/总请求数
  • costTime 平均响应时间=总响应时间/总请求数
  1. http-metric 第三方调用
  • request 每分请求数
  • count5xx 每分500错误数
  • count5xxRate 500错误率=总500错误数/总请求数
  • costTime 平均响应时间=总响应时间/总请求数
  1. zbrd-metirc 网关域名的流量指标
  • request 每分请求数
  • count5xx 每分500错误数
  • count5xxRate 500错误率=总500错误数/总请求数
  • costTime 平均响应时间=总响应时间/总请求数
  1. gc-metirc 负载指标
  • GC次数 gcCount
  • GC时间 gcTime
  1. jvm-metirc 负载指标
  • 已使用堆内存大小 heapUsed
  • CPU使用率 processCpuLoad
  • 堆内存使用率 heapUsedRate(新) heapUsed/heap(最大堆内存)
  1. jdbc-metrics 连接池
  • activeCount 活跃连接数
  • activeCount/pooling_values 激活数(代表在使用的)与连接pool的数(是变化的)的比例Rate,
  1. sql-metrics client调用sql 第三方调用
  • request 每分Sql执行数
  • errorCount 每分Sql执行错误数
  • errorRate 执行错误率
  • costTime 平均执行时间=总响应时间/总请求数
  1. kafka-metrics 集群
  • offset-lag (依赖topic group)
  • message-in (集群,topic,broker)不做
最终架构方案

broker
这里写图片描述


  1. 流式计算的构建采用kafka-stream。
  2. FilterProcessor主要用于根据策略过滤消息。
  3. ReduceProcessor主要根据appId对指标做数据聚合,这里我们又采用异步数据聚合(主要考虑每次都与redis通信,IO消耗时间太大)。先聚合在local,再10s轮询同步到redis。
  4. MatchProcessor主要是聚合数据与策略进行匹配,触发报警。把报警事件推送到kafka来解耦
  5. alarmEvent处理器主要提供消息持久化,email聚合推送,钉钉等各种渠道推送。
结果总结
1. 结果
  1. 处理的上报数据量日均在682百万以上,8000+qps处理消息。
    3.报警行为延迟在30s内,主要来自agent推送,轮询到分布式cache。
    2.处理数据会随着公司app增加而增大,横向扩展能力强。
2. 价值结果
  1. 技术价值很好的一个实时流式计算,聚合业务指标的案例落地。在现代业务系统中越来越多Lambda架构数据系统。
  2. 业务价值,报警系统是app监控系统一个重要组成部分,是公司服务可用性的基础组件。
界面展示

1.创建策略界面


broker
这里写图片描述


2.钉钉报警通知


broker
这里写图片描述


3.email报警通知


broker
这里写图片描述


  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值