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

关于项目

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

Architecture

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

  • 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作为数据源)

    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等最常用组件

写在最后

原文地址:https://www.cnblogs.com/Lord-X/p/11479776.html

时间: 2024-11-08 14:55:24

Pepper Metrics - Spring/Spring Boot应用性能监控利器的相关文章

.Net Core 2.0+ InfluxDB+Grafana+App Metrics 实现跨平台的实时性能监控

最近这段时间一直在忙,没时间写博客,负责了一个项目,从前端到后端一直忙,同时还有其他第几个项目的系统架构要处理. 去年就开始关注net core了,只是平时写写demo,没用在项目中,正好这次机会就用了net core,具体是什么时候开始的不太记得了,总之刚开始是用core 1.0开发,然后在开发的时候突然想到,平时我们的项目中都没有做过项目的实时监控,为什么这次不试试看呢,而且还能知道每天什么时段的流量走向,系统吞吐量等.记得之前去北京总公司的时候,看到java开发部那边有一个大屏幕,实时的显

MySQL 的实时性能监控利器【转】

操作系统及MySQL数据库的实时性能状态数据尤为重要,特别是在有性能抖动的时候,这些实时的性能数据可以快速帮助你定位系统或MySQL数据库的性能瓶颈,就像你在Linux系统上使用「top,sar,iostat」等命令工具一样,可以立刻定位OS的性能瓶颈是在IO还是CPU上,所以收集/展示这些性能数据就更为重要,那都有哪些重要的实时性能状态指标可以反应出系统和MySQL数据库的性能负载呢? 目前在Linux跑MySQL是大多数互联网公司的标配,以上图片的性能数据指标项是我认为在Linux,MySQ

MySQL 的实时性能监控利器

操作系统及MySQL数据库的实时性能状态数据尤为重要,特别是在有性能抖动的时候,这些实时的性能数据可以快速帮助你定位系统或MySQL数据库的性能瓶颈,就像你在Linux系统上使用「top,sar,iostat」等命令工具一样,可以立刻定位OS的性能瓶颈是在IO还是CPU上,所以收集/展示这些性能数据就更为重要,那都有哪些重要的实时性能状态指标可以反应出系统和MySQL数据库的性能负载呢? 目前在Linux跑MySQL是大多数互联网公司的标配,以上图片的性能数据指标项是我认为在Linux,MySQ

[转] Performance_js中计算网站性能监控利器

1.Performance方法 Performance提供的方法可以灵活使用,获取到页面加载等标记的耗时情况. performance.now() //返回当前到页面打开时刻的耗时,精确到千分之一毫秒 performance.mark('worker_installed') //建立测速标记 performance.clearMarks() //清除标记 performance.getEntries() //对网页发起的所有HTTP请求耗时信息统计后,以数组方式返回 2.Performance属

asp.net core api网关 实时性能监控

asp.net core api网关 实时性能监控 使用InfluxDB.Grafana Dockerfile 运行 InfluxDB.Grafana influxdb: image: influxdb ports: - "8086:8086" - "8083:8083" environment: - INFLUXDB_DB=TogetherAppMetricsDB - INFLUXDB_ADMIN_ENABLED=true - INFLUXDB_ADMIN_USE

Spring Boot+Druid进行监控

Druid Spring Boot Spring Boot使用Druid监控 maven配置 applicationproperties配置 方式一原生的servlet和filter方式 方式二使用代码注册Servlet和Filter 项目监控 Druid Druid:一款为监控而生的数据库连接池框架,整个项目由数据库连接池.插件框架和SQL解析器组成. Druid功能介于PowerDrill和Dremel之间,它几乎实现了Dremel的所有功能,并且从PowerDrill吸收一些有趣的数据格式

Spring Boot Admin2.X监控的服务context-path问题

在使用Spring Boot Admin进行监控时,如果被监控的服务没有加context-path的话是不会有任何问题的,一旦服务加了context-path的配置,监控就会失败. 下图是正常情况的显示: 我们给被监控的服务增加一个context-path: server.servlet.context-path=/yinjihuan 当被监控的服务增加了context-path之后,这边就会报异常了,如下图: 原因是什么呢? 这是因为加了context-path后actuator的访问路径都发

Spring Boot 监控利器 —— Actutor

参考 CSDN-学习Spring Boot:(二十七)Spring Boot 2.0 中使用 Actuator 使用Actuator监控Spring Boot应用 程序猿DD-Spring Boot Actuator监控端点小结 官宣-Spring Boot Actuator Web API Documentation Spring Boot Admin Spring Boot Admin 2.0开箱体验 纯洁的微笑-Spring Boot(二十):使用 spring-boot-admin 对

Spring -> Spring Boot > Spring Cloud

Spring -> Spring Boot > Spring Cloud 这几天刚刚上班,公司用的是Spring Cloud,接触不多.我得赶快学起来. 想学习就必须得知道什么是微服务,什么是Spring Boot,什么是Spring Cloud,以及两者之间有什么关系? 什么是微服务? 简而言之,微服务架构风格是一种将单个应用程序作为一套小型服务开发的方法,每种应用程序都在自己的进程中运行,并与轻量级机制(通常是HTTP资源API)进行通信. 这些服务是围绕业务功能构建的,可以通过全自动部署