APM链路监控: Linux 部署 pinpoint

news2024/9/28 11:14:38

目录

一、实验

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

3)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.config

profiler.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/profile

echo $JAVA_HOME

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

2)-m 输出传递给main 方法的参数,在嵌入式jvm上可能是null
jps -m

3)-l 输出应用程序main class的完整package名 或者 应用程序的jar文件完整路径名
jps -l

4)-v 输出传递给JVM的参数
jps -v

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

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

相关文章

大一统的监控探针采集器 cprobe

需求背景 监控数据采集领域&#xff0c;比如 Prometheus 生态有非常多的 Exporter&#xff0c;虽然生态繁荣&#xff0c;但是无法达到开箱即用的大一统体验&#xff0c;Exporter 体系的核心问题有&#xff1a; 良莠不齐&#xff1a;有的 Exporter 写的非常棒&#xff0c;有的…

爬虫—响应页面乱码问题解决方法

爬虫—响应页面乱码问题解决方法 案例&#xff1a;腾牛网图片抓取 源代码如下&#xff1a; import requestsurl https://www.qqtn.com/wm/meinvtp_1.html headers {user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) …

七麦数据js逆向(补环境版)

本文目标地址如下&#xff0c;使用base64解码获得 aHR0cHM6Ly93d3cucWltYWkuY24vcmFuay9tYXJrZXRSYW5rL21hcmtldC82L2NhdGVnb3J5LzUvY29sbGVjdGlvbi9hbGwvZGF0ZS8yMDI0LTAxLTEy 本文逆向破解分为扣代码版和补环境版&#xff0c;扣代码版请看专栏另一篇文章 废话不多说了&#…

SAP OData(三)Query Option

Query option是指客户端在获取EntitySet的URL中后缀的一些指令&#xff0c;在第一篇第四小节我们已经见识了一部分Query指令。在下面表中列出了最重要的QueryOption。注意指令在URL中必须小写。 Operation Query Option Filtering and projecting $filter and $select Sort…

ubuntu 22 搭建git服务

第一步&#xff0c;安装git&#xff1a; sudo apt-get install git 创建用户信息 git config --global user.name soft 第二步&#xff0c;创建一个git用户&#xff0c;用来运行git服务&#xff1a; sudo adduser git 创建git仓库的存储目录、更改文件目录属主为代码仓库…

6. 逻辑删除

逻辑删除对应的是物理删除&#xff0c;分别介绍一下这两个概念&#xff1a; 物理删除 &#xff1a;指的是真正的删除&#xff0c;即&#xff1a;当执行删除操作时&#xff0c;将数据表中的数据进行删除&#xff0c;之后将无法再查询到该数据逻辑删除 &#xff1a;并不是真正意…

TensorRT模型优化模型部署(七)--Quantization量化(PTQ and QAT)(二)

系列文章目录 第一章 TensorRT优化部署&#xff08;一&#xff09;–TensorRT和ONNX基础 第二章 TensorRT优化部署&#xff08;二&#xff09;–剖析ONNX架构 第三章 TensorRT优化部署&#xff08;三&#xff09;–ONNX注册算子 第四章 TensorRT模型优化部署&#xff08;四&am…

JVM基础(12)——G1调优

作者简介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中兴通讯、美团架构师&#xff0c;现某互联网公司CTO 联系qq&#xff1a;184480602&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗互联网寒冬 学习必须往深处挖&…

解释程序基本原理

解释程序基本原理 1、解释程序的基本结构2、高级语言编译与解释方式的比较 语言处理程序是一类系统软件的总称&#xff0c;其主要作用是将高级语言或汇编语言编写的程序翻译成某种机器语言程序&#xff0c;使程序可在计算机上运行。语言处理程序主要分为汇编程序、编译程序和解…

【详解】结构体的内存对齐(每步配图)

目录 引言&#xff1a; 为什么存在结构体内存对齐? 结构体内存对齐规则&#xff1a; 练习一&#xff1a; 测试代码&#xff1a; 结果如下&#xff1a; 第二个练习&#xff1a;结构体的嵌套问题 测试代码&#xff1a; 代码结果如下&#xff1a; 两个关于结构体的易错…

