Skywalking基础使用

news2024/10/7 19:20:28

Skywalking基础使用

    • agent的使用
    • Linux下Tomcat7和8中使用
    • Spring Boot中使用
    • RocketBot的使用

agent的使用

agent探针可以让我们不修改代码的情况下,对java应用上使用到的组件进行动态监控,获取运行数据发送到OAP上进行统计和存储。agent探针在java中是使用java agent技术实现的,不需要更改任何代码,java agent会通过虚拟机(VM)接口来在运行期更改代码。

Agent探针支持JDK1.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配置文件:

[root@izuf66wqqqhhqzkhd61vnoz logs]# cd /usr/local/skywalking/apache-skywalking-apm-bin/agent/config/
[root@izuf66wqqqhhqzkhd61vnoz 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:skywalking_tomcat}

Linux下Tomcat7和8中使用

1、要使用Skywalking监控Tomcat中的应用,需要先准备一个Spring MVC项目。
skywalking_springmvc-1.0-SNAPSHOT.war

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

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@RequestMapping("/hello")
//hello/sayHello.do
public class HelloController {
    @RequestMapping("/sayHello")
    @ResponseBody
    public String sayHello(String name){
        return "hello world";
    }
}

2、将apache-tomcat-8.5.47.tar.gz文件上传至虚拟机/usr/local/skywalking目录下,然后解压:

tar -zxvf apache-tomcat-8.5.47.tar.gz

3、将war包上传至/usr/local/skywalking/apache-tomcat-8.5.47/webapps/下。编辑/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

4、修改tomcat启动端口:

vi conf/server.xml

#修改这一行的端口为8081
<Connector port="8081" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

5、执行bin目录下的./startup.sh 文件启动tomcat。然后访问地址:
http://192.168.75.103:8081/skywalking_springmvc-1.0-SNAPSHOT/hello/sayHello.do
在这里插入图片描述
6、此时再访问Skywalking的页面,会发现出现了一个服务和端点,同时有一笔调用显示了调用的应用名和接口地址。
在这里插入图片描述
7、由于没有修改agent探针中的应用名,所以默认显示的是Your_ApplicationName。接下来我们修改下应用名称,让他显示的更加正确。编辑agent配置文件:

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

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

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

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

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

10、然后将tomcat重启

./shutdown.sh
./startup.sh

在这里插入图片描述

Spring Boot中使用

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层代码如下,提供了一个正常访问的接口和一个异常访问接口:

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!";
    }
}

3、使用命令启动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地址来进行访问,访问之后稍等片刻访问Skywalking的UI页面。
在这里插入图片描述

RocketBot的使用

Skywalking的监控UI页面称为RocketBot,我们可以通过8080端口进行访问,由于8080端口很容器冲突,可以修改webapp/webapp.yml来更改启动端口:

server:
  port: 8080

1、仪表盘
打开RocketBot默认会出现仪表盘页面:
在这里插入图片描述
仪表盘页面分为两大块:
(1) 服务仪表盘,展示服务的调用情况
(2) 数据库仪表盘,展示数据库的响应时间等数据

选中服务仪表盘,有四个维度的统计数据可以进行查看:
(1) 全局,查看全局接口的调用,包括全局响应时长的百分比,最慢的端点,服务的吞吐量等
(2) 服务,显示服务的响应时长、SLA、吞吐量等信息
(3) 端点,显示端点的响应时长、SLA、吞吐量等信息
(4) 实例,显示实例的响应时长、SLA、吞吐量等信息,还可以查看实例的JVM的GC信息、CPU信息、内存信息

2、拓扑图
Skywalking提供拓扑图,直观的查看服务之间的调用关系:
在这里插入图片描述
User代表用户应用,目前案例中其实是浏览器
图中skywalking_boot应用被User调用,同时显示它是一个Spring MVC的应用。后续案例中会出现多个应用调用,使用拓扑图就能清楚的分析其调用关系了。
在这里插入图片描述
左侧是追踪列表,也可以通过上方的追踪ID来进行查询。点击追踪列表某一条记录之后,右侧会显示出此条追踪的详细信息。有三种显示效果:
(1) 列表
(2) 树结构
(3) 表格
可以很好的展现此条追踪的调用链情况而链路上每个节点,可以通过左键点击节点查看详细信息:
在这里插入图片描述
当前的接口是HTTP的GET请求,相对比较简单,后续的示例中出现异常情况或者数据库访问,可以打印出异常信息、堆栈甚至详细的SQL语句。

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

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

