本文最后更新于 2024-08-30,文章内容已经超过7天没更新了。

glowroot是一款轻量级、无代码入侵的java监控工具。它内部集成了多钟插件,可以满足大多数的java项目,当然官网也提供了插件开发的示例,但可参考的十分有限。事实上,不同的java项目都有自己独有的依赖包或工具,这个系列可以详细指导大家如何针对自己项目上不同的监控需求来定制属于自己项目的glowroot

官网:Glowroot
glowroot源码:
glowroot/glowroot: Easy to use, very low overhead, Java APM (github.com)

一、拉取源码

大家可以去github上拉取glowroot源码,选择合适的Tag,我这里以v0.13.6作为示例

git clone https://github.com/glowroot/glowroot.git

或者直接下载压缩包

解压到本地之后用IDEA打开,就可以浏览glowroot的源码了

二、源码目录介绍

  • agent:这个目录是glowroot的核心目录,里边提供了插件开发的api以及现有的插件示例。agent里有plugin-api模块,这个模块是我们开发插件所用到的一些api接口和工具类等;plugins模块是所有的插件,每一个插件都是一个独立的模块

  • build:提供了打包时所用到的工具

  • central:收集中心,用于在集群部署中收集各个服务的glowroot监控情况,扮演者类似于Spring Cloud中注册中心的角色

  • common:这个模块提供了基础的模型类,还有一些基础的项目配置和常用的工具类

  • common2:这个模块提供了glowroot与数据库交互的接口,还有一些基础的配置类

  • logs:是本地启动central产生的log日志

  • ui:glowroot的前端模型,分为前端js和后端api

  • webdriver-tests:测试模块,不用过多关注

  • wire-api:使用proto语言定义的一些glowroot的基础模型类

三、安装依赖

要根据glowroot的版本选择适当的java版本和maven版本,在README.md中有详细说明,比如我的v0.13.6版本,要求java 7+、maven 3.1.0+

配置好环境,在根目录下执行mvn clean install '-Dmaven.test.skip=true'跳过测试

有些依赖包是github上的,有条件的可以开个加速器

ui模块bower update可能会失败,多试几次

四、打包文件

maven打包好之后,最终的打包文件一共有两个,一个是集群部署的central包,一个是glowroot的包