Skywalking(3):Skywalking基础

Skywalking(3):Skywalking基础,第1张

1 agent的使用

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 
vi agent.config

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

# The service name in UI 
agent.service_name=${SW_AGENT_NAME:Your_ApplicationName}

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

# The service name in UI 
agent.service_name=${SW_AGENT_NAME:HelloSpringMVC}

然后将tomcat重启:

./shutdown.sh 
./startup.sh
2 Tomcat中的使用

2.1Linux下Tomcat中的使用

 1.要使用Skywalking监控Tomcat中的应用,需要先准备一个Spring Mvc项目,在资源中已经提供了源代码文件:

skywalking演示代码-Java文档类资源-CSDN下载

下载后直接打包为war包即可。

代码如下:

HelloController :

package com.springmvc.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

//url:  http://localhost:8080/HelloSpringMVC/hello/mvc  

@Controller    

@RequestMapping(value="/hello")
public class HelloController {


      @RequestMapping(value="/mvc",method=RequestMethod.GET)    
        public String HelloWorld(Model model){    
            
            model.addAttribute("message","I am very handsome");  

            return "HelloWorld";   
        }  
}

index.js页面:



Hello World!

直接访问这两个来演示链路追踪。

将资源文件下的 apache-tomcat-9.0.37.tar.gz 文件上传至虚拟机目录下,然后解压

tar -zxvf apache-tomcat-9.0.37.tar.gz

将war包上传至apache-tomcat-8.5.47/webapps/下。编辑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启动端口:

vi conf/server.xml 

#修改这一行的端口为8081 

接下来我们修改下应用名称,让他显示的更加正确。编辑agent配置文件:

cd /usr/local/skywalking/apache-skywalking-apm-bin/agent/config 
vi agent.config

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

# The service name in UI 
agent.service_name=${SW_AGENT_NAME:Your_ApplicationName}

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

# The service name in UI 
agent.service_name=${SW_AGENT_NAME:sHelloSpringMVC}

然后将tomcat重启:

./shutdown.sh 
./startup.sh

启动后,未访问tomcat时,skywalking是没有信息的。

访问http://ip地址/HelloSpringMVC/ 

2.2 Windows 下Tomcat7和8中使用(了解)Windows下只需要修改tomcat目录/bin/catalina.bat 文件的第一行为:

set "CATALINA_OPTS=-javaagent:/path/to/skywalking-agent/skywalking-agent.jar"

2.3 SpringBoot中的使用

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

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

cd /usr/local/skywalking/apache-skywalking-apm-bin/ 
cp -r agent agent_boot 
vi 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-0.0.1-SNAPSHOT.jar &

注意:

使用jar包启动的项目如果需要集成skywalking,需要添加-javaagent参数,参数值为agent的jar包所在的位置。

-Dserver.port参数用于指定端口号,防止与tomcat冲突。

末尾添加 & 后台运行模式启动Spring Boot项目。

此时我们可以访问http://虚拟机IP:8082/sayBoot地址来进行访问,访问之后稍等片刻访问Skywalking的UI页面。

 

拓扑图中出现springboot应用

 

 追踪中出现调用情况,标红的为异常端口

 

可以查看异常端口的信息

 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/795527.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-06
下一篇 2022-05-06

发表评论

登录后才能评论

评论列表(0条)