相关文章

C语言之数组初级(5-8)

目录 1. 一维数组的创建和初始化 2. 一维数组的使用 3. 一维数组在内存中的存储 4. 二维数组的创建和初始化 5. 二维数组的使用 6. 二维数组在内存中的存储 7. 数组越界 8. 数组作为函数参数 二维数组的画图讲解 例如现在我要找第二行第三列这个元素&#xff0c;下面是…

放大电路与频率特征(期末模电速成)

目录 1、放大电路基础 2、放大电路三种组态 3、放大电路分析&#xff08;必考&#xff09; 4、多级放大电路 5、差动放大电路 6、频率特征 1、放大电路基础 晶体管输出特性曲线中的线性区域是指 放大区 &#xff0c;iC βiB NPN 型静态工作点过高&#xff0c;容易产生 饱…

Vue 中的表格操作

Vue 中的表格操作 在 Web 开发中&#xff0c;表格是非常常见的元素之一。在 Vue 中&#xff0c;我们可以使用一些组件和插件来实现表格的操作。在本文中&#xff0c;我们将介绍 Vue 中的表格操作的基本原理和用法&#xff0c;并给出一些实例代码来帮助读者更好地理解。 表格…

Scrapy爬取数据,使用Django+PyEcharts实现可视化大屏

项目介绍 使用Scrapy进行数据爬取&#xff0c;MySQL存储数据&#xff0c;Django写后端服务&#xff0c;PyEcharts制作可视化图表&#xff0c;效果如下。 项目下载地址&#xff1a;Scrapy爬取数据&#xff0c;并使用Django框架PyEcharts实现可视化大屏 发现每个模块都有详情页…

Django---------创建、运行

目录 1.安装django 2.pycharm&#xff08;专业版&#xff09;创建项目 3.默认项目的文件介绍 4.App的创建和说明 5. 启动运行django 1.确保app已注册[settings.py] 2. 编写URL和视图函数对应关系[url.py] 3.编写视图函数[views.py] 4.启动django项目 1.安装django pip…

C语言之函数栈帧的创建与销毁讲解(1)

在前期的学习中我们可能有很多困惑 例如&#xff1a;局部变量是怎么创建的 为什么局部变量的值是随机值 函数是怎么样传参的 传参的顺序是什么 形参和实参的关系是什么 函数调用是怎么做的 函数掉调用结束后怎么返回的 这篇博客我们来修炼自己的内功&#xff0c;掌握好这篇…

MySQL数据库,从入门到精通:第四篇——MySQL中常用的运算符及其用法

MySQl学习&#xff08;MySQL数据库&#xff0c;从入门到精通&#xff1a;第四篇——MySQL中常用的运算符及其用法 第四篇_MySQL中常用的运算符及其用法运算符1. 算术运算符1&#xff0e;加法与减法运算符2&#xff0e;乘法与除法运算符3&#xff0e;求模&#xff08;求余&#…

【Linux】在工作站或服务器上实现多个GUI图形界面同时进行操作,多个用户同时操作互不干扰

一、问题背景 因为我们团队有几个人需要做仿真&#xff0c;一个工作站不够用&#xff0c;经常是一个人操作的时候另一个人就眼巴巴等着。 我在想能不能实现一种方案&#xff0c;能使两个人一起操作仿真软件呢&#xff1f; 这种方案&#xff0c;目前网上比较流行是x11-forwar…

NLP——ELMO;BERT;Transformers

文章目录 ELMOELMO 简介ELMO 优点利用了多层的 hidden 表示ELMO 缺点 BERTBERT V.S. ELMO两种预训练任务Object1: Masked Language ModelObject2: Next sentence prediction 训练细节如何使用 BERTBERT 应用——垃圾邮件分类 Transformerself-attentionMulti-head AttentionTra…

chatgpt赋能python:Python中如何判断奇偶数

Python中如何判断奇偶数 当我们在Python中编写程序时&#xff0c;有时需要判断一个数是奇数还是偶数&#xff0c;因为根据不同的情况&#xff0c;我们需要对不同的数值进行不同的处理。那么在Python中&#xff0c;该如何判断一个数是奇数还是偶数呢&#xff1f; 判断奇偶数的…

