炒沙作縻终不饱,缕冰文章费工巧。这篇文章主要讲述全链路监控pinpoint安装部署相关的知识,希望能为你提供帮助。
1、安装包准备
pinpoint-web-2.3.3.war(下载地址:https://github.com/naver/pinpoint)
pinpoint-collector-boot-2.3.3.jar(下载地址:https://github.com/naver/pinpoint)
pinpoint-agent-2.3.3.tar.gz(下载地址:https://github.com/naver/pinpoint)
hbase-1.4.9-bin.tar.gz(下载地址:http://archive.apache.org/dist/hbase/1.4.9/)
hbase-create.hbase(下载地址:https://github.com/pinpoint-apm/pinpoint/tree/master/hbase/scripts)
zookeeper-3.4.14.tar.gz(下载地址: https://archive.apache.org/dist/zookeeper/)
jdk-7u79-linux-x64.tar.gz(下载地址:https://www.oracle.com/java/technologies/javase/javase7-archive-downloads.html#jdk-7u80-oth-JPR)
apache-tomcat-8.0.36.tar.gz
2、配置jdk环境
tar -zxvf jdk-7u79-linux-x64.tar.gz
mkdir /usr/java
mv jdk1.7.0_79/ /usr/java/jdk17
# 配置java环境变量
vi /etc/profile
# 将下列复制到profile的最后一行中
export JAVA_HOME=/usr/java/jdk17
export PATH=$PATH:$JAVA_HOME/bin
# 让环境变量生效
source /etc/profile
# 测试java的环境变量是否配置好了
[root@localhost pp_res]# java -version
java version "1.7.0_79"
Java(TM) SE Runtime Environment (build 1.7.0_79-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)
3、部署zookeeper服务
tar zxvf /usr/local/src/zookeeper-3.4.14.tar.gz -C /opt/
ln -s /opt/zookeeper-3.4.14/ /opt/zookeeper
mkdir -pv /data/zookeeper/data /data/zookeeper/logs
配置文件修改:
cat /opt/zookeeper/conf/zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeper/data
dataLogDir=/data/zookeeper/logs
clientPort=2181
启动服务:
/opt/zookeeper/bin/zkServer.sh start
netstat -lntp| grep 2181
tcp6 0 0 :::2181 :::* LISTEN 108043/java
4、部署hbase
pinpoint收集来的数据,主要是存在Hbase数据库的。所以它可以收集大量的数据,可以进行更加详细的分析。
tar -zxvf hbase-1.4.9-bin.tar.gz
mkdir -p /data/service
mv hbase-1.4.9/ /data/service/hbase
cd /data/service/hbase/conf/
vi hbase-env.sh
# 在27行左右的位置,修改如下
export JAVA_HOME=/usr/java/jdk17/
# 在125行左右的位置,添加如下配置,意思是hbase启动不使用自带的zookeeper
export HBASE_MANAGES_ZK=false
vi hbase-site.xml 修改hbase文件配置
< configuration>
< !--
hbase.rootdir
file:///data/hbase
-->
< property>
< name> hbase.rootdir< /name>
< value> file:///data/service/hbase/data< /value>
< /property>
< property>
< name> hbase.cluster.distributed< /name>
< value> true< /value>
< /property>
< property>
< name> hbase.regionserver.handler.count< /name>
< value> 20< /value>
< /property>
< property>
< name> hbase.zookeeper.quorum< /name>
< value> 10.0.16.229< /value>
< /property>
< property>
< name> hbase.zookeeper.property.clientPort< /name>
< value> 2181< /value>
< /property>
< property>
< name> zookeeper.session.timeout< /name>
< value> 200000< /value>
< /property>
< property>
< name> hbase.master.info.port< /name>
< value> 16010< /value>
< /property>
< /configuration>
#启动服务
cd /data/service/hbase/bin
./start-hbase.sh
# 查看Hbase是否启动成功,如果启动成功的会看到"HMaster"的进程
[root@localhost bin]# jps
12075 Jps
11784 HMaster
#初始化Hbase的pinpoint库
# 执行pinpoint提供的Hbase初始化语句,这时会初始化一会。
./hbase shell /home/hbase-create.hbase
# 执行完了以后,进入Hbase
./hbase shell
# 输入"status detailed"可以查看刚才初始化的表,是否存在
hbase(main):001:0> status detailed
也可以登录web,来查看HBase的数据是否初始化成功
HbaseWeb : ??http://ip:16010/master-status??
5、安装pinpoint-collector
# 解压Tomcat,将Tomcat重命名移动到指定位置
tar -zxvf apache-tomcat-8.0.36.tar.gz
mv apache-tomcat-8.0.36/ /data/service/pp-col
# 修改pp-col的Tomcat的配置,主要修改端口,避免与pp-web的Tomcat的端口冲突。我在原本默认的端口前都加了1,下面是替换的shell命令。
#【注意】最后一条是将tomcat的私有ip开放,需要将localhost替换成本机的ip,我本机的网卡是默认的,如果你本机的网卡不是eth0,需要进行相关的修改。或者直接用"vi"进去,修改localhost
cd /data/service/pp-col/conf/
sed -i s/port="8005"/port="18005"/g server.xml
sed -i s/port="8080"/port="18080"/g server.xml
sed -i s/port="8443"/port="18443"/g server.xml
sed -i s/port="8009"/port="18009"/g server.xml
sed -i s/redirectPort="8443"/redirectPort="18443"/g server.xml
sed -i "s/localhost/服务器的ip/g" server.xml
# 部署pinpoint-collector.war包
#【注意:如果没有unzip命令,可以 "yum install unzip" 】
cd /home/pp_res/
rm -rf /data/service/pp-col/webapps/*
unzip pinpoint-collector-boot-2.3.3.jar -d /data/service/pp-col/webapps/ROOT
# 启动Tomcat
cd /data/service/pp-col/bin/
./startup.sh
# 查看日志,是否成功启动
tail -f ../logs/catalina.out
5.1、配置快速启动脚本,启动命令:/etc/init.d/pp-col start
ll /etc/init.d/pp-col
-rwx--x--x. 1 webadmin webadmin 3064 Jun6 15:09 /etc/init.d/pp-col
cat /etc/init.d/pp-col
#!/bin/bash
#
# chkconfig: 345 99 28
# description: Starts/Stops Apache Tomcat
#
# Tomcat 7 start/stop/status script
# Forked from: https://gist.github.com/valotas/1000094
# @author: Miglen Evlogiev < bash@miglen.com>
#
# Release updates:
# Updated method for gathering pid of the current proccess
# Added usage of CATALINA_BASE
# Added coloring and additional status
# Added check for existence of the tomcat user
#
#Location of JAVA_HOME (bin files)
export JAVA_HOME=/usr/java/jdk1.7.0_75/
#Add Java binary files to PATH
export PATH=$JAVA_HOME/bin:$PATH
#CATALINA_HOME is the location of the bin files of Tomcat
export CATALINA_HOME=/data/service/pp-col/
#CATALINA_BASE is the location of the configuration files of this instance of Tomcat
export CATALINA_BASE=/data/service/pp-col/
#TOMCAT_USER is the default user of tomcat
export TOMCAT_USER=root
#TOMCAT_USAGE is the message if this script is called without any options
TOMCAT_USAGE="Usage: $0 \\e[00; 32mstart\\e[00m|\\e[00; 31mstop\\e[00m|\\e[00; 32mstatus\\e[00m|\\e[00; 31mrestart\\e[00m"
#SHUTDOWN_WAIT is wait time in seconds for java proccess to stop
SHUTDOWN_WAIT=3
tomcat_pid()
echo `ps -fe | grep $CATALINA_BASE | grep -v grep | tr -s " "|cut -d" " -f2`
start()
pid=$(tomcat_pid)
if [ -n "$pid" ]
then
echo -e "\\e[00; 31mTomcat is already running (pid: $pid)\\e[00m"
else
# Start tomcat
echo -e "\\e[00; 32mStarting tomcat\\e[00m"
#ulimit -n 100000
#umask 007
#/bin/su -p -s /bin/sh tomcat
if [ `user_exists $TOMCAT_USER` = "1" ]
then
su $TOMCAT_USER -c $CATALINA_HOME/bin/startup.sh
else
sh $CATALINA_HOME/bin/startup.sh
fi
status
fi
return 0
status()
pid=$(tomcat_pid)
if [ -n "$pid" ]; then echo -e "\\e[00; 32mTomcat is running with pid: $pid\\e[00m"
else echo -e "\\e[00; 31mTomcat is not running\\e[00m"
fi
stop()
pid=$(tomcat_pid)
if [ -n "$pid" ]
then
echo -e "\\e[00; 31mStoping Tomcat\\e[00m"
#/bin/su -p -s /bin/sh tomcat
sh $CATALINA_HOME/bin/shutdown.sh
let kwait=$SHUTDOWN_WAIT
count=0;
until [ `ps -p $pid | grep -c $pid` = 0 ] || [ $count -gt $kwait ]
do
echo -n -e "\\n\\e[00; 31mwaiting for processes to exit\\e[00m";
sleep 1
let count=$count+1;
done
if [ $count -gt $kwait ]; then
echo -n -e "\\n\\e[00; 31mkilling processes which didnt stop after $SHUTDOWN_WAIT seconds\\e[00m"
kill -9 $pid
fi
else
echo -e "\\e[00; 31mTomcat is not running\\e[00m"
fi
return 0
user_exists()
if id -u $1 > /dev/null 2> & 1; then
echo "1"
else
echo "0"
fi
case $1 in
start)
start
; ;
stop)
stop
; ;
restart)
stop
start
; ;
status)
status
; ;
*)
echo -e $TOMCAT_USAGE
; ;
esac
exit 0
6、安装pinpoint-web
# 解压Tomcat,将Tomcat重命名移动到指定位置
tar -zxvf apache-tomcat-8.0.36.tar.gz
mv apache-tomcat-8.0.36/ /data/service/pp-web
# 修改pp-web的Tomcat的配置,主要修改端口,避免与pp-col的Tomcat的端口冲突。我在原本默认的端口前都加了2,下面是替换的shell命令
#【注意】最后一条是将tomcat的私有ip开放,需要将localhost替换成本机的ip,我本机的网卡是默认的,如果你本机的网卡不是eth0,需要进行相关的修改。或者直接用"vi"进去,修改localhost
cd /data/service/pp-web/conf/
sed -i s/port="8005"/port="28005"/g server.xml
sed -i s/port="8080"/port="28080"/g server.xml
sed -i s/port="8443"/port="28443"/g server.xml
sed -i s/port="8009"/port="28009"/g server.xml
sed -i s/redirectPort="8443"/redirectPort="28443"/g server.xml
sed -i "s/localhost/服务器ip/g" server.xml
# 部署pinpoint-collector.war包
#【注意:如果没有unzip命令,可以 "yum install unzip" 】
cd /home/pp_res/
rm -rf /data/service/pp-web/webapps/*
unzip pinpoint-web-2.3.3.war -d /data/service/pp-web/webapps/ROOT
# 启动Tomcat
cd /data/service/pp-web/bin/
./startup.sh
# 查看日志,Tocmat是否启动成功
tail -f ../logs/catalina.out
【全链路监控pinpoint安装部署】6.1、配置快速启动脚本,启动命令:/etc/init.d/pp-web start
ll /etc/init.d/pp-web
-rwx--x--x. 1 root root 3064 Jun6 15:23 /etc/init.d/pp-web
cat /etc/init.d/pp-web
#!/bin/bash
#
# chkconfig: 345 99 28
# description: Starts/Stops Apache Tomcat
#
# Tomcat 7 start/stop/status script
# Forked from: https://gist.github.com/valotas/1000094
# @author: Miglen Evlogiev < bash@miglen.com>
#
# Release updates:
# Updated method for gathering pid of the current proccess
# Added usage of CATALINA_BASE
# Added coloring and additional status
# Added check for existence of the tomcat user
#
#Location of JAVA_HOME (bin files)
export JAVA_HOME=/usr/java/jdk1.7.0_75/
#Add Java binary files to PATH
export PATH=$JAVA_HOME/bin:$PATH
#CATALINA_HOME is the location of the bin files of Tomcat
export CATALINA_HOME=/data/service/pp-web/
#CATALINA_BASE is the location of the configuration files of this instance of Tomcat
export CATALINA_BASE=/data/service/pp-web/
#TOMCAT_USER is the default user of tomcat
export TOMCAT_USER=root
#TOMCAT_USAGE is the message if this script is called without any options
TOMCAT_USAGE="Usage: $0 \\e[00; 32mstart\\e[00m|\\e[00; 31mstop\\e[00m|\\e[00; 32mstatus\\e[00m|\\e[00; 31mrestart\\e[00m"
#SHUTDOWN_WAIT is wait time in seconds for java proccess to stop
SHUTDOWN_WAIT=3
tomcat_pid()
echo `ps -fe | grep $CATALINA_BASE | grep -v grep | tr -s " "|cut -d" " -f2`
start()
pid=$(tomcat_pid)
if [ -n "$pid" ]
then
echo -e "\\e[00; 31mTomcat is already running (pid: $pid)\\e[00m"
else
# Start tomcat
echo -e "\\e[00; 32mStarting tomcat\\e[00m"
#ulimit -n 100000
#umask 007
#/bin/su -p -s /bin/sh tomcat
if [ `user_exists $TOMCAT_USER` = "1" ]
then
su $TOMCAT_USER -c $CATALINA_HOME/bin/startup.sh
else
sh $CATALINA_HOME/bin/startup.sh
fi
status
fi
return 0
status()
pid=$(tomcat_pid)
if [ -n "$pid" ]; then echo -e "\\e[00; 32mTomcat is running with pid: $pid\\e[00m"
else echo -e "\\e[00; 31mTomcat is not running\\e[00m"
fi
stop()
pid=$(tomcat_pid)
if [ -n "$pid" ]
then
echo -e "\\e[00; 31mStoping Tomcat\\e[00m"
#/bin/su -p -s /bin/sh tomcat
sh $CATALINA_HOME/bin/shutdown.sh
let kwait=$SHUTDOWN_WAIT
count=0;
until [ `ps -p $pid | grep -c $pid` = 0 ] || [ $count -gt $kwait ]
do
echo -n -e "\\n\\e[00; 31mwaiting for processes to exit\\e[00m";
sleep 1
let count=$count+1;
done
if [ $count -gt $kwait ]; then
echo -n -e "\\n\\e[00; 31mkilling processes which didnt stop after $SHUTDOWN_WAIT seconds\\e[00m"
kill -9 $pid
fi
else
echo -e "\\e[00; 31mTomcat is not running\\e[00m"
fi
return 0
user_exists()
if id -u $1 > /dev/null 2> & 1; then
echo "1"
else
echo "0"
fi
case $1 in
start)
start
; ;
stop)
stop
; ;
restart)
stop
start
; ;
status)
status
; ;
*)
echo -e $TOMCAT_USAGE
; ;
esac
exit 0
7、部署pp-agent采集监控数据
# 解压pp-agent
tar -zxvf pinpoint-agent-2.3.3.tar.gz
mv pinpoint-agent-2.3.3 /data/pp-agent
# 编辑配置文件
cd /data/pp-agent/
vi pinpoint.config
# 主要修改IP,只需要指定到安装pp-col的IP就行了,安装pp-col启动后,自动就开启了9994,9995,9996的端口了。这里就不需要操心了,如果有端口需求,要去pp-col的配置文件("pp-col/webapps/ROOT/WEB-INF/classes/pinpoint-collector.properties")中,修改这些端口
profiler.collector.ip=服务端ip
# 修改测试项目下的tomcat启动文件"catalina.sh",修改这个只要是为了监控测试环境的Tomcat,增加探针
cd /data/pp-test/bin
vi catalina.sh
# 在20行增加如下字段
# 第一行是pp-agent的jar包位置
# 第二行是agent的ID,这个ID是唯一的,我是用pp + 今天的日期命名的,只要与其他的项目的ID不重复就好了
# 第三行是采集项目的名字,这个名字可以随便取,只要各个项目不重复就好了
CATALINA_OPTS="$CATALINA_OPTS -javaagent:/data/pp-agent/pinpoint-bootstrap-2.3.3.jar"
CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.agentId=pp20220522"
CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.applicationName=MyTestPP
推荐阅读
- client-go gin的简单整合七-继续完善
- 金蝶云星空与钉钉集成解决方案(钉钉审批)
- Mysqldump使用手册
- 1行Python代码,获取对方的IP地址
- HDU - 3172Virtual Friends(带权并查集--权为集合元素个数)
- outlook2019启动长时间卡在加载配置文件问题定位
- 教你搭建一个Telegraf+Influxdb+Grafana 监控系统
- HDU - 1276士兵队列训练问题 (报数问题 模拟)
- DynamicTp v1.0.7版本发布。还在为Dubbo线程池耗尽烦恼吗(还在为Mq消费积压烦恼吗?)