Centos7部署pinpoint微服务全链路性能监控

本文介绍在Centos7上部署pinpoint微服务全链路性能监控的详细步骤。包括安装Oracle JDK8、HBase1.2.7,初始化pinpoint数据库,安装pinpoint及部署pinpoint - agent采集监控数据,还给出监控及服务启动顺序,并以蜗牛影院系统为例进行实战演示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前置条件

  1. JDK版本必须和Linux系统版本吻合(Linux是64位的必须安装64位的JDK);
  2. Hbase所在的服务器的内存地址不能小于4个G

环境声明

  • OS Version: RHEL7.8
  • JDK Version: Oracle JDK1.8.0_261
  • HBase Version: 1.2.7
  • Hadoop Version: 3.0.3
  • PinPoint Version: 2.1.0

Centos7部署pinpoint微服务全链路性能监控


0.安装Oracle JDK8

https://blog.youkuaiyun.com/omaidb/article/details/128634443


1.安装HBase1.2.7

Apache HBase 是 Hadoop 数据库,一个分布式、可伸缩的大数据存储。


下载并解压HBase

# 下载Hbase1.2.7压缩包
wget https://archive.apache.org/dist/hbase/1.2.7/hbase-1.2.7-bin.tar.gz

# 创建pinpoint目录
mkdir -p /opt/pinpoint

# 解压到/opt/pinpoint目录
tar -zxvf hbase-1.2.7-bin.tar.gz -C /opt/pinpoint

将hbase添加到环境变量

vi /etc/profile

# 添加hbase的执行路径
export PATH=$PATH:/opt/pinpoint/hbase-1.2.7/bin

# 使变量生效
source /etc/profile

# 查看hbase版本
habse version
# 如果回显显示hbase版本即为成功

修改HBase配置

# 查看你的java变量配置
cat /etc/profile

# 我这里的结果是
export JAVA_HOME=/opt/jdk1.8.0_261

# 修改配置信息
vim /opt/pinpoint/hbase-1.2.7/conf/hbase-env.sh

# 在第28行插入java的变量
export JAVA_HOME=/opt/jdk1.8.0_261

配置hbase的数据保存配置

vim /opt/pinpoint/hbase-1.2.7/conf/hbase-site.xml
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ROSgb5vy-1622553983785)(resources/fa86284dbcda4a1497c77e2439afd7ab.png)]

将下列配置信息粘贴到hbase-site.xml

<configuration>
    <property>
        <!-- 配置Hbase的目录 -->
        <name>hbase.rootdir</name>
        <value>file:opt/pinpoint/hbase-1.2.7/hbase_data</value>
    </property>
    <property>
        <name>zookeeper.session.timeout</name>
        <value>120000</value>
    </property>
    <property>
        <name>hbase.zookeeper.property.tickTime</name>
        <value>6000</value>
    </property>
</configuration>

启动HBase

# 启动HBase
sh /opt/pinpoint/hbase-1.2.7/bin/start-hbase.sh

启动后提示信息:

starting master, logging to /opt/pinpoint/hbase-1.2.7/bin/../logs/hbase-root-master-woniu184.woniuxy.com.out
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0

启动 master,登录到 /opt/pinpoint/hbase-1.2.7/bin/../logs/hbase-root-master-woniu184.woniuxy.com.out
Java HotSpot(TM) 64 位服务器 VM 警告:忽略选项 PermSize=128m; 在 8.0 中移除了支持
Java HotSpot(TM) 64 位服务器 VM 警告:忽略选项 MaxPermSize=128m; 在 8.0 中移除了支持

这个警告是因为:
Java8中,命令行标记MaxPermSize已被删除。原因永久代已从热点堆删除,并已移至本机内存。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3ljjEVHt-1622553983788)(resources/979c28d2735b41a0a7e6c5b88807f37e.png)]


消除HBase启动告警

为了消除警告信息,需要再次编辑配置文件

# 再次编辑hbase配置
vim /opt/pinpoint/hbase-1.2.7/conf/hbase-env.sh

将第48行49行注释掉

# 需要将第48行和49行注释掉

# 48行
export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m -XX:ReservedCodeCacheSize=256m"
# 49行
export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -XX:Perm

在这里插入图片描述


重启hbase

# 停止hbase
bash /opt/pinpoint/hbase-1.2.7/bin/stop-hbase.sh

# 启动hbase
bash /opt/pinpoint/hbase-1.2.7/bin/start-hbase.sh

重启不再有JDK警告信息了.

在这里插入图片描述


验证启动是否正常

# 输入jps查看hbase是否启动
jps
# 回显中有HMaster即为启动成功

在这里插入图片描述


