APM链路监控: Linux 部署 pinpoint

目录

一、实验

1.环境

2. 准备

3.HBase单机部署

4.pinpoint部署

二、问题

1.pinpoint有哪些功能

2.pinpoint架构是如何组成的

3.Linux中自带的jdk 如何设置JAVA_HOME

4. hbase启动报错

5.hbase的master启动失败

6.JPS命令如何安装和使用


一、实验

1.环境

(1)主机

表1-1 主机

主机架构组件IP备注
pinepoint

all in one

pinpoint-web-boot

pinpoint-collector-boot

hbase

 192.168.204.233
agent        agentpinpoint-agent 192.168.204.130

2. 准备

(1)下载软件

1)jdk
jdk1.8(下面的hbase GC调优主要针对jdk1.8,其他版本会有所不同)2)pinpoint组件
#下载地址 https://github.com/pinpoint-apm/pinpoint/releases/tag/v2.3.3
pinpoint-web-boot-2.3.3.jar
pinpoint-collector-boot-2.3.3.jar
pinpoint-agent-2.3.3.tar.gz3)hbase
#下载地址  http://archive.apache.org/dist/hbase/1.4.9/
hbase-1.4.9-bin.tar.gz#下载地址  https://github.com/pinpointapm/pinpoint/tree/master/hbase/scripts)
hbase-create.hbase

3.HBase单机部署

(1)查看目录

(2)解压

tar -xzvf hbase-1.4.9-bin.tar.gz

(3)切换目录

(4)修改HBase配置文件hbase-site.xml

vim hbase-site.xml

<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>

修改前

修改后:

(5)修改启动文件hbase-env.sh的JAVA_HOME环境变量位置

vim hbase-env.sh# 在27行左右的位置,修改如下
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk# 在128行开启自带zookeeper
export HBASE_MANAGES_ZK=true

修改前:

修改后

(6) 配置环境变量

#配置环境变量HBASE_HOME
vim /etc/profile#在末尾添加:
export HBASE_HOME=/opt/hbase-1.4.9#让环境变量生效
source /etc/profile

(7)启动HBase

cd /opt/hbase-1.4.9/bin
./start-hbase.sh

(8)验证是否启动成功

jps

启动成功会看到HMaster进程

(9)初始化HBase的pinpoint库

① 执行pinpoint提供的Hbase初始化语句

cd /opt/hbase-1.4.9/bin
./hbase shell /opt/hbase-create.hbase 

16张表已建好

(10)结果验证

方法1:进入数据库,查看初始化表

#进入数据库
cd /opt/hbase-1.4.9/bin
./hbase shell
#查看初始化表
list

方法2:登录web,查看初始化数据是否成功(可看到16张表已建好)

HbaseWeb地址 : http://192.168.204.233:16010/master-status,IP地址为hbase数据库所在服务器的IP地址

(11) 命令

① 进入自带zookeeper模式命令

./hbase zkcli

②进入hbase命令

./hbase shell

4.pinpoint部署

(1)安装pinpoint-collector

pinpoint-collector-boot-2.3.3.jar默认端口为8081,可自行修改application.yml的端口地址

nohup java -Dpinpoint.zookeeper.address=localhost -jar /opt/pinpoint-collector-boot-2.3.3.jar >/var/log/pinpoint-collector.log 2>&1 &

(2) 安装pinpoint-web

① pinpoint-collector-boot-2.3.3.jar默认端口为8080,可自行修改application.yml的端口地址

nohup java -Dpinpoint.zookeeper.address=localhost -jar /opt/pinpoint-web-boot-2.3.3.jar >/var/log/pinpoint-web.log 2>&1 &

② 浏览器上输入:http://ip:8080,可以进入到PinPoint主界面。由于此时还没有在被测服务上运行agent,因此页面上没有应用可以显示。

(3)安装pinpoint-agent(pinpoint-agent 需要与被测应用安装在一起)

①解压并修改agent配置文件 

tar -xvf pinpoint-agent-2.3.3.tar.gz vim /opt/pinpoint-agent-2.3.3/profiles/release/pinpoint.configprofiler.transport.grpc.collector.ip=192.168.204.233   # 即安装pinpoint-collector的虚拟机IP
profiler.collector.ip=192.168.204.233   #hbase服务器地址
profiler.sampling.counting.sampling-rate=1 #采样率配置,访问量不大的情况,建议全部采集

修改前

修改后

② 增加监控的服务的启动命令

# 启动应用demoA
nohup java -javaagent:/opt/pinpoint-agent-2.3.3/pinpoint-bootstrap-2.3.3.jar -Dpinpoint.agentId=demoA -Dpinpoint.applicationName=demoA -jar /opt/dubbo-admin-backend-0.0.1-SNAPSHOT.jar > nohup.out 2>&1 &

