全链路监控之pinpoint

2023-11-08

一、pinpoint出现与其他相似概念比较

(1)、pinpoint概念

    pinpoint是由java/PHP编写而成的,用来对大规模的分布式系统提供应用性能管理。pinpoint可以解决复杂架构下的拓扑解析与性能分析。

(2)、pinpoint的特点

   分布式事务追踪,跟踪跨分布式应用的消息;

   自动检测拓扑,帮助搞清楚应用架构;

   水平扩展可以支持大规模服务器集群;

   提供代码级别的可见性,轻松定位失败点和瓶颈;

   使用字节码增强技术,添加新功能是无需修改代码,对代码无侵入性。

(3)、pinpoint的功能

 服务拓扑图:对整个系统的调用关系进行可视化的展示,点击某个节点,显示该节点的具体信息。

 实时活跃线程图:监控应用内活跃线程的执行情况。

 请求响应散点图:以时间维度展示请求计数和响应时间。

 请求调用栈查看:对分布式环境中的请求可以定位到代码维度;可以查找问题的出现是否与代码有关。

 应用状态、机器状态检查:查看与该项目相关的其他性能,cpu利用率、内存等。 

(4)、APM(应用性能管理)

    APM属于IT运维管理。主要针对于企业关键业务的应用性能和用户体验的检测、优化,提高企业IT应用的质量和可靠性。

   APM 多级运用性能监控,覆盖通讯协议1-7层,通过事务处理过程监控、模拟等手段实现端对端的应用监控。对应用系统中的各个组件进行监测,迅速定位系统故障,并进行修复或建议。对系统中各组件的系统资源进行实时监控,并根据监控结果给予建议。

   图片来自华为云官网。

二、pinpoint架构原理

(1)、架构组成

 Pinpoint Collector:收集各种性能数据

 Pinpoint Agent:和自己运行的应用关联起来的探针

 Pinpoint-Web: 将收集到的数据显成为 WEB网页显示

 HBase Storage: 存储收集到的数据

(2)、工作原理

     pinpoint的核心思想是在各个服务节点之间彼此调用时,记录并传递一个应用级别的标记,这个标记用来关联各个服务节点之间的关系。例:两个服务器之间利用http协议来进行通信,pinpoint就会将这个标记加入到http头之中,各个应用之间进行上报的时候,将报文头上的标记和各个应用之间的调用关系汇报给pinpoint,pinpoint根据得到的信息,将每一个应用串联成一个链路,得到服务拓扑。

    通过pinpoint-agent往自身web应用的tomcat中打入探针,由pinpoint-collector收集数据,存储于hbase中,通过pinpoint-web展示数据。

三、pinpoint应用部署

  部署一个例子,用来收集一些数据,展示pinpoint的配置和应用方式。

   这个例子共需要两台服务器,一台安装pinpoint,用作pinpoint的web展示端,逻辑控制机,以及hbase存储。另一台用来安装pinpoint-agent ,主要用来采集数据,发送给pinpoint处理。

(1)环境准备

    两台机器之间可以关闭防火墙,也可以打开,在这个例子中,我运用的云主机,所以会将服务器内部的防火墙关闭,在服务器的安全组之中将所需要的端口打开。

   注:两台机器最好同时操作,防止之后忘记

   1、关闭防火墙:

   命令集合:  

systemctl stop firewalld  
 
systemctl disable firewalld #取消开机自启动

  2、 安装一些依赖以及一些常用工具

    命令集合

[root@pinpoint ~]# yum install net-tools bash-completion wget vim -y

 3、关于时间同步

  由于云主机上的利用弹性公网ip与外界连接,所以,运用云主机之间是可以不用同步时间的。但在自己的虚拟机,比如利用wmware虚拟的虚拟机,机器时间可能会不相同,需要进行时间同步,否则如果在两台机器上连接时,可能会出现问题。

   同步命令合集:

yum install ntpdate -y

ntpdate cn.pool.ntp.org

hwclock -w

(2)环境配置

     1、获取需要的安装包

     官网下载。

     均未选择版本,请自行选择版本。

     jdk下载地址:Java Downloads | Oracle

     hbse下载地址:Index of /dist/hbase

    tomcat下载地址:Apache Tomcat® - Apache Tomcat 9 Software Downloads

    pinpoint下载地址:Home - PinPoint   

    网盘下载 

    我提供我的网盘中的压缩包,可自行选择下载方式。

    链接:https://pan.baidu.com/s/1ZNq6y6KFW8qv7C_KyKbE1Q 
    提取码:k4s0