从web端验证HBase是否启动成功
# 用浏览器访问16010端口可以查看HBase状态
http://本机ip:16010/master-status

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZiLXUJgv-1622553983797)(resources/4d0b215dd4934826b889b202ce98eb0d.png)]


2.初始化pinpoint数据库


下载初始化pinpoint数据库

需要从github上下载
https://github.com/pinpoint-apm/pinpoint/tree/master/hbase/scripts

我已经上传好了,需要国内加速的点击下方链接下载

pinpoint数据库优快云国内加速下载点

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U4HLvRhU-1622553983798)(resources/b081c8c1fb1048a580d671c4438db663.png)]

# 将pinpoint_master.tar.gz上传到`/opt/pinpoint/hbase-1.2.7`目录下
## 在windows机器命令行下执行
scp .\pinpoint_master.tar.gz root@服务器IP:/opt/pinpoint/hbase-1.2.7/

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u0AxQBvV-1622553983799)(resources/32be1e0c4e8849d2b874e37f4e29cd91.png)]


解压hbase初始化脚本

# 在centos7中执行
cd /opt/pinpoint/hbase-1.2.7/

# 解压到当前目录下
tar zxvf pinpoint_master.tar.gz

执行Hbase数据库初始化脚本

# 执行初始化
hbase shell hbase-create.hbase

可能会有一行报错,可以忽略

WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

在这里插入图片描述


Hbase数据库初始化告警

https://www.cnblogs.com/shoufeng/p/14940245.html

如果你和我一样是强迫症患者,想解决这个警告信息,安装native-hadoop库就可以解决

下面我们安装native-hadoop来解决这个警告

# 下载hadoop-3.0.3的包,有点大么300MB,从国外站点下载很慢,我建议你本地下载好再上传到centos7
wget https://archive.apache.org/dist/hadoop/core/hadoop-3.0.3/hadoop-3.0.3.tar.gz

# 解压到/opt/
tar zxvf hadoop-3.0.3.tar.gz -C /opt/

# 编辑/opt/pinpoint/hbase-1.2.7/conf/hbase-env.sh
vi /opt/pinpoint/hbase-1.2.7/conf/hbase-env.sh

# 将以下内容添加到hbase-env.sh
export LD_LIBRARY_PATH=/opt/hadoop-3.0.3/lib/native:$LD_LIBRARY_PATH

# 再执行hbase时就不会再报警告了

验证HBase数据库是否初始化成功

打开web验证

# 登录web,来查看HBase的数据是否初始化成功
http://服务器ip地址:16010/tablesDetailed.jsp

如果出现15张数据表,那就是成功

在这里插入图片描述


3.安装pinpoint


安装pinpoint-collector

pinpoint-collector-boot-2.1.0.jar下载地址
https://github.com/pinpoint-apm/pinpoint/releases/tag/v2.1.0

# 下载好后pinpoint-collector-boot-2.1.0.jar上传到/opt/pinpoint/目录
wget -c https://github.com/pinpoint-apm/pinpoint/releases/download/v2.1.0/pinpoint-collector-boot-2.1.0.jar

以后台运行的方式启动 pinpoint-collector

# 后台启动pinpoint-collector-boot-2.1.0.jar
nohup java -jar -Dpinpoint.zookeeper.address=localhost \
/opt/pinpoint/pinpoint-collector-boot-2.1.0.jar > collector.log 2>&1 &

# 持续查看日志信息
tail –f collector.log

安装pinpoint-web

# 将pinpoint-web-boot-2.1.0.jar下载到/opt/pinpoint/目录
wget https://github.com/pinpoint-apm/pinpoint/releases/download/v2.1.0/pinpoint-web-boot-2.1.0.jar

以后台的方式运行:pinpoint-web-boot-2.1.0.jar

# 后台启动pinpoint-web
nohup java -jar -Dpinpoint.zookeeper.address=localhost \
/opt/pinpoint/pinpoint-web-boot-2.1.0.jar > web.log 2>&1 &

# 持续查看日志信息
tail –f collector.log

查看是否启动成功

# 用jps查看java进程
jps
# 如果终端打印出pinpoint相关的任务,就启动成功了

在这里插入图片描述


验证pinpoint-web是否安装成功

然后可以在浏览器中:http://服务器ip:8080/ ,此时还没有agent

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2iLgrsUc-1622553983804)(resources/34670d4bbc464dcfb22516e9a02effdd.png)]


4.部署pinpoint-agent采集监控数据


1)基本配置部署

  1. 拷贝pinpoint-agent-2.1.0.tar.gz到web应用服务;解压到/opt/pinpoint目录
