监控系统学习总结

1.背景介绍

      我们在工作中开发的业务系统都要接入监控系统并配置上报警信息,当某个业务系统的某个方法调用性能飚高,或者可用率下降的时候,我们通过报警能及时发现并处理,监控系统可以按照秒,分钟,小时看这个方法的执行调用情况,类似下图,那么这种监控系统我们是否考虑过业界有哪些实现?以及这种监控系统的原理是啥?底层存储的数据结构是啥?

2. 原理分析

       通常我们的业务系统要集成监控系统的SDK,业务系统进行在统计的方法前后埋点(可通过AOP实现)写调用日志信息到本地磁盘里,然后应用的所在docker还有一个日志收集器服务agent,这个agent定时搜集日志信息往日志中心进行上报,如下图所示

       如果不用这种日志收集agent的话,我们也可以把日志信息放到LinkedBlockingQueue,然后另外启动一个线程把这些信息传到日志收集中心,如果要统计CPU的信息要启动2个线程,一个线程负责收集CPU信息到LinkedBlockingQueue,另外一个线程从队列获取数据放到日志收集中心,比如像秒级监控收集可以基于guava的Cache(RemovalListener)做的调用量计数器,由于调用日志可能非常大,我们需要考虑是否实时把调用日志都要传到日志收集中,是否容忍日志数据丢失的问题,

      针对这种调用日志采用什么数据结构存储呢,比如上图哪个监控页面是统计某个保存方法的性能情况,监控key为system.product.doSave,上面有每5分钟的监控数据,我们很容易想到可以用redis的hash,key是时间,value是改时间段的调用性能情况(tp99),调用次数和其它监控指标也一样 ,如下图所示

2020-05-04 10:50:00   2
2020-05-04 10:55:00   3
2020-05-04 11:00:00   3
2020-05-04 11:05:00   4

   至于这个监控key的生成算法则则比较简答,可以本地测试下

   public static void main(String[] args) {
        long currentTime = System.currentTimeMillis()/1000;
        long timePrex  = currentTime/300*300;
        System.out.println(timePrex);
    }


3. 业界参考

3.1 Openstack Telemetry

polling agents:一种server,周期性的去探测状态和数据,并进行转化,完了推送至消息中间件(Notification Bus)
notification agents:监听消息队列,把消息转化为事件和数据采样,执行预定义的一系列动
collector: 保存polling agents和notification agents产生的数据,写入某种存储
api:对外提供数据查询,屏蔽存储细节,存储系统不对外直接暴露

采集:celiometer
telemetry数据采集,虽然官方推荐用户使用主动推送数据的方式,目前仍然以polling agent主动去探测为主。
http://docs.openstack.org/developer/ceilometer/architecture.html
存储:gnocchi
http://docs.openstack.org/developer/gnocchi/architecture.html
报警:aodh
http://docs.openstack.org/developer/aodh/architecture.html

3.2 Google Stackdriver

Stackdriver原本是一家创业公司,主要面向AWS和Rackspace平台用户提供监控服务。
后被google收购,并入Google Cloud Platform,为GCP用户提供监控、日志、问题诊断支持,目前处于beta阶段,不对外提供SLA保证。

3.3 AWS CloudWatch(https://www.amazonaws.cn/en/cloudwatch/)

3.4 influxdb+grafana(https://docs.influxdata.com/influxdb/v1.5/introduction/installation/)

3.5 ELK日志分析系统(参见https://www.cnblogs.com/cheyunhua/p/11238489.html

3.6 Google Dapper分布式链路追踪监控系统论文(参见https://blog.csdn.net/vking_wang/article/details/89203639) 

  https://github.com/dianping/cat(大众点评)
   https://github.com/apache/skywalking
  https://github.com/naver/pinpoint(韩国)
  https://github.com/openzipkin/zipkin( Twitter)
  https://github.com/apache/incubator-skywalking   

3.7 阿里性能分析工具https://github.com/alibaba/TProfiler/wiki/TProfiler%E4%BB%8B%E7%BB%8D%E6%96%87%E6%A1%A3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值