神级开源,一站式、轻量级、低门槛、零侵入的 Java 应用全方位监控平台,开箱即用!!!

神级开源,一站式、轻量级、低门槛、零侵入的 Java 应用全方位监控平台,开箱即用!!!

一、前言

Java 应用开发的同学都知道,项目上线后,日志可视化查询、接口性能监控、慢请求分析、调用链监控、JVM 可视化监控是一件非常重要的事。
市面上对于上对于日志的可视化查询、接口的性能监控、调用链监控、JVM 的可视化监控都有常用的方案。

  • 日志可视化查询:ELK/EFK。
  • JVM 可视化监控与接口性能:Actuator + Prometheus + Grafana。
  • 调用链监控:PingPoint、Skywalking、Zipkin 等。

不过对于很多开发者来说,这中间存在大量繁琐的配置过程,且具备一定的使用学习门槛,部署成本与运维成本也比较高。

而对于大多数中小型企业或者个人开发者来说,并不想要这么大的投入,但又想要对应用做全方位的监控管理该怎么办?

小编今天要介绍的就是这样一款可免费使用的 Java 应用全方位监控平台。一站式、轻量级、低门槛、零侵入,开箱即用。

旨在于以极简、高效的方式,在一个平台上实现 Java 应用的日志采集与可视化查询、接口性能监控、慢请求分析、调用链监控、JVM 可视化监控。

二、软件介绍

zero-observer + zero-log = Java 应用一站式监控

官网地址:https://kuafucv.com

1. 系统架构

主要分为客户端和服务端两个部分。

2. 采集客户端【zero-log】

旨在提供低门槛、少配置、轻量级、无侵入的方式实现应用日志、接口性能、调用链、JVM 指标的自动采集与上报。
  • 基于 logback 实现自动采集代码中通过 log.error、log.warn、log.info、log.trace 方式输出的日志。
  • 采集各个接口的性能数据。
  • 采集方法调用链数据。
  • 采集 JVM 运行时各项指标。

3. 服务端【zero-observer】

收集客户端采集插件采集的客户端数据,并提供开箱即用的可视化与管理功能。

4. 功能介绍

功能实现情况
登录认证
仪表盘统计
应用日志采集
应用控制台日志
应用日志列表检索
接口性能监控
接口慢请求分析
CPU 监控
物理内存监控
堆内存监控
非堆内存监控
Eden区监控
Survivor区监控
OldGen区监控
Metaspace区监控
线程监控
GC监控
调用链监控

仪表盘

应用日志

控制台日志

应用日志查询

应用日志详情

接口性能监控

慢请求分析

调用链监控

JVM 监控



三、服务端部署

zero-observer 数据存储使用的是 mysql 与 elasticsearch,mysql 存储的是系统数据,elasticsearch 存储的是日志数据。
所以需要自行安装 mysql 与 elasticsearch。

1. Mysql 初始化脚本

创建数据库:zero_observer,执行脚本。

