一、背景
前文我们使用docker-compose已搭建好了pinpoint的服务端,现在需要在java应用侧,也即客户端部署pinpoint的agent。
agent负责采集数据,并发送给远端的pinpoint collector,最后在pinpoint web展示。
本文主要是以一个java应用程序为例,讲述如何接入pinpoint 这款apm。
二、下载
https://github.com/pinpoint-apm/pinpoint/releases/tag/v3.0.0
下载到本地,
wget https://repo1.maven.org/maven2/com/navercorp/pinpoint/pinpoint-agent/3.0.0/pinpoint-agent-3.0.0.tar.gz
解压缩后,修改配置。
这里有两个jar包,建议你在java应用的启动命令行中,使用不带版本号的jar,方便后期的pinpoint更新。(好处是:不需要去修改java应用的启动命令行)
三、修改配置
1、collector ip
- pinpoint-root.config
pinpoint-root.config是全局配置,会需指定具体的环境。当二者都有相同的配置项,全局的配置会被覆盖。
# 修改pinpoint服务端的地址
profiler.transport.grpc.collector.ip=192.168.10.60
只修改这个文件是不行的,默认会去连接127.0.0.1也即本地的9991端口。
还需要修改具体环境下的配置文件。
因为默认的环境是release,所以你需要修改profiles/release/下的配置文件。
- profiles/release/pinpoint.config
profiler.transport.grpc.collector.ip=192.168.10.60
2、采样率
默认是100%,如果是生产环境,根据存储要求具体修改。
全局配置里是1,也即100%,profiler.sampling.counting.sampling-rate=1,但是它被会具体环境的配置给覆盖的。这一点需要注意!!
- 修改profiles/release/pinpoint.config
3、排除部分url的请求链路,不予采集
对于一些监控类的接口,再次采集到apm,显得不是那么必要。
修改全局配置pinpoint-root.confg
顺便说一下,pinpoint collector的数据存储是hbase数据库,鉴于存储成本的考虑,你也需要相应地调整ttl周期。(单位是秒)
这里就不赘述了,下面我们说下java应用的启动命令行的写法。
四、java启动命令行
java -Xms1g -Xmx1g -javaagent:/opt/pinpoint/pinpoint-bootstrap.jar -Dpinpoint.agentId={全局唯一值} -Dpinpoint.applicationName=user-service -jar user-service.jar
pinpoint-bootstrap.jar的存放位置是/opt/pinpoint/;agentId必须得唯一,不能重复(可以是服务名+IP); applicationName就是服务名称
可以说,使用javaagent的方式接入,比较简单,对应用也没有任何侵入。
五、更改agent启动的日志级别
默认它是info级别,打印的内容有点多,你可以修改为error级别。
修改log4j2-agent.xml文件中的INFO --> ERROR
从这个截图,也可以看出很多有用的信息,环境、采样率、collector ip等等。