jpOwl一款高性能的后端业务监控,动态配置策略规则的工具包

简介: jpOwl一款高性能的后端业务监控,动态配置策略规则的工具包

设计架构

jpOwl客户端是java语言编写而成,要求做到API简单、高可靠性能、无论在任何场景下客户端都不能影响各业务服务的性能。旨在为各业务线提供丰富的埋点功能与数据采集。

在收集数据方面使用ThreadLocal,为每一个使用该变量的线程都提供一个变量值的副本,是Java中一种较为特殊的线程绑定机制,是每一个线程都可以独立地改变自己的副本,而不会和其它线程的副本冲突。

df274f5f2280cabe02ee9febc4b4c5e.png

如图,执行业务逻辑的时候,就会把此次请求对应的监控存放于ThreadContext中,ThreadContext其实是一个监控树的结构。最后业务线程执行结束时,将监控对象异步存入一个内存队列中,jpOwl有个消费线程将队列内的数据异步发送到第三方存储引擎。

场景需求

  • 监控粒度可控制作用在接口上,方法上,乃至代码块上
  • 异步方式运行,即使失败也不影响业务流程
  • 提供注解式与编程式的使用方式
  • 日志级别可根据响应时间,失败次数,数据大小决定升降
  • 可添加自定义触发器,触发特定功能
  • 监控产生的日志内容可动态指定记录前缀名
  • 支持内存,本地文件,mongodb,elastic search等输出源
  • 支持在线修改调整日志记录级别
  • 支持监控数据延迟上报或触发,便于聚合业务数据统计记录

支持以秒级,分钟级监控异常失败次数,方法接口执行次数。根据指标配置告警策略,如钉钉,邮件,短信等方式。业务可根据需要设置日志前缀与延迟上报,在内存队列或触发器进行业务指标计算公式的预计算,对个性化业务指标进行监控告警或数据记录至其他数据源,由echart等图表工具展示。

性能设计

序列化和通信是整个客户端包括服务端性能里面很关键的一个环节

  • 异步序列化,jpOwl序列化协议protobuf序列化协议
  • 异步通信,jpOwl通信是基于Netty来实现的NIO的数据传输
  • 异步化IO传输的操作
  • 异步数据采集,基于NIO管道记录日志
  • 基于内存级别的数据缓冲,可指定缓存队列大小
  • 可指定内存队列安全机制,当队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志

价值与优势

价值

  • 减少故障发现时间
  • 降低故障定位成本
  • 辅助应用程序优化
  • 监控数据是全量统计,jpOwl支持预计算数据
  • 链路数据是采样计算

优势

  • 实时处理:信息的价值会随时间锐减,所以收集信息需要迅速
  • 全量数据:全量采集指标数据,便于深度分析故障案例
  • 故障容忍:故障不影响业务正常运转、对业务透明
  • 高吞吐:海量监控数据的收集,需要高吞吐能力做保证

业务模型监控

jpOwl主要支持以下四种监控模型:

  • Transaction 适合记录跨越系统边界的程序访问行为,比如远程调用,数据库调用,也适合执行时间较长的业务逻辑监控,Transaction用来记录一段代码的执行时间和次数。
  • Event 用来记录一件事发生的次数,比如记录系统异常,它和transaction相比缺少了时间的统计,开销比transaction要小。
  • Heartbeat 表示程序内定期产生的统计信息, 如CPU利用率, 内存利用率, 连接池状态, 系统负载等。
  • Metric 用于记录业务指标、指标可能包含对一个指标记录次数、记录平均值、记录总和,业务指标最低统计粒度为1分钟。

消息树

jpOwl监控系统将每次URL、Service的请求内部执行情况都封装为一个完整的消息树、消息树可能包括TransactionEventHeartbeatMetric等信息。

完整的消息树

413d524cf5dbaade9c1aeeb69369b0e.png

可视化消息树

cb447fccdb82ba0e5d224d5be1166a6.png