【JavaEE进阶】mybatis

目录&#xff1a; 一、Mybatis是什么 三个映射关系如下图&#xff1a; 二、mybatis的使用&#xff08;前置工作简单案例&#xff09; 第一步&#xff1a;导入MAVEN依赖 第二步&#xff1a; 在spring项目当中新建数据源 第三步&#xff1a;新建一个实体类&#xff0c;是和…

Shell编程规范与变量使用

目录 一、Shell编程概述 1.Shell脚本的概念 2.Shell脚本的应用场景 3.Shell的作用 4.Linux系统中支持的shell 二、Shell编程规范 1.编写Shell脚本规范步骤 2.Shell脚本执行方法 &#xff08;1&#xff09;以绝对路径执行&#xff08;需要赋予脚本文件执行权限&#xf…

stable diffusion webui 文生图(txt2img)api接口调用(使用C#)

唠嗑 本次将跟读者讲一下如何通过C#请求sd webui api 【txt2img】接口&#xff0c;如果读者觉得文章有用&#xff0c;请给【点个赞】吧&#xff0c;有问题可以评论区提问。 实战 1.配置api启用参数 启动webui时&#xff0c;需加上【–api】 命令以保证api接口可以被调用。如…

Shell脚本文本三剑客之awk编辑器

目录 一、sed编辑器简介 二、sed工作流程 三、sed命令 四、sed命令的使用 1.sed打印文件内容&#xff08;p&#xff09; &#xff08;1&#xff09;打印文件所有行 &#xff08;2&#xff09;打印文件指定行 2.sed增加、插入、替换行&#xff08;a、i、c&#xff09; …

Shell脚本之正则表达式详解

目录 一、正则表达式简介 二、正则表达式的组成 三、正则表达式分类 四、正则表达式字符用法 1.基础正则表达式常见元字符&#xff08;支持grep、egrep、sed、awk&#xff09; 2. 扩展正则表达式元字符&#xff08;支持&#xff1a;egrep、grep -E、awk、sed -r&#xff…

C语言之数据在内存中的存储(2)

本章重点&#xff1a;浮点数在内存中的存储 浮点数&#xff1a;数学中的小数 eg.123.45 12.345*10^1 1.2345*10^2 1E10&#xff1a;1.0*10^10 整型家族的类型&#xff0c;表示范围&#xff1a;limits.h 浮点数&#xff1a;float.h 大家可以猜测一下打印的这四个数字…

Unity中动画系统的性能优化

降低骨骼数&#xff0c;减少面片数。 方法&#xff1a; 1.勾选Optimize Game Objects&#xff0c;以剔除骨骼节点对应的Transform节点 2.开启多线程渲染选项 主要影响的函数调用开销&#xff0c;可以在profiler中查看&#xff1a; Animators.Update MeshSkinning.Update C…

【TCP/IP】多进程服务器的实现(进阶) - 信号处理及signal、sigaction函数

目录 信号 signal函数 sigaction函数 尝试用信号来处理僵尸进程 我们在之前学习了如何处理“僵尸进程”&#xff0c;但也会有疑问&#xff1a;调用wait和waitpid函数时我们关注的始终是在子进程上&#xff0c;那么父进程上的管控&#xff08;对于子进程&#xff09;该如何实…

STM32——05-按键、时钟控制、中断复位 点亮LED灯

如何点亮一颗LED灯 编程实现点灯 常用的 GPIO HAL 库函数&#xff1a; void HAL_GPIO_Init ( GPIO_TypeDef * GPIOx , GPIO_InitTypeDef * GPIO_Init ); void HAL_GPIO_WritePin ( GPIO_TypeDef * GPIOx , uint16_t GPIO_Pin , GPIO_PinState PinState ); void HAL_GPIO_Togg…

chatgpt赋能python:Python如何创建新项目

Python如何创建新项目 Python已经成为了全球最受欢迎的编程语言之一。如果您是一个有经验的Python工程师&#xff0c;您可能已经知道如何在命令行上创建新项目。但是&#xff0c;如果您是一个新手或初学者&#xff0c;您可能需要一些指导来开始创建新的项目。在本篇文章中&…