thinkphp递归实现无限级子分类合并上级children

//设别分类列表public function getCategoryList(){$list = Db::name(categorys)->select(

在vue中实现树形结构的表格,以及对数据结构的处理

需求&#xff1a;有一些告警数据&#xff0c;如果他们的计划编码相同则实现折叠效果&#xff0c;单击某行数据可以进行关闭&#xff0c;状态发生改变&#xff0c;关闭以后按钮禁用。 实现效果&#xff1a;目前所有告警消息都被关闭&#xff0c;如果未被关闭则可以进行关闭 实现…

leetcode 2645. 构造有效字符串的最少插入数-python

题目&#xff1a; 给你一个字符串 word &#xff0c;你可以向其中任何位置插入 “a”、“b” 或 “c” 任意次&#xff0c;返回使 word 有效 需要插入的最少字母数。 如果字符串可以由 “abc” 串联多次得到&#xff0c;则认为该字符串 有效 。 解题方法 1.先判断字符串是否…

李沐之神经网络基础

目录 1.模型构造 1.1层和块 1.2自定义块 1.3顺序块 1.4在前向传播函数中执行代码 2.参数管理 2.1参数访问 2.2参数初始化 3.自定义层 3.1不带参数的层 3.2带参数的层 4.读写文件 4.1加载和保存张量 4.2加载和保存模型参数 1.模型构造 1.1层和块 import torch fr…

一种具有轨迹优化的无人驾驶车实时运动规划器 论文阅读

论文题目&#xff1a;A Real-Time Motion Planner with Trajectory Optimization for Autonomous Vehicles Abstract 本文的实时规划器首先将空间离散化&#xff0c;然后基于一组成本函数搜索出最佳轨迹。迭代优化所得到的轨迹的Path和Speed。post-optimization计算复杂度低&…

阿里云服务部署docker容器

1.1 为什么要用docker 问题 开发、测试、生产环境不统一&#xff0c;造成项目测试、部署时产生问题 解决方案 使用容器化技术&#xff0c;将环境和项目一起发送给测试、部署人员&#xff0c;测试人数和运维人员直接使用发过 来的环境和项目进行操作&#xff0c;避免环境不统一…

【卡梅德生物】单B细胞技术:牛单抗制备

1.牛单B细胞技术原理 单个B细胞抗体制备技术是近年来新发展的一类快速制备单克隆抗体的技术&#xff0c;基于流式细胞分选技术进行单B细胞单抗制备&#xff0c;利用每个B细胞只含有一个功能性重链可变区DNA序列和一个轻链可变区DNA序列且只产生一种特异性抗体的特性&#xff0c…

嵌入式linux 编译qt5(以v851s为例)

本文参考Blev大神的博客&#xff1a;Yuzuki Lizard V851S开发板 --移植 QT5.12.9教程&#xff08;群友Blev提供&#xff09; - Allwinner / 柚木PI-V851S - 嵌入式开发问答社区 (100ask.net) 一. 环境准备 1.下载qt5源码&#xff1a;Open Source Development | Open Source …

MathType绝对是我数学编辑的首选工具!

去年&#xff0c;微软曾说&#xff0c;要去掉Office里的公式编辑器&#xff0c;建议用户使用MathType编辑公式。目前Office用户可以到微软官网安装MathType的插件&#xff0c;现在免费使用&#xff0c;以后要收费。Word里安装这个插件以后&#xff0c;就会出现MathType的菜单。…

双交叉限幅控制总结

空燃比小于等于1使用下图&#xff1a;空燃比大于1&#xff0c;MAX变MIN&#xff0c;MIN变MAX&#xff0c;高低选互换即可。加负荷&#xff0c;先加空气&#xff0c;后加煤气&#xff0c;降负荷&#xff0c;先降煤气&#xff0c;后降空气。 交叉限幅和双交叉限幅的区别 交叉限幅…