Pepper Metrics - Spring/Spring Boot应用性能监控利器

关于项目

Pepper Metrics是我与同事开发的一个开源工具(https://github.com/zrbcool/pepper-metrics),其经过收集jedis/mybatis/httpservlet/dubbo/motan的运行性能统计,并暴露成prometheus等主流时序数据库兼容数据,经过grafana展现趋势。其插件化的架构也很是方便使用者扩展并集成其余开源组件。
请你们给个star,同时欢迎你们成为开发者提交PR一块儿完善项目。git

Architecture

Pepper Metrics项目从核心上来讲,基于Tom Wilkie的RED理论,即对每一个服务
(这里的服务特指进程中的某种调用,好比调用一次数据库查询)进行RED指标收集,包括:github

  • Rate (请求速率通常指QPS)
  • Errors (错误数或单位时间窗口内的错误率)
  • Duration (请求消耗的时间通常以PXX的百分位时间表示,好比P99=100ms表明百分之九十九的请求耗时在X毫秒内)

上面简述了Pepper Metrics项目的核心思想及方法论依据,而从技术上来讲,Pepper Metrics项目构建了一套完整的可插拔插件体系,使应用能够基于选用的组件(如RPC通讯框架dubbo,motan、ORM对象模型关系映射框架mybatis、标准的HTTP Servlet组件、Redis操做库jedis、等)选择现有的插件扩展直接具有上述指标的:数据库

  • 收集
  • 打印(基于标准格式设计并基于slf4j定时输出于日志)
  • 输出(针对多种数据库,默认以prometheus实现,将指标输出到prometheus中)
  • 可视化(基于grafana开发的dashboard,默认以prometheus做为数据源)mybatis

    Concept

    Architecture

    各个组件说明
    • Profiler, 核心部分,用于启动按期调度任务,并经过ExtensionLoad加载全部的ScheduledRun扩展,按照指定周期发起调度。同时内部维护Stats的构造器Profiler.Builder
    • Scheduler, 虚拟概念,在Profiler做为一个定时任务存在
    • ExtensionLoader, 很是重要的组件,经过Java SPI机制加载插件,使项目的各个模块能够灵活插拔,也是项目架构的基石
    • ScheduledRun, 扩展点:pepper metrics core会定时调度,传递全部的Stats,实现插件可使用Stats当中收集到的性能数据,目前已实现的为scheduled printer组件
    • MeterRegistryFactory,扩展点:基于不一样的micrometer的Registry实现抽象并屏蔽各个数据库的差别
    • Pepper Metrics X, 具体的集成,咱们的目标是度量一切,目前计划实现的为:jedis,motan,dubbo,servlet,mybatis等最经常使用组件

写在最后

相关文章
相关标签/搜索