jdk       Java运行环境

hbase     数据库。用来存储监控数据

tomcat    web服务器

pinpoint-collector.war     pinpoint的控制器
 
pinpoint-web.war           pinpoint的展示页面

  2、配置jdk

   pinpoint这套系统利用jdk进行部署,所以首先配置jdk。

[root@pinpoint pinpoint]# tar -xf jdk-7u79-linux-x64.tar.gz 
[root@pinpoint pinpoint]# mkdir /usr/java/
[root@pinpoint pinpoint]# mv jdk1.7.0_79/ /usr/java/jdk7
[root@pinpoint pinpoint]# vim /etc/profile
export JAVA_HOME=/usr/java/jdk7
export PATH=$PATH:$JAVA_HOME/bin
[root@pinpoint pinpoint]# source /etc/profile
[root@pinpoint pinpoint]# 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)安装hbase

      Hbase在这套系统中的主要功能是用来存储pinpoint收集到的数据。

     1、解压Hbase,并放入制定目录     

[root@pinpoint pinpoint]# tar xf hbase-1.0.3-bin.tar.gz 
[root@pinpoint pinpoint]# mkdir -p /data/service
[root@pinpoint pinpoint]# mv hbase-1.0.3/ /data/service/hbase
[root@pinpoint pinpoint]# cd /data/service/hbase/conf/
[root@pinpoint conf]# vim hbase-env.sh 
[root@pinpoint conf]# egrep -v "^#|^$" hbase-env.sh 
export JAVA_HOME=/usr/java/jdk7/
export HBASE_OPTS="-XX:+UseConcMarkSweepGC"

    2、 修改 Hbase的配置信息

[root@pinpoint conf]# pwd
/data/service/hbase/conf
[root@pinpoint conf]# vim hbase-site.xml 
[root@pinpoint conf]# egrep -v "^#|^$|\*" hbase-site.xml 
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
-->
<configuration>
hbase.rootdir
file:///data/hbase
</configuration>

   3、启动Hbase

[root@pinpoint ~]# cd /data/service/hbase/bin/
[root@pinpoint bin]# ./start-hbase.sh 
starting master, logging to /data/service/hbase/bin/../logs/hbase-root-master-pinpoint.out
[root@pinpoint bin]# jps
12527 HMaster
12756 Jps

   4、初始化Hbase的pinpoint库

     初始化这个库需要一个文件,hbase-create.hbase。该文件存在于我分享的百度网盘中。

[root@pinpoint pinpoint]# cd /data/service/hbase/bin/
[root@pinpoint bin]# ./hbase shell /root/pinpoint/hbase-create.hbase 

#初始化完成后,进入Hbase 可以看到数据库的版本以及一些其他的信息。
[root@pinpoint bin]# ./hbase shell
2021-11-03 13:44:35,524 WARN  [main] util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version 1.0.3, rf1e1312f9790a7c40f6a4b5a1bab2ea1dd559890, Tue Jan 19 19:26:53 PST 2016

#查看初始化的表是否存在
hbase(main):001:0> status 'detailed'
version 1.0.3
0 regionsInTransition
master coprocessors: []
1 live servers
    git:38684 1635911596175

或者访问web页面,查看数据库是否初始化成功!

访问:http://ip:16010/master-status 

如果访问不到,请查看端口是否已经打开。

(4)安装pinpoint- collector

    1、部署war包

#解压tomcat,并放置在响应地点
[root@pinpoint pinpoint]# tar xf apache-tomcat-8.0.36.tar.gz 
[root@pinpoint pinpoint]# mv apache-tomcat-8.0.36/ /data/service/pinpoint-col

#修改tomcat的配置
#修改端口,避免与后续的pinpoint-web的端口冲突。如果使用云主机,请开启安全组的响应端口,如果使用防火墙,请开启相应端口
[root@pinpoint pinpoint]# cd /data/service/pinpoint-col/conf/
[root@pinpoint conf]# sed -i 's/port="8005"/port="18005"/g' server.xml 
[root@pinpoint conf]# sed -i 's/port="8080"/port="18080"/g' server.xml 
[root@pinpoint conf]# sed -i 's/port="8443"/port="18443"/g' server.xml 
[root@pinpoint conf]# sed -i 's/port="8009"/port="18009"/g' server.xml 
[root@pinpoint conf]# sed -i 's/redirectPort="8443"/redirectPort="18443"/g' server.xml 


