利用glowroot-central、glowroot监控Java Web应用

一、需求

在工作中,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到任意位置

解压开后的文件夹是这样的:

1664270796352

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

1664270961472

  • 如果是用的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的安装部署
  1. 下载glowroot-central,这个点击上面的链接可以下载,下载完成后解压
    1664273126284
  2. 配置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就可以看到最终的监控界面了

  1. 配置在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
  1. 双击 启动.bat就可以启动glowroot-central收集服务了,第一次启动比较慢,因为会初始化数据库
(3)glowroot代理的安装部署
  1. 下载glowroot-0.13.6-dist.zip,把它解压到你要监控的应用的服务器上一个目录里,比如我的路径:D:\Server\apache-tomcat-8.5.32-1\glowroot,大概就是这样
    1664438960394
  2. 对于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% 

(四)一切完工后,启动

(1)启动被监控的tomcat或jar
(2)启动被监控的glowroot-central

1664439430473

(3)打开浏览器,输入glowroot-central的IP+4000端口,比如我的:http://192.168.1.60:4000就可以看到监控啦

1664439599790

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×