# 下载pinpoint-agent-2.1.0.tar.gz
wget -c https://github.com/pinpoint-apm/pinpoint/releases/download/v2.1.0/pinpoint-agent-2.1.0.tar.gz

# 解压pinpoint-agent到/opt/pinpoint/
tar zxvf pinpoint-agent-2.1.0.tar.gz -C /opt/pinpoint/
  1. 修改配置文件
  • /pinpoint-agent/pinpoint-root.config
  • /pinpoint-agent/profiles/release/pinpoint.config

修改pinpoint-collector地址

# 修改pinpoint-root.config配置
vim /opt/pinpoint/pinpoint-agent-2.1.0/pinpoint-root.config
# 上面两个配置文件中将pinpoint-collector 修改为你的服务器ip地址,大约第20行

# 修改 pinpoint.config配置
vim /opt/pinpoint/pinpoint-agent-2.1.0/profiles/release/pinpoint.config

# 上面这个两个配置文件的第20行都要修改为你的服务器ip地址

在这里插入图片描述

  1. 修改/opt/pinpoint/pinpoint-agent-2.1.0/profiles/release/ pinpoint.config , 把profiler.sampling.rate值改为1,意思是:捕捉每一个请求,默认值20
# 修改 pinpoint.config配置的第60行,修改为1
vim /opt/pinpoint/pinpoint-agent-2.1.0/profiles/release/pinpoint.config

# 捕捉每1个请求(默认值20)
profiler.sampling.rate=1

在这里插入图片描述


2)如果监控的是tomcat(监控war包)

1、 修改测试项目下的tomcat启动文件catalina.sh,修改这个只要是为了监控测试环境的Tomcat

1)增加探针配置vi catalina.sh。
2)添加如下配置:

参数解释
AGENT_PATHpinpoint-agent的目录
AGENT_IDagent的ID,这个ID唯一
APPLICATION_NAME采集项目的名字,各项目不能重复
VERSIONagent的版本

在这里插入图片描述

AGENT_PATH=/opt/pinpoint/pinpoint-agent-2.1.0
AGENT_ID=123456
APPLICATION_NAME=woniu_test
VERSION=2.1.0

CATALINA_OPTS="$CATALINA_OPTS -javaagent:$AGENT_PATH/pinpoint-bootstrap-$VERSION.jar"
CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.agentId=$AGENT_ID"
CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.applicationName=$APPLICATION_NAME"

2、 启动测试用的Tomcat的服务器

3、pinpointweb浏览器中查看

在这里插入图片描述


3)如果监控的是springboot(jar包)

如果是jar包部署,直接在启动命令启动参数

# 启动命令+启动参数
java -javaagent:D:\\Tools\\pinpoint-agent-2.1.0\\pinpoint-bootstrap-2.1.0.jar \
-Dpinpoint.agentId=registry_windows \
-Dpinpoint.applicationName=woniuticket \
-jar registry-0.0.1-SNAPSHOT.jar

【注意】

  • applicationName同一个项目建议相同
  • agentId不同的jar包自定义不同的id

【说明】

# 启动命令格式
java -javaagent:${pinpoint_agent_bootstrap-2.1.0.jar的路径} \ 
-Dpinpoint.agentId=${agentid} \
-Dpinpoint.applicationName=${applicationName} \
-jar ${app服务的jar包路径}

5.监控及服务启动顺序:

Hbase—>pinpoint-collector —> pinpoint-web —> agent-tomcatjar


实战案例:监控蜗牛影院系统(监控jar包)

编辑/opt/qianyao/xm/start_java_app.sh,将下面的内容粘贴进去

#!/usr/bin/env bash
# Author: 自然自在
# Email: omaidb@gmail.com
# Description: 使用javaagent 启动并使用pinpoint-agent监控蜗牛影院系统
# Description: 原创代码,使用MIT协议开源,使用全部或部分代码,必须保留原作者信息及声明
# Description: IT培训机构不遵守MIT协议,不保留作者信息,!!!律师函警告!!!
# web: https://blog.youkuaiyun.com/omaidb
# Version:2.0
# CreateTime:2023-09-13 16:34:41

# 软件开源协议侵权警告
WARING_DIY() {
    echo "
作者: 自然自在
Email: omaidb@gmail.com
脚本功能描述: 使用javaagent 启动并使用pinpoint-agent监控蜗牛影院系统
!!风险警告⚠️: 该代码,使用MIT协议开源,使用全部或部分代码,必须保留原作者信息及声明
!!风险警告⚠️: IT培训机构不遵守MIT协议,不保留作者信息,!!!律师函警告!!!
web: https://blog.youkuaiyun.com/omaidb
"
}
# 声明Pinpoint代理程序的jar包路径
JAVAAGENT_PATH="/opt/pinpoint/pinpoint-agent-2.1.0/pinpoint-bootstrap.jar"

