一、需求
在工作中,java程序员,尤其是小公司的java开发人员,同时也担任这运维的工作,项目上线以后,突然有客户说服务卡,死了,我们这边就一脸懵了,没有办法还原当时的情况,也就不好查问题了,这时候就特别需要一个能监控java应用的工具,就是我们今天说的glowroot
(一) glowroot的官网
官网:https://glowroot.org
(二)glowroot简介
- 容易使用
- 开销非常(非常)低
- Glowroot能帮助您找到应用程序性能问题的根源
二、使用方法
(一)单个应用监控
对于当个应用的监控,使用glowroot非常简单啦。
1、下载glowroot-0.13.6-dist.zip
2、解压glowroot-0.13.6-dist.zip到任意位置
解压开后的文件夹是这样的:
3、增加-javaagent:path/to/glowroot.jar应用程序的JVM参数
- 比如我使用的是tomcat8,那只需要在bin/setnv.bat里面设置参数就可以,如下:
set JAVA_OPTS=-server -Xms4096m -Xmx4096m -XX:MaxMetaspaceSize=1024m -javaagent:D:\\Server\\glowroot\\glowroot.jar
- 如果是用的jar方式运行的工程,就需要在同目录建一个启动.bat的批处理来运行了
java -Xms2048m -Xmx2048m -XX:MetaspaceSize=256M -javaagent:D:\\Server\\glowroot\\glowroot.jar myproject.jar
4、启动项目
在浏览器中输入http://localhost:4000就可以看到myproject的监控了
5、对于单个应用的监控,这样就可以了
(二)多个应用监控同时监控
多个应用同时监控,稍微麻烦一点,它需要三个东西
- cassandra(点击可访问)
这是一个数据库,如果想了解的可以去官网看看,这个呢,就是要存储我们监控数据的东西 - glowroot-central(点击可下载)
这个算是监控的搜集程序和UI展示程序,它服务收集监控的各种指标数据,存储到cassandra数据库中,然后,同时它也是个web程序,直接访问就可以看到上报上来的监控数据了 - glowroot(点击可下载)
这个呢,就是我们上面写的那个单个应用监控用到的glowroot,它其实就是代理,负责收集应用的各个指标数据,然后上报给glowroot-central
这样呢,我们就弄明白了这个三个东西的关系了,别搞混乱了
(三)下面我们开始逐个安装部署
(1)cassandra的安装部署
这个需要一些篇幅,这里不在重复,我已经放到另外一篇文章里了,点击查看cassandra的安装部署
(2)glowroot-central的安装部署
- 下载glowroot-central,这个点击上面的链接可以下载,下载完成后解压
- 配置glowroot-central.properties
- 配置cassandra的数据库连接,毕竟要连接数据库不是
# default is cassandra.contactPoints=127.0.0.1
# cassandra数据库的IP
cassandra.contactPoints=127.0.0.1
# default is cassandra.port=9042
# cassandra数据库的端口,对应 cassandra.yaml 中 native_transport_port的配置(9042)
cassandra.port=9042
- 配置glowroot代理上传数据的接收端口,不然数据上传不上来,那还监控啥
# default is grpc.httpPort=8181
# set this to "none" in order to not serve gRPC over HTTP
# agent上报数据对应的端口
grpc.httpPort=8181
这个比如这里配置8181端口,回头glowroot代理只需要对着glowroot-central的IP+端口上报数据就行了
- 配置glowroot-central UI的访问端口,就是回头访问的端口
# default is ui.port=4000
# web访问的端口
ui.port=4000
这里就很好理解了,比如你部署glowroot-central这台机器的IP是192.168.1.60,那一切部署完成后直接访问192.168.1.60:4000就可以看到最终的监控界面了
- 配置在glowroot-central目录中添加一个批处理文件 启动.bat,名字随便起,只要是方便启动,和设置内存,启动.bat的内容如下
- 如果我们希望给监控程序弄一个账号密码验证,可以在第一次启动的时候,加上 setup-admin-user 账号 密码,记住只要第一次启动的时候加上,第一次启动成功后,还要去掉,否则会启动失败,加上后的样子是这样的:
java -Xms2048m -Xmx2048m -XX:MetaspaceSize=256M -jar glowroot-central.jar setup-admin-user zhangsan 123456
- 非第一次启动或者不要密码验证的是这样的:
java -Xms2048m -Xmx2048m -XX:MetaspaceSize=256M -jar glowroot-central.jar
- 双击 启动.bat就可以启动glowroot-central收集服务了,第一次启动比较慢,因为会初始化数据库
(3)glowroot代理的安装部署
- 下载glowroot-0.13.6-dist.zip,把它解压到你要监控的应用的服务器上一个目录里,比如我的路径:D:\Server\apache-tomcat-8.5.32-1\glowroot,大概就是这样
- 对于tomcat8+可以配置tomcat/bin/setnv.bat如下:
set name=服务8888
set JAVA_OPTS=-server -Xms4096m -Xmx4096m -XX:MaxMetaspaceSize=1024m -javaagent:%CATALINA_HOME%\\glowroot\\glowroot.jar -Dglowroot.agent.id=%name% -Dglowroot.collector.address=192.168.1.60:8181
set TITLE=%name%
Dglowroot.collector.address对应的就是收集器glowroot-central的IP+grpc.httpPort,grpc.httpPort是在glowroot-central.properties中配置的,不用搞乱了
3. 如果是jar包运行的方式的web应用,在jar统计目录创建一个启动.bat的批处理文件,贴上下面的内容:
set name=服务8888
java -Xms4096m -Xmx4096m -XX:MetaspaceSize=256M -javaagent:D:\\Server\\glowroot\\glowroot.jar myproject.jar -Dglowroot.agent.id=%name% -Dglowroot.collector.address=192.168.1.60:8181
set TITLE=%name%