JAVA无侵入链路追踪怎么实现

发布时间:2022-01-05 11:26:24 作者:iii
来源:亿速云 阅读:405

本篇内容介绍了“JAVA无侵入链路追踪怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

一. ⽆侵⼊链路追踪APM⼯具

应⽤性能管理(Application Performance Management,APM) 是指对企业的关键业务应⽤进⾏监测、优化,提⾼企业应⽤的可靠性和质量,保证⽤户得到良好的服务,降低IT总运维成本,为企业带来更多的商业利益。

Pinpoint简介

Pinpoint是一个APM(应用程序性能管理)工具,适用于用Java / PHP编写的大型分布式系统。在使用上力图简单高效,通过在启动时安装agent,不需要修改哪怕一行代码,最小化性能损失(3%)。

JAVA无侵入链路追踪怎么实现

组件组件功能
Pinpoint-Collector收集各种性能数据
Pinpoint-Agent探针与应用服务器(例如 tomcat) 关联,部署到同一台服务器上
Abase Storage收集到数据存到 HBase 中
Pinpoint-Web将收集到的数据层现在 web 展示

二. 快速在Rainbond部署 pinpoint

基于Rainbond应用市场⼀键安装。

这种部署方式对于像pinpoint这种多组件的复杂应用来说,最大程度的降低了部署难度与工作量

JAVA无侵入链路追踪怎么实现

JAVA无侵入链路追踪怎么实现

JAVA无侵入链路追踪怎么实现

三. 添加被监控的对象

1)事先将pinpoint-agent资源打进镜像;
2)插入启动关键代码:

#pinpoint-agent.sh
#指定pinpoint-agent资源
CATALINA_OPTS="$CATALINA_OPTS -javaagent:$PINPOINT_AGENT_PATH/pinpoint-bootstrap-${PINPOINT_AGETN_VERSION}-SNAPSHOT.jar"  
#指定pinpoint-agent ID
CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.agentId=${AGENT_ID}" 
#指定应用名字
CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.applicationName=${APP_NAME}"
#docker-entrypoint.sh  
#判断是否开启pinpoint-agent
if [ "$ENABLE_APM" == "true" ];then  
#collector地址
 COLLECTOR_TCP_HOST=${COLLECTOR_TCP_HOST:-127.0.0.1} 
#TCP端口 
 COLLECTOR_TCP_PORT=${COLLECTOR_TCP_PORT:-9994}       
 COLLECTOR_UDP_SPAN_LISTEN_HOST=${COLLECTOR_UDP_SPAN_LISTEN_HOST:-127.0.0.1}
 COLLECTOR_UDP_SPAN_LISTEN_PORT=$
#UDP端口
{COLLECTOR_UDP_SPAN_LISTEN_PORT:-9996}        
 COLLECTOR_UDP_STAT_LISTEN_HOST=${COLLECTOR_UDP_STAT_LISTEN_HOST:-127.0.0.1}
 COLLECTOR_UDP_STAT_LISTEN_PORT=$
#UDP端口
 {COLLECTOR_UDP_STAT_LISTEN_PORT:-9995} 
#启动时加载agent
 sed -i "2 a. /usr/local/tomcat/bin/pinpoint-agent.sh" /usr/local/tomcat/bin/catalina.sh  
#导入到pinpoint-agent配置文件
  sed -i -r -e "s/(profiler.collector.ip)=.*/\1=${COLLECTOR_TCP_HOST}/" \     
 -e "s/(profiler.collector.tcp.port)=.*/\1=${COLLECTOR_TCP_PORT}/" \
 -e "s/(profiler.collector.span.port)=.*/\1=${COLLECTOR_UDP_SPAN_LISTEN_PORT}/" \
 -e "s/(profiler.collector.stat.port)=.*/\1=${COLLECTOR_UDP_STAT_LISTEN_PORT}/" /usr/local/pinpoint-agent/pinpoint.config
#默认值,在平台的每一个应用都会生成
export APP_NAME=${APP_NAME:-${SERVICE_NAME:-${HOSTNAME}}}
#通过APP_NAME,POD_IP区分一个服务下每一个实例的Agent-ID
export AGENT_ID=${APP_NAME}-${POD_IP} 
fi
#!/bin/bash
#通过特定环境变量判断是否启动 pinpoint agent
if [[ $ENABLE_APM == "true" ]];then 
 AGENT_ID=${SERVICE_ID:0:10}
 PINPOINT_AGETN_VERSION=1.7.2
 PINPOINT_AGENT_PATH=/app/pinpoint
#将 pinpoint agent 启动参数加⼊到 $JAVA_OPTS 中 
export JAVA_OPTS="$JAVA_OPTS -javaagent:$ 
{PINPOINT_AGENT_PATH}/pinpoint-bootstrap-${PINPOINT_AGETN_VERSION}-
SNAPSHOT.jar -Dpinpoint.agentId=${AGENT_ID:-${SERVICE_ID:0:10}} -Dpinpoint.applicationName=${APP_NAME:-${SERVICE_NAME:-
$HOSTNAME}}"
fi
PORT=${PORT:-5000}
sleep ${PAUSE:-0}
#最终启动命令
exec java -Dserver.port=$PORT $JAVA_OPTS -jar target/*.jar

传统架构下的pinpoint,需要在被监控的对象里附加Agent,并通过修改配置文件使之生效。在云帮平台上,我们将这两个步骤也做了相应的简化。

云帮平台利用设置 环境变量 的方式,代替了配置文件,键值对形式的环境变量非常简单易用。

添加Pinpoint监控对象实践

方法一

下面以todoapi为例,介绍添加被监控对象的方法

JAVA无侵入链路追踪怎么实现

JAVA无侵入链路追踪怎么实现

JAVA无侵入链路追踪怎么实现

JAVA无侵入链路追踪怎么实现

方法二

JAVA无侵入链路追踪怎么实现

JAVA无侵入链路追踪怎么实现

JAVA无侵入链路追踪怎么实现

JAVA无侵入链路追踪怎么实现

JAVA无侵入链路追踪怎么实现

“JAVA无侵入链路追踪怎么实现”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

推荐阅读:
  1. 如何通过Zipkin或SKYwalking实现链路追踪
  2. SkyWalking实现服务链路追踪的方法

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

java

上一篇:Service Mesh相关知识点有哪些

下一篇:服务器软件架构模式有哪些

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》