分布式消息树【一台机器调用另外一台机器】

2e3e469f9922b0043ee8a8d7a44302e.png

项目地址:github.com/jiangeeq/jp…


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
1月前
|
弹性计算 负载均衡 容灾
slb配置后端服务器组
配置阿里云SLB后端服务器组涉及四个主要步骤:创建服务器组、添加ECS实例、关联监听规则和设定负载均衡策略。这使得流量根据业务需求和服务器特性进行转发,便于应用架构的灵活管理和扩展,支持蓝绿部署、灰度发布,并通过多可用区提升系统可用性和容灾能力。
26 3
|
1月前
|
Java 数据库连接 开发工具
web后端-SpringCloud-Config分布配置
web后端-SpringCloud-Config分布配置
|
2月前
|
安全 Java Maven
后端进阶之路——深入理解Spring Security配置(二)
后端进阶之路——深入理解Spring Security配置(二)
|
1月前
|
人工智能 运维 监控
构建高性能微服务架构:现代后端开发的挑战与策略构建高效自动化运维系统的关键策略
【2月更文挑战第30天】 随着企业应用的复杂性增加,传统的单体应用架构已经难以满足快速迭代和高可用性的需求。微服务架构作为解决方案,以其服务的细粒度、独立性和弹性而受到青睐。本文将深入探讨如何构建一个高性能的微服务系统,包括关键的设计原则、常用的技术栈选择以及性能优化的最佳实践。我们将分析微服务在处理分布式事务、数据一致性以及服务发现等方面的挑战,并提出相应的解决策略。通过实例分析和案例研究,我们的目标是为后端开发人员提供一套实用的指南,帮助他们构建出既能快速响应市场变化,又能保持高效率和稳定性的微服务系统。 【2月更文挑战第30天】随着信息技术的飞速发展,企业对于信息系统的稳定性和效率要求
|
2月前
|
安全 Java 数据库
后端进阶之路——浅谈Spring Security用户、角色、权限和访问规则(三)
后端进阶之路——浅谈Spring Security用户、角色、权限和访问规则(三)
|
3天前
|
JSON API 数据库
后端架构设计与优化:打造高性能应用后端
后端架构设计与优化:打造高性能应用后端
15 2
|
13天前
|
监控 负载均衡 API
构建高性能微服务架构:后端开发的最佳实践
【4月更文挑战第14天】 在当今快速发展的软件开发领域,微服务架构已成为构建可扩展、灵活且容错的系统的首选方法。本文深入探讨了后端开发人员在设计和维护高性能微服务时需要遵循的一系列最佳实践。我们将从服务划分原则、容器化部署、API网关使用、负载均衡、服务监控与故障恢复等方面展开讨论,并结合实际案例分析如何优化微服务性能及可靠性。通过本文的阅读,读者将获得实施高效微服务架构的实用知识与策略。
|
1月前
|
消息中间件 缓存 数据库
构建高性能微服务架构:后端开发的进阶之路
【2月更文挑战第30天】 在当今互联网技术迅速发展的背景下,传统的单体应用已经难以满足日益增长的业务需求。微服务架构以其灵活性、可扩展性和容错性成为解决复杂系统问题的有效方案。本文将探讨如何构建一个高性能的微服务架构,包括关键技术选型、系统设计原则以及性能优化实践,旨在为后端开发人员提供一条提升系统处理能力和稳定性的进阶路径。
|
1月前
|
监控 NoSQL 测试技术
构建高性能后端服务的关键因素与最佳实践
本文将介绍构建高性能后端服务的关键因素和最佳实践,包括服务器选型、数据库设计、代码优化等方面,帮助开发人员在后端开发中提升性能并满足高并发需求。
127 15
|
4月前
|
XML API 数据库
七天.NET 8操作SQLite入门到实战 - 第六天后端班级管理相关接口完善和Swagger自定义配置
七天.NET 8操作SQLite入门到实战 - 第六天后端班级管理相关接口完善和Swagger自定义配置