暂无图片
暂无图片
暂无图片
暂无图片
1
暂无图片

(三)使用 Skywalking

原创 张晓璞 2022-04-14
2956

agent的使用

测试所用包在这里
https://www.modb.pro/download/518224

agent探针可以让我们不修改代码的情况下,对java应用上使用到的组件进行动态监控,获取运行数据发送到OAP上进行统计和存储

agent探针在java中是使用java agent技术实现的,不需要更改任何代码,java agent会通过虚拟机(VM)接口来在运行期更改代码

Agent探针支持 JDK 1.6 - 12的版本,Agent探针所有的文件在Skywalking的agent文件夹下。

文件目录如下;

+-- agent
	+-- activations
		apm-toolkit-log4j-1.x-activation.jar
		apm-toolkit-log4j-2.x-activation.jar
		apm-toolkit-logback-1.x-activation.jar
		...
		
		
//配置文件
+-- config
	agent.config
	
	
//组件的所有插件
+-- plugins
	apm-dubbo-plugin.jar
	apm-feign-default-http-9.x.jar
	apm-httpClient-4.x-plugin.jar
	....
	
	
//可选插件
+-- optional-plugins
	apm-gson-2.x-plugin.jar
	.....
	
	
	
+-- bootstrap-plugins
	jdk-http-plugin.jar
	.....
+-- logs
skywalking-agent.jar
复制

部分插件在使用上会影响整体的性能或者由于版权问题放置于可选插件包中,不会直接加载,如果需要使用,将可选插件中的jar包拷贝到plugins包下。

修改探针应用名

由于没有修改agent探针中的应用名,所以默认显示的是Your_ApplicationName。我们修改下应用名称,让他显示的更加正确。

编辑agent配置文件:

cd /usr/local/skywalking/apache-skywalking-apm-bin/agent/config
vim agent.config
复制

我们在配置中找到这么一行:

# The service name in UI

agent.service_name=${SW_AGENT_NAME:Your_ApplicationName}
复制

这里的配置含义是可以读取到SW_AGENT_NAME配置属性,如果该配置没有指定,那么默认名称为Your_ApplicationName。

这里我们把Your_ApplicationName替换成你想监控的名称。比如tomcat

# The service name in UI

agent.service_name=${SW_AGENT_NAME:skywalking_tomcat}
复制

然后重启你要监控的应用,比如tomcat

./shutdown.sh
./startup.sh
复制

Skywalking监控Tomcat中的应用

安装tomcat

我们首先以将资源文件下的apache-tomcat-8.5.47.tar.gz 文件上传至虚拟机/usr/local/skywalking目录下,然后解压:

cd /usr/local/skywalking
tar -zxvf apache-tomcat-8.5.47.tar.gz
复制

Spring Mvc项目

要使用Skywalking监控Tomcat中的应用,需要先准备一个Spring Mvc项目,这里提供了打包好的文件

skywalking_springmvc-1.0-SNAPSHOT.war

以下是该项目的接口代码:

package com.itcast.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @Controller @RequestMapping("/hello") public class HelloController { @RequestMapping("/sayHello") @ResponseBody public String sayHello(String name) { return "hello world"; } }
复制

将war包(skywalking_springmvc-1.0-SNAPSHOT.war )

上传至/usr/local/skywalking/apache-tomcat-8.5.47/webapps/下。

cd /usr/local/skywalking/apache-tomcat-8.5.47/webapps/
复制

配置探针

编辑/usr/local/skywalking/apache-tomcat-8.5.47/bin/catalina.sh 文件

vim /usr/local/skywalking/apache-tomcat-8.5.47/bin/catalina.sh
复制

在文件顶部添加:

CATALINA_OPTS="$CATALINA_OPTS -javaagent:/usr/local/skywalking/apache-skywalking-apm-bin/agent/skywalking-agent.jar"; export CATALINA_OPTS
复制

修改tomcat启动端口

为了防止和skywalking端口冲突,把tomcat的启动端口修改端口为8081

vim /usr/local/skywalking/apache-tomcat-8.5.47/conf/server.xml
复制
 #这个地方改8081
 <Connector port="8081" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    <!-- A "Connector" using the shared thread pool-->
    <!--
    <Connector executor="tomcatThreadPool"
               port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    -->
复制

启动tomcat

执行bin目录下的./startup.sh 文件启动tomcat。

 cd /usr/local/skywalking/apache-tomcat-8.5.47/bin
 
./startup.sh
复制

然后访问地址:

http://192.168.88.151:8081/skywalking_springmvc-1.0-SNAPSHOT/hello/sayHello.do
复制

如果正确打开,能输出hello world。

image.png

注意:一定要保证虚拟机和物理机的时间一致,否则访问数据的时候会因为时间不一致而获取不到数据。

skywalking反馈

此时再访问Skywalking的页面,会发现出现了一个服务和端点,同时有一笔调用显示了调用的应用名和接口地址。

image.png

Skywalking监控Spring Boot

Skywalking与Spring Boot集成提供了完善的支持。

1、首先我们复制一份agent,防止与tomcat使用的冲突。

cd /usr/local/skywalking/apache-skywalking-apm-bin/
cp -r agent agent_boot
vim /usr/local/skywalking/apache-skywalking-apm-bin/agent_boot/config/agent.config
复制

修改配置中的应用名为:

# The service name in UI

agent.service_name=${SW_AGENT_NAME:skywalking_boot}
复制

2、我们需要自己准备资源测试,将skywalking_springboot.jar 文件上传到/usr/local/skywalking 目录下。

Controller层代码如下,提供了一个正常访问的接口和一个异常访问接口:

package com.itcast.skywalking_springboot.controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class MyController { //正常访问接口 @RequestMapping("/sayBoot") public String sayBoot() { return "Hello Boot!"; } //异常访问接口 @RequestMapping("/exception") public String exception() { int i = 1/0; return "Hello Boot!"; } }
复制

使用命令启动spring boot项目:

java -javaagent:/usr/local/skywalking/apache-skywalking-apm-bin/agent_boot/skywalking-agent.jar -Dserver.port=8082 -jar skywalking_springboot.jar &
复制

使用jar包启动的项目如果需要集成skywalking,需要添加-javaagent参数,

  • 参数值为agent的jar包所在位置。
  • -Dserver.port参数用于指定端口号,防止与tomcat冲突。
  • 末尾添加& 后台运行模式启动Spring Boot项目。

此时我们可以访问http://虚拟机IP:8082/sayBoot

http://192.168.88.151:8082/sayBoot
http://192.168.88.151:8082/exception
复制

地址来进行访问,访问之后稍等片刻访问Skywalking的UI页面。
image.png

传送门:

(一)初探 Skywalking
(二)安装 Skywalking
(三)使用 Skywalking
(四)Skywalking的UI页面RocketBot

(五)学习用资料包

最后修改时间:2022-04-18 15:54:11
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

墨天轮福利君
暂无图片
3年前
评论
暂无图片 0
您好,您的文章已入选墨力原创作者计划合格奖,10墨值奖励已经到账请查收! ❤️我们还会实时派发您的流量收益。
3年前
暂无图片 点赞
评论