CREATE TABLE `app_log_growth_trend` ( `id` bigint(20) NOT NULL, `create_time` datetime NOT NULL, `app` varchar(255) NOT NULL, `env` varchar(50) NOT NULL, `level` varchar(10) NOT NULL, `statistic_time` datetime NOT NULL, `log_count` int(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE `app_log_total_growth_trend` ( `id` bigint(20) NOT NULL, `create_time` datetime NOT NULL, `statistic_time` datetime NOT NULL, `log_count` bigint(20) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE `app_log_level_statistic` ( `id` bigint(20) NOT NULL, `create_time` datetime NOT NULL, `app` varchar(255) NOT NULL, `env` varchar(50) NOT NULL, `level` varchar(10) NOT NULL, `statistic_time` datetime NOT NULL, `log_count` int(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE `app_env_instance` ( `id` bigint(20) NOT NULL, `create_time` datetime NOT NULL, `app` varchar(255) NOT NULL, `env` varchar(50) NOT NULL, `ip` varchar(50) NOT NULL, `port` varchar(5) NOT NULL, `hostname` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE `app_log_statistic` ( `id` bigint(20) NOT NULL, `create_time` datetime NOT NULL, `app_log_statistic_counter_id` bigint(20) NOT NULL, `app` varchar(255) NOT NULL, `env` varchar(50) NOT NULL, `statistic_time` datetime NOT NULL, `log_count` bigint(20) NOT NULL DEFAULT '0', `slow_request_count` bigint(20) NOT NULL DEFAULT '0', `error_count` bigint(20) NOT NULL DEFAULT '0', `warn_count` bigint(20) NOT NULL DEFAULT '0', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE `app_log_statistic_counter` ( `id` bigint(20) NOT NULL, `create_time` datetime NOT NULL, `statistic_time` datetime NOT NULL, `statistic_status` int(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE `system_config` ( `id` bigint(20) NOT NULL COMMENT '主键', `create_time` datetime NOT NULL COMMENT '创建时间', `key_code` varchar(50) NOT NULL COMMENT 'key编码', `key_name` varchar(50) DEFAULT NULL COMMENT 'key 名称', `key_value` varchar(255) NOT NULL COMMENT 'key值', `enabled` int(11) NOT NULL DEFAULT '1' COMMENT '是否启用', PRIMARY KEY (`id`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; INSERT INTO `system_config` (`id`, `create_time`, `key_code`, `key_name`, `key_value`, `enabled`) VALUES (1, '2025-07-19 23:56:06', 'app_log_storage_days', '应用日志存储天数', '3', 1); CREATE TABLE `users` ( `id` bigint(20) NOT NULL, `create_time` datetime NOT NULL, `account` varchar(100) NOT NULL, `pwd` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE `token_info` ( `id` bigint(20) NOT NULL, `create_time` datetime NOT NULL, `subject` varchar(100) NOT NULL, `token` varchar(255) NOT NULL, `expire_time` datetime NOT NULL, `expire_timestamp` bigint(20) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE `license` ( `id` bigint(20) NOT NULL, `create_time` datetime NOT NULL, `content` text NOT NULL, `remark` text DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE `request_monitor_statistic` ( `id` bigint(20) NOT NULL, `create_time` datetime NOT NULL, `statistic_date` int(11) NOT NULL, `app` varchar(255) NOT NULL, `env` varchar(50) NOT NULL, `uri` varchar(255) NOT NULL, `executeCount` int(11) DEFAULT NULL, `rtAvg` float DEFAULT NULL, `rtMax` int(11) DEFAULT NULL, `rtMin` int(11) DEFAULT NULL, `slow_count` int(11) DEFAULT 0, `slow_avg` float DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE `request_mapping` ( `id` bigint(20) NOT NULL, `create_time` datetime NOT NULL, `app` varchar(255) NOT NULL, `env` varchar(50) NOT NULL, `ip` varchar(50) NOT NULL, `port` varchar(5) NOT NULL, `hostname` varchar(255) NOT NULL, `uri` varchar(255) DEFAULT NULL, `method` varchar(10) DEFAULT NULL, `handler_method` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; ALTER TABLE app_env_instance ADD online INT NULL; ALTER TABLE app_env_instance ADD last_heartbeat DATETIME NULL; ALTER TABLE request_monitor_statistic ADD req_method varchar(10) NULL; CREATE TABLE `app_env` ( `id` bigint(20) NOT NULL, `create_time` datetime NOT NULL, `app` varchar(255) NOT NULL, `env` varchar(50) NOT NULL, `gene` varchar(20) NOT NULL, `signature` varchar(100) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE `sys_lock` ( `id` bigint(20) NOT NULL, `create_time` datetime NOT NULL, `lock_name` varchar(100) NOT NULL, `status` INT NOT NULL, `last_heartbeat` datetime DEFAULT NULL, `holder` varchar(255) DEFAULT NULL, `holder_id` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; 

2. Docker 部署

拉取镜像

docker pull registry.cn-hangzhou.aliyuncs.com/kuafucv/zero-observer:2.0.0 

启动容器

docker run -itd -p 8080:8080 --name zero-observer \ -e TZ=Asia/Shanghai \ -e ES_IP=127.0.0.1 \ -e ES_PORT=9200 \ -e ES_USERNAME=es \ -e ES_PASSWORD=es \ -e MYSQL_IP=127.0.0.1 \ -e MYSQL_PORT=3306 \ -e MYSQL_USERNAME=root \ -e MYSQL_PASSWORD=123456 \ registry.cn-hangzhou.aliyuncs.com/kuafucv/zero-observer:2.0.0 
参数解析:TZ:时区,默认 Asia/ShanghaiES_IP:elasticsearch 的 ipES_PORT:elasticsearch restapi 的端口ES_USERNAME:elasticsearch 用户名,无则不填即可ES_PASSWORD:elasticsearch 密码,无则不填即可MYSQL_IP:mysql 的ipMYSQL_PORT:mysql 端口MYSQL_USERNAME 用户名MYSQL_PASSWORD 密码

启动成功后,浏览器访问:http://127.0.0.1:8080/zero-observer/

默认用户密码:admin/123456

四、SpringBoot 应用接入

1. 引入 maven 依赖

<dependency><groupId>io.github.kuafucv</groupId><artifactId>zero-log-spring-boot-starter</artifactId><version>2.0.0</version></dependency>

2. 配置 application.yml

zero: log: server-url: http://127.0.0.1:8080/zero-observer 
注意:serverUrl 为 zero-observer 服务访问地址,该属性值为 http://ip:port/zero-observer

3. 启动类添加注解

启动类添加 @EnableZeroLog 注解

@SpringBootApplication@EnableZeroLogpublicclassApplication{publicstaticvoidmain(String[] args){SpringApplication.run(Application.class, args);}}

4. 启动服务

启动 Java 服务,等待日志自动上报至 zero-observer ,前往 zero-observer 查看对应数据。

更多内容请参考官网:https://kuafucv.com

Read more

Git 远程操作全攻略:从基础到实战

Git 远程操作全攻略:从基础到实战

🌈 个人主页:Zfox_ 🔥 系列专栏:Git 企业级应用 目录 * 一:🔥 理解分布式版本控制系统 * 二:🔥 远程仓库 * 🦋 新建远程仓库 * 🦋 克隆远程仓库 * 🦋 向远程仓库推送 * 🦋 拉取远程仓库 * 三:🔥 配置Git * 🦋 忽略特殊⽂件 * 🦋 给命令配置别名 * 四:🔥 标签管理 * 🦋 理解标签 * 🦋 创建标签 * 🦋 操作标签 * 五:🔥 多⼈协作 * 🦋 多⼈协作⼀ * 🦋 多⼈协作⼆ * 🎀 远程分⽀删除后,本地gitbranch-a依然能看到的解决办法 * 六:🔥 共勉 一:🔥 理解分布式版本控制系统 🦈 我们⽬前所说的所有内容(⼯作区,暂存区,版本库 等等),都是在本地!也就是在你的笔记本或者计算机上。⽽我们的Git其实是分布式版本控制系统!什么意思呢? 可以简单理解为,我们每个⼈

By Ne0inhk
保姆级教程:Windows Git 安装全流程,手把手带你从 0 到 1 (2025版)

保姆级教程:Windows Git 安装全流程,手把手带你从 0 到 1 (2025版)

Git 是程序员的必备工具。对于 Windows 用户来说,安装过程中的几十个英文选项往往让人头大。本教程将手把手带您走完安装流程,确保您的环境配置最优化、最符合现代开发标准。 第一步:下载安装包 1. 下载地址 * 官方网站:git-scm.com/download/win * 下载方式:推荐直接点击页面上的 "Click here to download" 或者 "Git for Windows/x64 Setup" 下载独立的 .exe 安装程序。 * 注:虽然可以用 Winget 命令行下载,但传统安装包更适合初次配置。 2. 版本选择 (x64 vs ARM64) * 绝大多数电脑(Intel/AMD

By Ne0inhk

GitHub汉化插件使用指南:3分钟告别英文界面困扰

GitHub汉化插件使用指南:3分钟告别英文界面困扰 【免费下载链接】github-chineseGitHub 汉化插件,GitHub 中文化界面。 (GitHub Translation To Chinese) 项目地址: https://gitcode.com/gh_mirrors/gi/github-chinese 还在为GitHub全英文界面而烦恼吗?GitHub汉化插件能够将整个网站的菜单、按钮、提示文本等界面元素一键转换为中文显示,让技术学习和项目管理变得更加轻松高效。 准备工作:环境检查与工具安装 在开始安装之前,请先确认你的浏览器环境是否满足以下要求: 浏览器版本兼容性 * Chrome/Edge:80及以上版本 * Firefox:75及以上版本 * Safari:14及以上版本 如需检查浏览器版本,可在地址栏输入: * Chrome/Edge:chrome://version * Firefox:about:support 脚本管理器安装 GitHub汉化插件需要依赖脚本管理器运行,推荐使用以下任一工具: * Tampermonke

By Ne0inhk