直接开干
官网:https://glowroot.org
前置条件:安装jdk,jdk地址:https://repo.huaweicloud.com/java/jdk/
工具架构如图:
1 部署cassandra
下载地址 :https://www.apache.org/dyn/closer.lua/cassandra/3.11.6/apache-cassandra-3.11.6-bin.tar.gz
作用: Cassandra在Glowroot中主要用于存储性能监控数据。Glowroot-Central(中央收集器)依赖于Cassandra数据库来持久化收集到的应用程序性能数据,包括事务、错误、JVM指标等。
涉及端口: Cassandra使用的端口主要有几个关键端口,包括:
7000:集群通信端口(如果开启了SSL则是7001端口)。
9042:用于native协议的客户端连接端口。
9160:旧版本的Thrift接口端口,但在Cassandra 2.1及以后版本中,Thrift接口已被废弃,因此这个端口可能不再使用。
7199:JMX端口,用于远程监控和管理Cassandra实例。
-
下载安装包后,创建文件夹/opt/glowroot/cassandra,然后通过xftp工具或其它工具上传到linux系统并解压。
mkdir -p /opt/glowroot/cassandra cd /opt/glowroot/cassandra # 上传压缩包,开始解压 tar -zxvf 压缩包名称
-
解压完成后在解压目录下创建data、commitlog、saved_caches三个目录,cassandra服务运行时会写入相应数据。
-
因为cassandra不支持root用户启动,所以需要创建用户glowroot且改变glowroot目录的所有者。
# 添加用户 sudo useradd -m glowroot # 设置密码 sudo passwd glowroot # 改变目录拥有者 chown -R glowroot:glowroot /opt/glowroot
-
修改cassandra的conf目录的cassandra.yaml文件,将本机IP作为Seed服务器。
vim /opt/glowroot/cassandra/conf/cassandra.yaml
编辑模式下搜索关键词命令: 按下/键进入命令模式,然后输入你要搜索的关键词,最后按下Enter键。Vim会高亮显示第一个匹配的结果,并将光标移动到那里。
跳转到下一个或上一个匹配项: 在进行了一次搜索之后,你可以使用n键跳转到下一个匹配项,或者使用N键(大写)跳转到上一个匹配项。
清除高亮显示: 搜索后,Vim会高亮显示所有匹配的结果。如果你想要清除这些高亮显示,可以使用命令 “:noh” (表示“no highlights”)。配置参数 属性值 data_file_directories /opt/glowroot/cassandra/data commitlog_directory /opt/glowroot/cassandra/commitlog saved_caches_directory /opt/glowroot/cassandra/saved_caches seed_provider seeds: “配置自己服务器ip,默认127.0.0.1” listen_address 配置自己服务器ip,默认localhost rpc_address 配置自己服务器ip,默认localhost batch_size_fail_threshold_in_kb 5000 需要注意data_file_directories的配置应该是一个字符串列表,格式如下:
-
进入cassandra启动目录,启动服务
cd /opt/glowroot/cassandra/bin # 启动服务,可使用后台启动:nohup ./cassandra & ./cassandra # 检查服务状态 ./nodetool status
2 部署glowroot-central
下载地址: https://repo1.maven.org/maven2/org/glowroot/glowroot-central/0.13.6/
作用: Glowroot-Central是Glowroot的中央收集器组件,负责收集来自各个Glowroot Agent的性能监控数据,并提供一个Web界面供用户查看和分析这些数据。
涉及端口: Glowroot-Central的端口默认是HTTPS协议的4000端口(具体端口号可能因版本而异,建议查看glowroot-central.properties配置文件中的ui.https.port属性)。但是,这个端口是Glowroot-Central Web界面服务的端口,并非直接与Cassandra通信的端口。与Cassandra的通信端口已在Cassandra的配置中确定。
- 在/opt/glowroot文件夹下创建glowroot-central文件夹,并将压缩包上传到该目录下并解压,修改目录拥有者为glowroot用户
mkdir /opt/glowroot/glowroot-central unzip 解压文件名.zip # 没有unzip命令的,安装命令 sudo yum install unzip
- 修改glowroot-central.properties配置文件,cassandra.contactPoints参数更改成cassandra服务器地址,其余参数可以保持默认。
- 启动服务
java -jar /opt/glowroot/glowroot-central/glowroot-central.jar # 或后台启动命令: nohup java -jar /opt/glowroot/glowroot-central/glowroot-central.jar &
3 部署glowroot-agent
下载地址: https://repo1.maven.org/maven2/org/glowroot/glowroot-agent/0.13.0/
作用: Glowroot Agent是一种无代码侵入式的监控方式,它通过在JVM启动时附加agent参数来自动收集应用程序的性能数据。然而,需要注意的是,如果没有配置Glowroot-Central或类似的收集器来接收这些数据,那么收集到的性能数据将不会被持久化存储,也无法通过Web界面进行查看和分析。
- 在/opt/glowroot文件夹下创建glowroot-agent文件夹,并将压缩包上传到该目录下,修改目录拥有者为glowroot用户
mkdir /opt/glowroot/glowroot-agent unzip 解压文件名.zip
4 实践
前置条件:springboot项目,打包为jar包:mvn clean package
打包为jar包后执行jar包时可能报错:jar包没有主清单属性
解决:在pom文件中,添加配置
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
-
打好jar包后,在linux新建目录jarweb
mkdir /opt/jarweb # 上传jar包至该目录下
-
启动jar包并携带jvm监控参数
java -javaagent:/opt/glowroot/glowroot-agent/glowroot.jar -Dglowroot.collector.address=服务器地址:8181 -Dglowroot.agent.rollup.id=自定义标识符 -Dglowroot.agent.id=自定义标识符 -jar 项目名.jar
举例: java -javaagent:/opt/glowroot/glowroot-agent/glowroot.jar -Dglowroot.collector.address=192.168.137.128:8181 -Dglowroot.agent.rollup.id=dev -Dglowroot.agent.id=cc-order -jar /opt/jarweb/cc-order.jar
解释:agent.rollup.id 可标识是什么环境 ; agent.id 可标识分布式系统中哪个服务,如订单服务。注意: 上诉如果启动了cc-order服务,如果还想同时监控另外一个服务比如cc-user,则glowroot-agent不能是同一个。因为同一个 Glowroot agent 实例不能监控两个不同的 Java 应用程序,每个 JVM 进程需要一个独立的 agent 实例或者需要配置它以允许共享。
解决: 如果有多个java实例,则可以将/opt/glowroot下的glowroot-agent目录复制为两个,即可复制为glowroot-agent-order和glowroot-agent-user两个文件夹,启动cc-order服务时,-javaagent指向glowroot-agent-order目录下的jar包,启动cc-user服务时,-javaagent指向glowroot-agent-user目录下的jar包。结构如下:
举例:启动命令分别如下:
# 启动第一个服务 java -javaagent:/opt/glowroot/glowroot-agent-order/glowroot.jar -Dglowroot.collector.address=192.168.137.128:8181 -Dglowroot.agent.rollup.id=dev -Dglowroot.agent.id=cc-order -jar /opt/jarweb/shoppingweb1.jar # 启动第二个服务 java -javaagent:/opt/glowroot/glowroot-agent-user/glowroot.jar -Dglowroot.collector.address=192.168.137.128:8181 -Dglowroot.agent.rollup.id=dev -Dglowroot.agent.id=cc-user -jar /opt/jarweb/shoppingweb2.jar
shoppingweb1.jar 和shoppingweb2.jar两个应用程序端口不同,否则会报错。
启动所有服务和应用之前,最好把glowroot目录下的所有目录和文件将权限重新给glowroot用户,因为在文章的最开始,通过chown -R赋予glworoot用户后,后面新增了一些目录,所有最后再执行一遍,避免权限不足。
chown -R glowroot:glowroot /opt/glowroot
端口最终如下:
实现截图如下:
完结,点个赞收藏一下再走呗!