# 应用程序列表
## 将所有要启动的程序写入到一个列表中
APPS=(
    # 数据结构如下:
    ## "${jar_file} : ${agent_id} : ${同项目_app_name 相同}"
    # eureka-server1
    "eureka-server1-0.0.1-SNAPSHOT.jar:eureka1:woniuticket"
    # eureka-server2
    "eureka-server2-0.0.1-SNAPSHOT.jar:eureka2:woniuticket"
    # cinema-stage
    "cinema-stage-0.0.1-SNAPSHOT.jar:cinema:woniuticket"
    # jobs-0.0.1-SNAPSHOT
    "jobs-0.0.1-SNAPSHOT.jar:jobs:woniuticket"
    # comment-0.0.1-SNAPSHOT
    "comment-0.0.1-SNAPSHOT.jar:comment:woniuticket"
    # movie-stage
    "movie-stage-0.0.1-SNAPSHOT.jar:movie:woniuticket"
    # orders-stage
    "orders-stage-0.0.1-SNAPSHOT.jar:orders:woniuticket"
    # gateway
    "gateway-0.0.1-SNAPSHOT.jar:gateway:woniuticket"
    # user
    "user-0.0.1-SNAPSHOT.jar:user:woniuticket"
    # general
    "general-0.0.1-SNAPSHOT.jar:general:woniuticket"
    # web
    "web-0.0.1-SNAPSHOT.jar:web:woniuticket"
)

# 使用javaagent启动应用程序函数
javaagent_start_application() {
    # jar包路径
    local jar_file="$1"
    # -Dpinpoint.agentId
    local agent_id="$2"
    # -Dpinpoint.applicationName
    local app_name="$3"
    # app日志路径
    local log_file="${agent_id}.log"
    # 使用javaagent启动jar包,并输出日志
    ## 要传入-Dpinpoint.agentId 和 -Dpinpoint.applicationName
    java -javaagent:"${JAVAAGENT_PATH}" -Dpinpoint.agentId="${agent_id}" -Dpinpoint.applicationName="${app_name}" \
        -jar "/opt/qianyao/xm/${jar_file}" >"/var/log/qianyao/${log_file}" 2>&1 &
}

# 遍历应用程序列表并启动应用程序
for app in "${APPS[@]}"; do
    IFS=':' read -r jar_file agent_id app_name <<<"${app}"
    # echo "${jar_file}" "${agent_id}" "${app_name}"
    ## echo示例:eureka-server1-0.0.1-SNAPSHOT.jar eureka1 woniuticket
    javaagent_start_application "${jar_file}" "${agent_id}" "${app_name}"
    # 警告
    WARING_DIY
done

启动并监控蜗牛影院系统

# 赋予可执行权限
chmod u+x /opt/qianyao/xm/start_java_app.sh

# 运行启动脚本
bash /opt/qianyao/xm/start_java_app.sh
CentOS 10上部署Java微服务通常需要以下几个步骤: 1. **安装Java环境**: 首先,你需要更新系统并安装Java Development Kit (JDK)。打开终端,运行以下命令: ``` sudo yum update -y sudo yum install java-1.8.0-openjdk-devel -y ``` 确认JDK已成功安装,可以通过`java -version`命令检查。 2. **下载并配置Git**: 如果尚未安装,使用以下命令安装Git: ``` sudo yum install git -y ``` 3. **安装Docker**: 使用Docker来创建、管理和运行容器非常适合部署微服务。安装Docker: ``` sudo curl -fsSL https://get.docker.com | sudo sh sudo usermod -aG docker $USER ``` 启动并设置自动启动Docker: ``` sudo systemctl start docker sudo systemctl enable docker ``` 4. **获取并构建应用镜像**: 从GitHub或其他源克隆你的Java微服务项目,并进入目录。构建Dockerfile以生成镜像: ``` git clone <your-repo-url> cd your-app-name docker build -t your-image-name . ``` 5. **运行容器**: 使用`docker run`命令启动服务容器,并指定端口映射以便外部访问: ``` docker run -p 8080:8080 your-image-name ``` 6. **配置Spring Boot Actuator**: 如果你正在使用Spring Boot,确保启用了Actuator模块以便监控应用健康状况。添加`management:endpoint.health.show-details=always`到application.properties文件。 7. **安全性和网络设置**: 考虑使用SSL证书、防火墙规则以及私有Registry(如Docker Hub或Quay.io)来管理镜像的安全分发。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

教Linux的李老师

赞赏是第一生产力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值