#将tomcat的私有IP开放。
[root@pinpoint conf]# sed -i 's/localhost/47.103.24.126/g' server.xml 


#部署pinpoint-collector.war包(如果没有unzip命令,使用“yum install unzip -y”下载)
[root@pinpoint pinpoint-col]# pwd
/data/service/pinpoint-col
[root@pinpoint pinpoint-col]# rm -rf ./webapps/*
[root@pinpoint pinpoint-col]# unzip /root/pinpoint/pinpoint-collector-1.5.2.war -d /data/service/pinpoint-col/webapps/ROOT


#启动tomcat
[root@pinpoint pinpoint-col]# cd /data/service/pinpoint-col/bin/
[root@pinpoint bin]# ./startup.sh 
Using CATALINA_BASE:   /data/service/pinpoint-col
Using CATALINA_HOME:   /data/service/pinpoint-col
Using CATALINA_TMPDIR: /data/service/pinpoint-col/temp
Using JRE_HOME:        /usr/java/jdk7/
Using CLASSPATH:       /data/service/pinpoint-col/bin/bootstrap.jar:/data/service/pinpoint-col/bin/tomcat-juli.jar
Tomcat started.


#查看日志,是否启动成功
[root@pinpoint bin]# tail -f ../logs/catalina.out 
11-03 14:21:50 [INFO ](o.s.w.s.m.a.DefaultAnnotationHandlerMapping:314) Mapped URL path [/admin/isEnable.*] onto handler 'handlerManagerController'
11-03 14:21:50 [INFO ](o.s.w.s.m.a.DefaultAnnotationHandlerMapping:314) Mapped URL path [/admin/isEnable/] onto handler 'handlerManagerController'
11-03 14:21:50 [INFO ](o.s.w.s.m.a.DefaultAnnotationHandlerMapping:314) Mapped URL path [/admin/enableAccess] onto handler 'handlerManagerController'
11-03 14:21:50 [INFO ](o.s.w.s.m.a.DefaultAnnotationHandlerMapping:314) Mapped URL path [/admin/enableAccess.*] onto handler 'handlerManagerController'
11-03 14:21:50 [INFO ](o.s.w.s.m.a.DefaultAnnotationHandlerMapping:314) Mapped URL path [/admin/enableAccess/] onto handler 'handlerManagerController'
11-03 14:21:50 [INFO ](o.s.w.s.DispatcherServlet          :504) FrameworkServlet 'pinpoint-web': initialization completed in 663 ms
03-Nov-2021 14:21:50.531 INFO [47.103.24.126-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /data/service/pinpoint-col/webapps/ROOT has finished in 6,978 ms
03-Nov-2021 14:21:50.534 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-18080"]
03-Nov-2021 14:21:50.549 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-nio-18009"]
03-Nov-2021 14:21:50.550 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 7026 ms

    2、配置快速启动

    配置快速启动需要一个pp- collector.init的文件,可以有两种获取方法

    网盘:

    之前分享的网盘中拥有这个文件,直接上传至服务器就可以使用。

    文件内容:

    新建一个文件,名为pp-collector.init,内容如下:

#!/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/default/
 
#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/pinpoint-collector/
 
#CATALINA_BASE is the location of the configuration files of this instance of Tomcat
export CATALINA_BASE=/data/service/pinpoint-collector/
 
#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 didn't 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

  拥有这个文件之后,修改默认的路径,修改后如下:

 之后将文件赋予“执行”权限,加入启动项

[root@pinpoint pinpoint]# mv pp-collector.init /etc/init.d/pinpoint-col
[root@pinpoint pinpoint]# chmod 711 /etc/init.d/pinpoint-col 
[root@pinpoint pinpoint]# ll /etc/init.d/pinpoint-col 
-rwx--x--x 1 root root 3069 11月  3 14:40 /etc/init.d/pinpoint-col

 测试

[root@pinpoint pinpoint]# /etc/init.d/pinpoint-col restart
Stoping Tomcat
Using CATALINA_BASE:   /data/service/pinpoint-col/
Using CATALINA_HOME:   /data/service/pinpoint-col/
Using CATALINA_TMPDIR: /data/service/pinpoint-col//temp
Using JRE_HOME:        /usr/java/jdk7/
Using CLASSPATH:       /data/service/pinpoint-col//bin/bootstrap.jar:/data/service/pinpoint-col//bin/tomcat-juli.jar

waiting for processes to exitStarting tomcat
Using CATALINA_BASE:   /data/service/pinpoint-col/
Using CATALINA_HOME:   /data/service/pinpoint-col/
Using CATALINA_TMPDIR: /data/service/pinpoint-col//temp
Using JRE_HOME:        /usr/java/jdk7/
Using CLASSPATH:       /data/service/pinpoint-col//bin/bootstrap.jar:/data/service/pinpoint-col//bin/tomcat-juli.jar
Tomcat started.
Tomcat is running with pid: 28463

设置成功!!!! 

(5)安装pinpoint-web

    1、部署war包

   

#解压tomcat,并放置在响应地点
[root@pinpoint pinpoint]# tar xf apache-tomcat-8.0.36.tar.gz 
[root@pinpoint pinpoint]# mv apache-tomcat-8.0.36/ /data/service/pinpoint-web

#修改tomcat的配置
#修改端口,避免与后续的pinpoint-col的端口冲突。如果使用云主机,请开启安全组的响应端口,如果使用防火墙,请开启相应端口
[root@pinpoint pinpoint]# cd /data/service/pinpoint-web/conf/
[root@pinpoint conf]# sed -i 's/port="8005"/port="28005"/g' server.xml
[root@pinpoint conf]# sed -i 's/port="8080"/port="28080"/g' server.xml
[root@pinpoint conf]# sed -i 's/port="8443"/port="28443"/g' server.xml
[root@pinpoint conf]# sed -i 's/port="8009"/port="28009"/g' server.xml
[root@pinpoint conf]# sed -i 's/redirectPort="8443"/redirectPort="28443"/g' server.xml


#将tomcat的私有IP开放。
[root@pinpoint conf]# sed -i 's/localhost/47.103.24.126/g' server.xml 


#部署pinpoint-web.war包(如果没有unzip命令,使用“yum install unzip -y”下载)
[root@pinpoint conf]# rm -rf /data/service/pinpoint-web/webapps/* 
[root@pinpoint conf]# unzip /root/pinpoint/pinpoint-web-1.5.2.war -d /data/service/pinpoint-web/webapps/ROOT


#启动tomcat
[root@pinpoint conf]# cd /data/service/pinpoint-web/bin/
[root@pinpoint bin]# ./startup.sh 
Using CATALINA_BASE:   /data/service/pinpoint-web
Using CATALINA_HOME:   /data/service/pinpoint-web
Using CATALINA_TMPDIR: /data/service/pinpoint-web/temp
Using JRE_HOME:        /usr/java/jdk7/
Using CLASSPATH:       /data/service/pinpoint-web/bin/bootstrap.jar:/data/service/pinpoint-web/bin/tomcat-juli.jar
Tomcat started.


#查看日志,查看是否启动成功
[root@pinpoint bin]# tail -f ../logs/catalina.out 
14:57:00 INFO (m.a.DefaultAnnotationHandlerMapping:314) Mapped URL path [/userGroup/member.*] onto handler 'userGroupController'
14:57:00 INFO (m.a.DefaultAnnotationHandlerMapping:314) Mapped URL path [/userGroup/member/] onto handler 'userGroupController'
14:57:00 INFO (m.a.DefaultAnnotationHandlerMapping:314) Mapped URL path [/userGroup] onto handler 'userGroupController'
14:57:00 INFO (m.a.DefaultAnnotationHandlerMapping:314) Mapped URL path [/userGroup.*] onto handler 'userGroupController'
14:57:00 INFO (m.a.DefaultAnnotationHandlerMapping:314) Mapped URL path [/userGroup/] onto handler 'userGroupController'
14:57:00 INFO (o.s.w.s.DispatcherServlet          :504) FrameworkServlet 'pinpoint-web': initialization completed in 908 ms
03-Nov-2021 14:57:00.659 INFO [47.103.24.126-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /data/service/pinpoint-web/webapps/ROOT has finished in 8,734 ms
03-Nov-2021 14:57:00.676 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-28080"]
03-Nov-2021 14:57:00.715 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-nio-28009"]
03-Nov-2021 14:57:00.754 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 8899 ms

此时访问地址http://ip:28080/#/main

出现主界面,成功!!! 

    2、配置快速启动

    pinpoint-web的快速启动配置和pinpoint- collector的配置相同。

   pp-web.init的内容如下:

#!/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/default/
 
#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/pinpoint-web/
 
#CATALINA_BASE is the location of the configuration files of this instance of Tomcat
export CATALINA_BASE=/data/service/pinpoint-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 didn't 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

同样进行修改默认配置,之后加入启动项。

测试:

[root@pinpoint pinpoint]# /etc/init.d/pp-web restart
Stoping Tomcat
Using CATALINA_BASE:   /data/service/pinpoint-web/
Using CATALINA_HOME:   /data/service/pinpoint-web/
Using CATALINA_TMPDIR: /data/service/pinpoint-web//temp
Using JRE_HOME:        /usr/java/jdk7/
Using CLASSPATH:       /data/service/pinpoint-web//bin/bootstrap.jar:/data/service/pinpoint-web//bin/tomcat-juli.jar

waiting for processes to exitStarting tomcat
Using CATALINA_BASE:   /data/service/pinpoint-web/
Using CATALINA_HOME:   /data/service/pinpoint-web/
Using CATALINA_TMPDIR: /data/service/pinpoint-web//temp
Using JRE_HOME:        /usr/java/jdk7/
Using CLASSPATH:       /data/service/pinpoint-web//bin/bootstrap.jar:/data/service/pinpoint-web//bin/tomcat-juli.jar
Tomcat started.
Tomcat is running with pid: 30554

配置成功!!!

(6)部署pinpoint- agent采集监控数据

     需要另一台服务器,用来部署pinpoint-agent来采集服务器上的数据,返回给pinpoint,用来分析形成拓扑图。

     1、上传安装包以及测试项目

     网盘链接:

链接:https://pan.baidu.com/s/1Deu4QYoJwr7t78qs6R5Y9A 
提取码:74ep

     2、配置模拟环境的tomcat

     配置jdk,配置方式与pinpoint方法相同   

  配置tomcat

[root@tomcat ~]# tar xf apache-tomcat-8.0.36.tar.gz 
[root@tomcat ~]# cd apache-tomcat-8.0.36/conf/
[root@tomcat conf]# sed -i "s/localhost/116.63.208.164/g" server.xml 

解压测试用的war包

[root@tomcat ~]# rm -rf apache-tomcat-8.0.36/webapps/*
[root@tomcat ~]# unzip test.war -d apache-tomcat-8.0.36/webapps/ROOT
Archive:  test.war
  inflating: apache-tomcat-8.0.36/webapps/ROOT/index.jsp  
   creating: apache-tomcat-8.0.36/webapps/ROOT/WEB-INF/
   creating: apache-tomcat-8.0.36/webapps/ROOT/WEB-INF/lib/
  inflating: apache-tomcat-8.0.36/webapps/ROOT/WEB-INF/lib/commons-beanutils-1.7.0.jar  
  inflating: apache-tomcat-8.0.36/webapps/ROOT/WEB-INF/lib/commons-collections-3.1.jar  
  inflating: apache-tomcat-8.0.36/webapps/ROOT/WEB-INF/lib/commons-lang-2.5.jar  
  inflating: apache-tomcat-8.0.36/webapps/ROOT/WEB-INF/lib/commons-logging.jar  
  inflating: apache-tomcat-8.0.36/webapps/ROOT/WEB-INF/lib/ezmorph-1.0.3.jar  
  inflating: apache-tomcat-8.0.36/webapps/ROOT/WEB-INF/lib/json-lib-2.1-jdk15.jar  
  inflating: apache-tomcat-8.0.36/webapps/ROOT/WEB-INF/web.xml  
   creating: apache-tomcat-8.0.36/webapps/ROOT/WEB-INF/classes/
   creating: apache-tomcat-8.0.36/webapps/ROOT/WEB-INF/classes/com/
   creating: apache-tomcat-8.0.36/webapps/ROOT/WEB-INF/classes/com/yy/
   creating: apache-tomcat-8.0.36/webapps/ROOT/WEB-INF/classes/com/yy/test/
  inflating: apache-tomcat-8.0.36/webapps/ROOT/WEB-INF/classes/com/yy/test/test.class 

    3、配置pp-agent采集器

 云主机开启pinpoint-collector的端口 9994,9995,9996

#解压pp-agent
[root@tomcat ~]# tar xf pinpoint-agent-1.5.2.tar.gz 
[root@tomcat ~]# mkdir -p /data/pp-agent
[root@tomcat ~]# mv pinpoint-agent-1.5.2 /data/pp-agent

#编辑配置文件
[root@tomcat ~]# cd /data/pp-agent/
[root@tomcat pp-agent]# vim pinpoint-agent-1.5.2/pinpoint.config profiler.collector.ip=47.103.24.126  #修改它为pinpoint-collector的IP地址



#修改启动文件,增加探针
[root@tomcat ~]# cd apache-tomcat-8.0.36/bin/
[root@tomcat bin]# vim catalina.sh 
#在大概20行左右的位置添加如下内容
CATALINA_OPTS="$CATALINA_OPTS -javaagent:/data/pp-agent/pinpoint-agent-1.5.2/pinpoint-bootstrap-1.5.2.jar" #添加pinpoint-bootstrap-1.5.2.jar的位置CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.agentId=pp123456"
CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.applicationName=MyTestPP"

    4、监控tomcat

配置完成了,开始监控,启动测试的tomcat服务器。

[root@tomcat ~]# cd apache-tomcat-8.0.36/bin/
[root@tomcat bin]# ./startup.sh 
Using CATALINA_BASE:   /root/apache-tomcat-8.0.36
Using CATALINA_HOME:   /root/apache-tomcat-8.0.36
Using CATALINA_TMPDIR: /root/apache-tomcat-8.0.36/temp
Using JRE_HOME:        /usr/java/jdk7
Using CLASSPATH:       /root/apache-tomcat-8.0.36/bin/bootstrap.jar:/root/apache-tomcat-8.0.36/bin/tomcat-juli.jar
Tomcat started.

访问:http://ip:8080

 访问http://ip:8080/test

此时访问pinpoint-web可以发现

                           至此,pinpoint全链路监控搭建成功! 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

全链路监控之pinpoint 的相关文章

  • Arthas监控java程序

    安装 1 解压缩arthas的压缩包 unzip arthas packaging bin zip 2 安装Arthas cd arthas install local sh 启动 以脚本的方式启动as sh 如图为启动成功 监控命令使用
  • Linux系统命令 - 查看内存使用情况

    一 查看内存使用情况 在Linux系统中 大部分操作都通过命令行来完成 因为大部分情况下不开启图形界面 在服务器环境 则只能通过shell执行操作 下面介绍查看内存使用情况的相关命令 包括物理内存 RAM 和交换内存 swap 我们经常需要
  • Linux下安装过程中编译PHP时报错:configure: error: jpeglib.h not found.

    今天在搭建LNMP编译PHP时 报错 configure error jpeglib h not found root cac3 php 5 6 22 configure gt prefix usr local php5 gt enable
  • 应用篇-Zabbix对端口的监控

    配置 主机 需要添加端口监控的ip 监控项 创建监控项 按照图内填入对应端口信息 端口监控项创建完成 端口的监控不仅仅是要端口的数据的数据 更需要的是一个触发的机制 当端口不在时 触发告警 通知对应的业务人员及时处理 接下来是触发器的设置
  • 【夜莺监控方案】01-n9e-v5-server部署

    文章目录 前言 1 在线一键安装 不推荐 2 自主安装 推荐 官方安装脚本 2 1 mysql 2 2 prometheus 2 3 n9e server 2 4 启动和开机自启 2 5 web查看 3 配置LDAP 前言 相关文档如下 0
  • 企业级prometheus+alertmanager+grafana+ victoriametrics高可用架构,实现基于钉钉、邮件的告警通知

    整体架构图 prometheus 简介 官方地址 https prometheus io Prometheus是基于go语 开发的 套开源的监控 报警和时间序列数据库的组合 是由SoundCloud公司开发的开源监控系统 Prometheu
  • 配置nginx代理grafana实现域名访问

    目的 通过Nginx服务器对grafana进行代理 实现通过https 域名 grafana在公网进行访问 实践过程 1 修改Nginx配置 nginx conf 文件 添加访问grafana的配置 配置时注意proxy pass后面一定要
  • 无线连接让智能手表用户可以自行沟通和监控

    诸如智能手表和智能眼镜之类的产品正在激增 它们中的大多数由于多个传感器 低功耗嵌入式处理器 直视或虚拟显示器以及无线通信链路 Wi Fi或蓝牙 来连接到智能手机 从而提供各种功能 主机系统 或互联网 尽管这些高度集成的系统中有许多提供了所需
  • 使用腾讯云“自定义监控”监控GPU使用率

    欢迎大家前往 云 社区 获取更多腾讯海量技术实践干货哦 作者 李想 随着人工智能以及比特币的火热 GPU云服务的使用场景是越来越广 在很多场景下我们也需要获取GPU服务器的性能参数来优化程序的执行 目前腾讯云提供的GPU云服务器并未提供GP
  • K8S的DaemonSet部署和安全删除

    1 部署方式 部署DaemonSet 需要执行以下步骤 创建DaemonSet配置文件 您可以使用YAML或JSON格式的文件描述DaemonSet的规格 包括容器镜像 容器端口 Pods标签 节点选择器等 使用kubectl命令将配置文件
  • Pinpoint--基础--3.1--安装部署--环境准备

    Pinpoint 基础 3 1 安装部署 环境准备 前提 使用hd用户登陆 完成基础环境搭建 https blog csdn net zhou920786312 article details 118212302 代码位置 https gi
  • 漫谈ELK在大数据运维中的应用

    圈子里关于大数据 云计算相关文章和讨论是越来越多 愈演愈烈 行业内企业也争前恐后 群雄逐鹿 而在大数据时代的运维挑站问题也就日渐突出 任重而道远了 本文旨在针对复杂的大数据运维系统推荐一把利器 达到抛砖引玉的效果 如果文中出现任何纰漏和错误
  • 全链路监控之pinpoint

    一 pinpoint出现与其他相似概念比较 1 pinpoint概念 pinpoint是由java PHP编写而成的 用来对大规模的分布式系统提供应用性能管理 pinpoint可以解决复杂架构下的拓扑解析与性能分析 2 pinpoint的特
  • 部署Zabbix企业级分布式监控

    1 定义 1 1 监控定义 通过一个友好的界面进行浏览整个网站所有的服务器状态 可以在Web前端方便的查看监控数据 可以回溯寻找事故发生时系统的问题和报警情况 分类 传统 zabbix nagois 云原生 prometheus 1 2 z
  • 【夜莺监控方案】04-k8s集群监控(下)(kube-state-metrics+cadvisor+prometheus+n9e及FAQ)

    文章目录 前言 4 接入prometheus 5 接入n9e 5 1 手动接入 方法一 5 2 导入模板 方法二 6 FAQ 6 1 集群数据时常取不到 现象 解决 前言 相关文档如下 03 k8s集群监控 上 4 接入prometheus
  • Pinpoint--基础--06--界面说明

    Pinpoint 基础 06 界面说明 1 查看应用调用关系拓扑图 进入pintpoint gt gt 选择应用 gt gt 选择查看的时间周期 即可查看应用调用关系拓扑图 图文说明如下 2 查看应用单个节点调用情况 点击右侧View Se
  • 【夜莺监控方案】10-报警策略-端口报警

    文章目录 1 邮箱配置 2 资源管理 中配置 1 2 创建端口采集 必要 3 配置告警策略 1 邮箱配置 opt n9e server etc script root n9e v5 script ll 总用量 12 rwxr xr x 1
  • grafana创建dashboard

    前提 安装grafana 创建dashboard 点击侧边栏菜单Dashboards下的New dashboard 点击Add a new panel 进入到 New dashboard Edit 面板视图 到Query 标签页 配置你的Q
  • 基于java-agent的监控

    jolokia是一个基于java agent的监控
  • zabbix设定监控指标每天调用一次

    添加了数据库备份的监控项 因为备份每天只做一次 如果一直取数意义不大 所以设定在每条早上9点取一次值 设定方式如图 更新间隔需要修改为0 否则还会按照间隔获取信息 选择调度 h表示小时 h9表示每天九点

随机推荐

  • 存量时代下,期货公司如何借助内容实现运营突破

    QuestMobile在 中国移动互联网发展启示录 中披露了一组数据 截止到2021年9月 中国的网民总人数达到11 67亿人 同比仅增加1400万 以上数据表明 流量红利消失殆尽已成为既定的事实 对期货公司来说 流量红利的消失也让其陷入用
  • 电源系列2:LDO 基本 原理(二)

    公众号 工程师看海 后台回复 LDO仿真文件 远山看海 LDO基本原理介绍 一 zhuanlan zhihu com NMOS LDO工作简介 下图是一个NMOS LDO的基本框图 NMOS LDO一般也工作在饱和区 特殊时会在可变电阻区
  • gensim读取已训练模型LDA模型的模型与dictionary

    import pyLDAvis gensim from gensim import models corpora from gensim corpora import Dictionary all data 青绿色 放 几天 塑料袋 里 刺
  • 世界经济论坛区块链报告阅读笔记

    文章目录 世界经济论坛区块链报告阅读笔记 DLT应用落地需要什么 报告案例 Global Payments 报告案例 P C Claims Processing 世界经济论坛区块链报告阅读笔记 该报告主要谈及DLT distributed
  • Android onKeyDown监听返回键无效的解决办法

    文章转载自 https www jb51 net article 115941 htm Android onKeyDown监听返回键无效的解决办法 当我们的Activity继承了TabActivity 在该类中重写onKeyDown是监听不
  • node切换版本

    1 首先卸载node 删除node文件夹 在C Program Files路径下查找 2 安装nvm 下载nvm setup zip文件 进行安装 nvm网址 Releases coreybutler nvm windows GitHub
  • 数据表中常见的数据类型

    数据表中常见的数据类型有 整数类型 浮点数类型 日期与时间类型 字符串类型 二进制类型 布尔类型 整数类型 1int型 表示整型数值 是由四个字节组成的整数 输出范围 2147 2147 数据类型32位 short型 表示短整型 输出范围是
  • 项目_MySQL服务器被入侵,数据丢失,一招教你恢复数据【已恢复】

    已恢复 MySQL服务器被入侵 数据丢失 一招教你恢复数据 0 前言 当时在宝塔安装了MySQL5 7 然后当时只是测试 就直接设置用户名和密码为root 今天在Navicat突然登录不上了 于是在linux下登录MySQL 只剩下一个Re
  • Python进阶-----面向对象1.0(对象和类的介绍、定义)

    目录 前言 面向过程和面向对象 类和对象 Python中类的定义 1 类的定义形式 2 深层剖析类对象 前言 感谢各位的一路陪伴 我学习Python也有一个月了 在这一个月里我收获满满 学到了很多知识 每当我学会了一个新的知识点我会发表一篇
  • 压控恒流源学习笔记

    激光二极管 以下称LD 即使采用恒流驱动 其光输出功率也会随温度变化而发生大的变动 因此必须监视它的光输出 利用反馈环路来控制驱动电流 这即是自动输出控制APC AutomatICPowerControl 电路 第一种 调节激光亮度 可以依
  • Java——ArrayList基本使用

    1 简介 ArrayList是实现List接口的 底层采用数组实现 ArrayList 实现了Cloneable接口 即覆盖了函数clone 能被克隆 ArrayList 实现java io Serializable接口 这意味着Array
  • LRU缓存机制

    LRU缓存机制LeetCode146官方题解 struct DLinkedNode int key value DLinkedNode prev DLinkedNode next DLinkedNode key 0 value 0 prev
  • spring boot 启动报错,找不到DataSource

    报错信息如下 16 39 11 372 1653 main WARN o s b c e AnnotationConfigEmbeddedWebApplicationContext AbstractApplicationContext ja
  • 【C++】-- 哈希算法

    目录 一 哈希概念 1 插入和查找 2 哈希表 3 常见的哈希函数 1 直接定址法 2 除留余数法 二 用闭散列解决哈希冲突 1 线性探测法介绍 2 线性探测的实现 1 状态 2 定义HashData 3 哈希表 4 查找 5 插入 6 删
  • sparkStreaming:实时流数据详解

    目录 一 概述 二 wordCount示例 三 初始化StreamingContext 四 DStreams 离散数据流 五 输入DStream和接收器 Basic sources File Streams Custom Receivers
  • js 实现鼠标点击tab栏选项卡切换,下面相应内容跟随变化

  • Github上 简单易用的 Android ViewModel Retrofit框架

    RequestViewModel 长期更新 支持网络请求的ViewMode框架 ViewModel LiveData Retrofit github 地址 https github com miaotaoii RequestViewMode
  • [980]Windows host配置域名

    程序员开发中可能会需要域名访问程序 说白了就是修改hosts文件 过程如下 1 找到本机hosts文件路径一般位置在 C Windows System32 drivers etc 2 右键编辑hosts文件 在最下面增加 127 0 0 1
  • java的格式化时间工具类

    代码 public class DateTimeUtil private static final Logger logger LoggerFactory getLogger DateTimeUtil class public static
  • 全链路监控之pinpoint

    一 pinpoint出现与其他相似概念比较 1 pinpoint概念 pinpoint是由java PHP编写而成的 用来对大规模的分布式系统提供应用性能管理 pinpoint可以解决复杂架构下的拓扑解析与性能分析 2 pinpoint的特