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.mzph.cn/news/627544.shtml

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

相关文章

Ansible Filter滤波器的使用(二)

一、【说在前面】 Ansible Filter一般被称为滤波器或者叫过滤器。 这个东西初次听到以为是什么科学计算的东西&#xff0c;但是想来ansible不太可能有什么滤波操作&#xff0c;所以这个东西本质是一个数值筛选器&#xff0c;内置函数&#xff0c;本质是一个为了做区别化的工具…

【稳定检索、投稿优惠】2024年机械自动化与电力系统国际会议(IACMAPS 2024)

2024年机械自动化与电力系统国际会议(IACMAPS 2024) 2024 International Conference on Mechanical Automation and Power Systems(IACMAPS 2024) 一、【会议简介】 2024年机械自动化与电力系统国际会议(IACMAPS 2024)将在大理盛大召开。本次会议旨在汇聚全球的机械自动化与电力…

gsap timeline示例-实现滚动切换手机颜色

前言 最近使用gsap有点上瘾。看过一个手机官网滚动切换手机颜色的效果&#xff0c;初次见还是很炫。所以呢&#xff0c;就去研究了下&#xff0c;发现也不过如此。我们现在使用gsap来实现它。 首先来看最终效果&#xff1a; gsap timeline示例-实现滚动切换手机颜色 实现原理…

这10个技巧你都会?绝对算网络抓包高手!

中午好&#xff0c;我的网工朋友。抓包工具Wireshark大家都知道&#xff0c;它可以截获和分析网络数据封包&#xff0c;检测网络上的问题&#xff0c;比如网络延迟、数据丢失、拥堵等&#xff0c;以及评估网络性能。 当网络里发现恶意攻击、某人下载流量过大、设备互联丢包、协…

C#微信公众号HIS预约挂号系统源码

微信公众号预约挂号系统、支付宝小程序预约挂号系统主要是让自费、医保患者在手机上就能实现就医全过程&#xff0c;实时预约挂号、自费、医保结算&#xff0c;同时还可以查询检查检验报告等就诊信息&#xff0c;真正实现了让信息“多跑路”&#xff0c;让群众“少跑腿”。系统…

NXP采用RS RTS测试系统,验证28纳米RFCMOS雷达单芯片 |百能云芯

Rohde & Schwarz的雷达目标模拟器R&S RTS&#xff0c;作为汽车雷达的颠覆性解决方案&#xff0c;尤其是其能够电子模拟非常近距离物体的能力&#xff0c;已被用于验证NXP半导体的下一代雷达传感器参考设计的性能。 这一合作使汽车行业在汽车雷达的发展上迈出了一步&…

python热重载调试神器Reloadium,Debug工具用print太慢了

作为程序员&#xff0c;我们都深知调试&#xff08;Debug&#xff09;在编程过程中的重要性。然而&#xff0c;使用传统的"print"语句进行调试可能效率较低&#xff0c;今天&#xff0c;笔者将推荐一款独具一格的Python调试工具——Reloadium。Reloadium为IDE添加了热…

ChatGPT vs 文心一言: 两大AI助手的较量

文章目录 每日一句正能量前言ChatGPTChatGPT的优点ChatGPT的劣势 文心一言文心一言的优势文心一言的劣势 后记 每日一句正能量 无所不能的人实在一无所能&#xff0c;无所不专的专家实在是一无所专。 前言 随着人工智能技术的发展&#xff0c;ChatGPT和文心一言已成为广受欢迎…

Linux命令之pwd,cd,ls,cat,more,less,head,tail文件目录类命令的使用

一、实验题 在桌面打开终端&#xff0c;查看当前目录 改变目录位置至当前目录的父目录 改变目录位置至用户的家目录 利用绝对路径改变目录到/usr/local目录下 列出当前目录下的文件及目录 列出包括以“.”开始的隐藏文件在内的所有文件 列出当前目录下所有文件的权限、所有者、…

Go后端开发 -- 面向对象特征:结构体 继承 多态 interface

