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。

注意:一定要保证虚拟机和物理机的时间一致,否则访问数据的时候会因为时间不一致而获取不到数据。
skywalking反馈
此时再访问Skywalking的页面,会发现出现了一个服务和端点,同时有一笔调用显示了调用的应用名和接口地址。

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页面。

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