③ 命令解析

-javaagent:/opt/pinpoint-agent-2.3.3/pinpoint-bootstrap-2.3.3.jar:agent所在位置-Dpinpoint.agentId:这个参数只能唯一-Dpinpoint.applicationName:可以重复,但为了更好地查看应用间的调用关系,这里按照应用名取值

④刷新pinpoint页面,即可看到新增应用demoA

#启动应用eureka_demo
nohup java -javaagent:/opt/pinpoint-agent-2.3.3/pinpoint-bootstrap-2.3.3.jar -Dpinpoint.agentId=eureka_demo -Dpinpoint.applicationName=eureka_demo -jar /opt/eureka_demo-0.0.1-SNAPSHOT.jar > nohup.out 2>&1 &

⑤再次刷新pinpoint页面,看到新增应用eureka_demo

二、问题

1.pinpoint有哪些功能

(1)概念

pinpoint是开源在github上的一款APM监控工具,它是由java编写的,用于大规模分布式系统的监控;它对性能的影响最小(只增加约3%资源利用率),安装agent是无侵入式的,只需要在被测试的Tomcat中加上3句话,打下探针,就可以监控整套程序了。

(2)功能

1)服务拓扑图
对整个系统中应用的调用关系进行了可视化的展示,单击某个服务节点,可以显示该节点的详细信息,比如当前节点状态、请求数量等2)实时活跃线程图
监控应用内活跃线程的执行情况,对应用的线程执行性能可以有比较直观的了解3)请求响应散点图
以时间维度进行请求计数和响应时间的展示,拖过拖动图表可以选择对应的请求查看执行的详细情况4)请求调用栈查看
对分布式环境中每个请求提供了代码维度的可见性,可以在页面中查看请求针对到代码维度的执行详情,帮助查找请求的瓶颈和故障原因。5)应用状态、机器状态检查
通过这个功能可以查看相关应用程序的其他的一些详细信息,比如CPU使用情况,内存状态、垃圾收集状态,TPS和JVM信息等参数。

2.pinpoint架构是如何组成的

(1)组成

pinpoint由pinpoint agent、pinpoint collector、pinpoint web、HBase 4部分组成;1)Pinpoint Agent
用于收集应用端监控数据,无侵入式,只需要在启动命令中加入部分参数即可;2)Pinpoint Collector
数据收集模块,接收Agent发送过来的监控数据,并存储到HBase;3)Pinpoint Web
监控展示模块,展示系统调用关系、调用详情、应用状态等,并支持报警等功能;4)HBase
数据库,用于保存监控数据。

(2)架构图

3.Linux中自带的jdk 如何设置JAVA_HOME

(1) 查看java版本

java -version

(2)查看jdk的安装路径(最后2行)

java -verbose

(3)查看 java的位置

which java

(4)root用户下改配置文件

vim /etc/profile

找到export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL

在下面写上:

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/rt.jar

更新查看

source /etc/profileecho $JAVA_HOMEjava -version

4. hbase启动报错

(1)报错

(2)原因分析

java8已经摈弃了Perm的配置,不能再配置Perm永久代参数。而是引入了一个新的概念Metaspace。

在java虚拟机内部,class文件中包括类的版本、字段、方法、接口等描述信息,还有运行时常量池,用于存放编译器生成的各种字面量和符号引用。存放这些“永久”数据的区域叫做永久代(Permanent Generation,简称PermGen)。永久代是一片连续的堆空间。在JVM启动时通过命令行指定参数-XX:MaxPermSize来设定永久代最大可分配的内存空间。一个明显的问题是,PermGen的size很难调整,并且一旦这个值设置不当,当JVM加载的类信息容量超过了这个设定值后,应用将会报OOM错误(OutOfMemoryError)。
JAVA从JDK7的HotSpot虚拟机开始永久代的移除工作。永久代在JDK8中被完全的移除了。所以永久代的参数-XX:PermSize和-XX:MaxPermSize也被移除了。
在JDK8中,类的元数据信息(class metadata)不再存储在连续的堆空间上,而是被存储在叫做Metaspace的本地内存(native memory)中。
由于类的元数据可以在本地内存(native memory)之外分配,所以其最大可利用空间是整个系统内存的可用空间。这样,我们程序猿将不再会遇到OOM错误。

(3)解决方法

修改配置文件,注释相关内容。

vim hbase-env.sh

修改前

修改后

5.hbase的master启动失败

(1)报错

(2)原因分析

进程占用

(3)解决方法

kill掉这个56686的进程,重启Hbase服务

kill -9 56686

6.JPS命令如何安装和使用

(1)概念

jps(Java Virtual Machine Process Status Tool)是JDK 1.5提供的一个显示当前所有java进程pid的命令,简单实用,非常适合在linux/unix平台上简单察看当前java进程的一些简单情况。

(2)查询已安装的java软件包

rpm -qa |grep java

(3)安装安装openjdk-devel包

 yum install java-1.8.0-openjdk-devel.x86_64

(4)命令使用

jps -help
usage: jps [-help]jps [-q] [-mlvV] [<hostid>]Definitions:<hostid>:      <hostname>[:<port>]

(5)常用参数

1)-q 只显示pid
jps -q2)-m 输出传递给main 方法的参数,在嵌入式jvm上可能是null
jps -m3)-l 输出应用程序main class的完整package名 或者 应用程序的jar文件完整路径名
jps -l4)-v 输出传递给JVM的参数
jps -v

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/239251.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IPKISS ------ 远程服务器 IPKISS 内置示例安装问题

IPKISS ------ 远程服务器示例安装问题 引言正文 引言 很多时候&#xff0c;如果我们在服务器上使用管理员权限安装了 IPKISS 证书&#xff0c;而我们使用个人账号登录服务器时有时候会显示如下界面&#xff1a; 我们会看到这个 PyCharm (Luceda Academy) 是灰色的。那么该怎…

eclipse ADT安装及abap cds模版创建

文章目录 1.前提2.安装3.创建cds模版 abap cds 常用语法 https://blog.csdn.net/weixin_49198221/article/details/135531478?spm1001.2014.3001.5501 1.前提 需要了解版本关系: **1.eclipse:**2023-06 (4.28), 2023-09 (4.29), 2023-12 (4.30) 2.Windows: ​ 1.Windows …

短视频怎么截取gif动画?一个方法教你快速截取gif

电影、电视剧已经是我们日常生活中最常见最普遍的消遣娱乐方式了&#xff0c;当我们看到好看的画面想要截图里面的画面做成gif动画是应该如何制作gif动态图片&#xff08;https://www.gif.cn/&#xff09;呢&#xff1f;很简单&#xff0c;通过使用专业的gif在线制作工具&#…

VUE生命周期和生命周期四个阶段

Vue生命周期&#xff1a;一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个阶段&#xff1a;① 创建 ② 挂载 ③ 更新 ④ 销毁 vue的生命周期如图所示&#xff1a; Vue 生命周期函数&#xff08;钩子函数&#xff09;&#xff1a;Vue生命周期过程中&#xff0c;会自…

世微AP5160宽电压 LED 降压型恒流芯片14-18V 3A 电源PCB线路

这是一款14-18V 3A 电流的PCB设计方案. 运用的是世微AP5160 电源驱动IC,这是一款效率高&#xff0c;稳定可靠的 LED 灯恒流驱动控制芯片&#xff0c;内置高精度比较器&#xff0c;固定 关断时间控制电路&#xff0c;恒流驱动电路等&#xff0c;特别适合大功率 LED 恒流驱动。 …

Markdown 流程图绘制详解

✍️作者简介&#xff1a;小北编程&#xff08;专注于HarmonyOS、Android、Java、Web、TCP/IP等技术方向&#xff09; &#x1f433;博客主页&#xff1a; 开源中国、稀土掘金、51cto博客、博客园、知乎、简书、慕课网、CSDN &#x1f514;如果文章对您有一定的帮助请&#x1f…

Docker-数据卷网络

docker数据卷 docker volume ls #查看有哪些数据卷 docker volume inspect mysql-db #查看具体数据卷的元信息 docker container run -d --name mysql1 -e MYSQL_ALLOW_EMPTY_PASSWORDTrue -v mysql-db:/var/lib/mysql mysql #会在docker 的卷下面新建一个mysqldb用于数据持久…

力扣hot100 杨辉三角 递归 DP

Problem: 118. 杨辉三角 文章目录 思路复杂度&#x1f496; DP&#x1f496; 从下往上递归 思路 &#x1f468;‍&#x1f3eb; 参考地址 复杂度 时间复杂度: 添加时间复杂度, 示例&#xff1a; O ( n ) O(n) O(n) 空间复杂度: 添加空间复杂度, 示例&#xff1a; O ( n ) …

Linux/Frolic

Enumeration nmap 还是扫描系统对外开放的端口情况&#xff0c;对外开放了22,139,445,还有9999端口&#xff0c;显示是http服务&#xff0c;使用了nginx 1.10.3 ┌──(kali㉿kali)-[~/HTB/Frolic] └─$ nmap -sC -sV -oA nmap -Pn 10.10.10.111 Starting Nmap 7.93 ( http…

Linux第25步_在虚拟机中备份“ST官方的TF-A源码”

TF-A是ARM公司提供的&#xff0c;ST公司通过修改它&#xff0c;做了一个自己的TF-A代码。因为在后期开发中&#xff0c;若硬件被改变了&#xff0c;我们需要通过修改"ST官方的TF-A源码"就可以自己的TF-A代码了。为了防止源文件被误改了&#xff0c;我们需要将"S…

【经典算法】有趣的算法之---遗传算法梳理

every blog every motto: You can do more than you think. 0. 前言 遗传算法是一种基于自然选择和遗传机制的优化算法&#xff0c;因此它通常被用于求解各种最优化问题&#xff0c;例如函数优化、特征选择、图像处理等。 一言以蔽之&#xff1a; 将数学中的优化问题&#xf…

ZooKeeper 实战(三) SpringBoot整合Curator-开发使用篇

文章目录 ZooKeeper 实战(三) SpringBoot整合Curator-开发使用篇0. ZooKeeper客户端 1. Curator1.1. 简介1.2. 应用场景1.3. 优势1.4. 依赖说明 2. 依赖导入3. 配置类3.1. 重试策略3.2. 实现代码3.3. 总结 4. Curator中的基本API4.1. 创建节点CreateMode中的节点类型4.2. 查询节…

【MATLAB源码-第114期】基于matlab的孔雀优化算法(POA)无人机三维路径规划,输出做短路径图和适应度曲线。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 POA&#xff08;孔雀优化算法&#xff09;是一种基于孔雀羽毛开屏行为启发的优化算法。这种算法模仿孔雀通过展开其色彩斑斓的尾羽来吸引雌性的自然行为。在算法中&#xff0c;每个孔雀代表一个潜在的解决方案&#xff0c;而…

通过IDE和jar包运行时加载json配置文件

程序中使用了json配置文件&#xff0c;位置在$rootPath/src/main/resources/config.json, 调试时使用IDE&#xff0c;但运行时使用Jar包&#xff0c;加载config.json配置文件的代码如下&#xff1a; public ConfigParser(String configFileName) throws IOException {try{Inp…

用el-image-viewer实现全局预览图片

背景 在后台管理系统中&#xff0c;一些预览图片的场景&#xff0c;通常都是使用 el-image-viewer 去实现&#xff0c;但是如果多个地方都需要预览图片&#xff0c;又要重复的去写 el-image-viewer 以及一些重复的和预览相关的代码。 可以把预览图片的组件放在根文件&#x…

Python - Bert-VITS2 语音推理服务部署

目录 一.引言 二.服务搭建 1.服务配置 2.服务代码 3.服务踩坑 三.服务使用 1.服务启动 2.服务调用 3.服务结果 四.总结 一.引言 上一篇文章我们介绍了如果使用 conda 搭建 Bert-VITS2 最新版本的环境并训练自定义语音&#xff0c;通过 1000 个 epoch 的训练&#xf…

streamlit设置sidebbar和页面背景

streamlit1.29.0 1. 设置sidebar背景 代码&#xff1a; import base64 import streamlit as stdef sidebar_bg(side_bg):side_bg_ext pngst.markdown(f"""<style>[data-testid"stSidebar"] > div:first-child {{background: url(data:im…

Express框架使用全流程

1.目的和使用场景 对于像我这样不常使用 Node.js 进行开发的人来说&#xff0c;每次开始一个新项目都意味着从头开始设置环境&#xff0c;这个过程相当繁琐。因此&#xff0c;我决定自己构建一个开箱即用的项目脚手架。我的目标是创建一个简单易用的基础框架&#xff0c;能让我…

【REST2SQL】07 GO 操作 Mysql 数据库

【REST2SQL】01RDB关系型数据库REST初设计 【REST2SQL】02 GO连接Oracle数据库 【REST2SQL】03 GO读取JSON文件 【REST2SQL】04 REST2SQL第一版Oracle版实现 【REST2SQL】05 GO 操作 达梦 数据库 【REST2SQL】06 GO 跨包接口重构代码 MySQL是一个关系型数据库管理系统&#xf…

3dmax渲染出现马赛克该怎么办?

为什么渲染会出现马赛克问题呢&#xff0c;什么原因导致的呢&#xff0c;该如何解决呢&#xff1f; 原因一 3dmax渲染出来马赛克可能是因为勾选了 dont reder final image(不渲染最终图像)&#xff0c;所以导致3dmax渲染出来马赛克。 解决方法&#xff1a; 打开渲染器设置菜…