Go后端开发 – 面向对象特征&#xff1a;结构体 && 继承 && 多态 && interface 文章目录 Go后端开发 -- 面向对象特征&#xff1a;结构体 && 继承 && 多态 && interface一、Go的结构体1.结构体的声明和定义2.结构体传参 二、将…

简易机器学习笔记(十一)opencv 简易使用-人脸识别、分类任务

前言 前段时间摸了下机器学习&#xff0c;然后我发现其实openCV还是一个很浩瀚的库的&#xff0c;现在也正在写一篇有关yolo的博客&#xff0c;不过感觉理论偏多&#xff0c;所以在学yolo之前先摸一下opencv&#xff0c;简单先写个项目感受感受opencv。 流程 openCV实际上已…

Go interface基础

接口类型是对其它类型行为的概括与抽象。通过使用接口&#xff0c;我们可以写出更加灵活和通用的函数&#xff0c;这些函数不用绑定在一个特定的类型实现上。 很多面向对象的语言都有接口这个概念&#xff0c;Go 语言的接口的独特之处在于它是隐式实现。换句话说&#xff0c;对…

maven导入无法拉取所需依赖

maven导入无法拉取所需依赖 1.原因2.解决搞定收工&#xff01; 1.原因 公司使用的是gradle&#xff0c;配置的私有云&#xff0c;maven里面配置私有云完全使用不了&#xff0c;无论配置国内还是国外的&#xff0c;导入的项目报错拉不到jar包。 <mirror><id>mirro…

Dhcp中继ensp

拓扑图 <Huawei>system-view [Huawei]sysname SW1 [SW1]vlan batch 10 20 [SW1]int e0/0/1 #配置access接口 [SW1-Ethernet0/0/1]port link-type access [SW1-Ethernet0/0/1]port default vlan 10 [SW1-Etherne…

[C#]利用paddleocr进行表格识别

【官方框架地址】 https://github.com/PaddlePaddle/PaddleOCR.git 【算法介绍】 PaddleOCR表格识别是PaddlePaddle开源项目中的一个强大功能&#xff0c;它利用深度学习技术实现了对各类表格的高精度识别。PaddleOCR表格识别能够处理各种复杂的表格&#xff0c;包括但不限于…

【语音助手】语音识别框架的简单介绍

文章目录 ASR 框架常见的ASR框架用于嵌入式领域的ASR框架 NLP 框架常用NLP框架用于嵌入式领域的NLP框架 TTS 框架常见的TTS 框架用于嵌入式领域的TTS 框架 ASR&#xff1a;语音识别&#xff08;ASR&#xff09;是一种将语音信号转换为文本的技术。NLP&#xff1a;自然语言处理。…

cartopy,一个非常好用的 Python 库!

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 大家好&#xff0c;今天为大家分享一个非常好用的 Python 库 - cartopy。 Github地址&#xff1a;https://github.com/SciTools/cartopy 地图数据可视化在许多领域中都是至关重要的&#xff0c;无论是用于气象学…

IDEA2023的激活与安装(全网最靠谱,最快捷的方式)

前言&#xff1a; 相信很多小伙伴已经开始了java的学习之旅&#xff0c;想要更快乐的学习当然少不了IDEA这个得力的开发工具软件。但是IDEA是付费的&#xff0c;免费版功能有太少&#xff0c;怎么才能既免费&#xff0c;又能使用上正式版呢&#xff01;当然还是激活啦&#xf…

json 读取中文、保存为中文的json文件

pycharm 打开的json文件 通过代码读取中文文件 保存中文的json文件&#xff1a; import jsonwith open(garbage_classification.json,encodingutf-8-sig,moder) as f:data json.load(f) # print(data) {0: 可回收物_金属食品罐, 1: 其他垃圾_PE塑料袋, 2: 其他垃圾_污损塑…

设备树下Led驱动实验-向设备树文件添加Led设备节点

一. 简介 前面简单学习了设备树文件的内容&#xff0c;语法&#xff0c;以及如何向设备树文件中添加设备节点信息。学习了驱动开发时&#xff0c;会使用到的设备树常用OF操作函数。本文我们就开始第一个基于设备树的 Linux 驱动实验-LED驱动实现。 本文具体学习在设备树文件添…