1.前言
pinpoint是开源在github上的一款APM监控工具,它是由java编写的,用于大规模分布式系统的监控。本文记录了一次Pinpoint2.3.3的单机部署,由于pinpoint本身没有用户验证功能,这里加入了Nginx反代来认证。
本文工作目录为/home/pinpoint/,全程不切换目录,有需要切换目录请注意调整路径。
pinpoint安装过程参考了APM链路监控:pinpoint安装部署实战详细手册-CSDN博客
2.环境
linux版本:Rocky Linux release 9.4 (Blue Onyx)
java版本:1.8.0_141
pinpoint版本:2.3.3
nginx版本:1.20.1
hbase版本:1.4.9
3.资源
链接: https://pan.baidu.com/s/1Ex4scT6Gct47547gpG73cw 提取码: gh8e
下载网盘中所有资源上传至/home/pinpoint/目录下。
4.安装
4.1JDK安装
解压jdk:
cd /home/pinpoint
mkdir /usr/local/jdk
tar -zxvf jdk-8u141-linux-x64.tar.gz -C /usr/local/jdk/
修改环境变量:
vi /ect/profile并在文件的最后插入
export JAVA_HOME=/usr/local/jdk/jdk1.8.0_141/
export CLASS_PATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME:$JAVA_HOME/bin
保存后退出并运行:
source /etc/profile
4.2HBase单机安装
解压HBase:
tar -xzvf hbase-1.4.9-bin.tar.gz
修改HBase配置文件hbase-site.xml:
注:HBase支持HDFS存储,但是需要安装Hadoop等组件,这里为了方便,暂时先不使用HDFS。另外,生产环境建议搭HBase集群,这里暂时只搭HBase单节点。
<configuration>
<property>
<name>hbase.rootdir</name>
<value>file:///app/application/data/hbase</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/app/application/data/zookeeper</value>
</property>
<property>
<name>zookeeper.session.timeout</name>
<value>300000</value>
<description>加大zookeeper会话超时时间</description>
</property>
<property>
<name>hbase.regionserver.restart.on.zk.expire</name>
<value>true</value>
<description>设置 regionserver 起死回生</description>
</property>
<property>
<name>hbase.regionserver.handler.count</name>
<value>50</value>
<description>regionserver处理IO请求的线程数</description>
</property>
<property>
<name>hbase.zookeeper.property.tickTime</name>
<value>60000</value>
<description>Client端与zk发送心跳的时间间隔</description>
</property>
<property>
<name>zookeeper.session.timeout.localHBaseCluster</name>
<value>300000</value>
<description>本地模式HMasterCommandLine类中的startMaster方法会将zookeeper.session.timeout.localHBaseCluster设置给zookeeper.session.timeout,本地模式默认10000ms</description>
</property>
<property>
<name>hbase.localcluster.assign.random.ports</name>
<value>false</value>
<description>本地模式端口号是随机分配,取消随机端口才能变成默认端口</description>
</property>
</configuration>
修改启动文件hbase-env.sh的JAVA_HOME环境变量位置:
vi /home/hbase-1.4.9/conf/hbase-env.sh
# 在27行左右的位置,修改如下
export JAVA_HOME=/opt/jdk1.8.0/
# 在124行开启自带zookeeper
export HBASE_MANAGES_ZK=true
配置环境变量:
#配置环境变量HBASE_HOME
vi /etc/profile
#在末尾添加:
export HBASE_HOME=/home/hbase-1.4.9
#让环境变量生效
source /etc/profile
启动HBase:
hbase-1.4.9/bin/start-hbase.sh
初始化HBase的pinpoint库:
hbase-1.4.9/bin/hbase shell hbase-create.hbase
结果验证:
hbase-1.4.9/bin/hbase shell
#进入shell后输入list
list
显示如下,即为成功初始化:
进入自带zookeeper模式命令
hbase-1.4.9/bin/hbase zkcli
进入hbase命令
hbase-1.4.9/bin/hbase shell
4.3pinpoint-collector安装
pinpoint-collector-boot-2.3.3.jar默认端口为8081,可自行修改application.yml的端口地址
nohup java -Dpinpoint.zookeeper.address=localhost -jar /home/pinpoint/pinpoint-collector-boot-2.3.3.jar >/var/logs/pinpoint-collector.log 2>&1 &
4.4pinpoint-web安装
pinpoint-web-boot-2.3.3.jar默认端口为8080,可自行修改application.yml的端口地址
nohup java -Dpinpoint.zookeeper.address=localhost -jar /home/pinpoint/pinpoint-web-boot-2.3.3.jar >/var/logs/pinpoint-web.log 2>&1 &
4.5配置用户验证
安装htpasswd工具:
yum install -y httpd-tools
设置用户名和密码,并把用户名、密码保存到指定文件中:
htpasswd -c /home/pinpoint/passwd username
#将username替换成你的用户名,回车,输入两次密码
4.6nginx安装
安装nginx:
yum install -y nginx
vi /etc/nginx/nginx.conf修改nginx配置:
#注释掉root /usr/share/nginx/html;并在其下方插入
location / {
auth_basic "PINPOINT Auth";
auth_basic_user_file /home/pinpoint/passwd;
proxy_pass http://localhost:8080/;
proxy_set_header Host $host:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
nginx命令:
nginx -t #测试NGINX
nginx #启动NGINX
ningx -s stop #关闭NGINX
nginx -s reload #重启NGINX
测试无异常后启动nginx。
4.7防火墙配置
#放开collector端口
firewall-cmd --add-port=9991-9994/tcp --zone=public --permanent
firewall-cmd --add-port=8081/tcp --zone=public --permanent
#放开nginx端口
firewall-cmd --add-port=80/tcp --zone=public --permanent
#重启防火墙生效
firewall-cmd --reload
4.8pinpoint-agent安装
注:PinPoint-Agent需要与被测应用安装在一起。
修改agent配置文件:
vim /home/pinpoint-agent-2.3.3/profiles/release/pinpoint.config
profiler.collector.ip=192.168.197.131 #hbase服务器地址
profiler.transport.grpc.collector.ip=192.168.0.10 # 即安装pinpoint-collector的虚拟机IP
profiler.sampling.counting.sampling-rate=1 #采样率配置,访问量不大的情况,建议全部采集
增加监控的服务的启动命令:
# 启动应用A
nohup java -javaagent:/root/pinpoint/pinpoint-agent-2.3.3/pinpoint-bootstrap-2.3.3.jar -Dpinpoint.agentId=demoA -Dpinpoint.applicationName=demoA -jar demoA.jar > nohup.out 2>&1 &
-javaagent:/root/pinpoint/pinpoint-agent-2.1.0/pinpoint-bootstrap-2.3.3.jar:agent所在位置。
-Dpinpoint.agentId:这个参数只能唯一。
-Dpinpoint.applicationName:可以重复,但为了更好地查看应用间的调用关系,这里按照应用名取值。
5.pinpoint优化
5.1collector日志输出级别优化
collector默认输出级别为info,当服务多,访问高时,日志量比较大,可以设置为warn
文件路径:pinpoint-collector-boot-2.3.3.jar\BOOT-INF\classes\profiles\release\log4j2.xml
5.2Hbase GC优化(jdk1.8)
修改hbase/conf/hbase-env.sh配置文件
修改/新增配置如下:
注意修改GC日志路径/app/application/linux/hbase-1.4.9为实际部署路径
export HBASE_HEAPSIZE=4G
export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS -Xms4g -Xmx4g"
export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -Xloggc:/app/application/linux/hbase-1.4.9/logs/hbase.gc.log -XX:ErrorFile=/app/application/linux/hbase-1.4.9/logs/hs_err_pid.log -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+HeapDumpOnOutOfMemoryError -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:CMSInitiatingOccupancyFraction=70 -Xmx4g -Xms4g"
6.简单使用
访问地址:http://服务器IP
进入后界面: