Agent 的使用-Linux 下 Tomcat7和8中使用 | 学习笔记

简介: 快速学习 Agent 的使用-Linux 下 Tomcat7和8中使用

开发者学堂课程【分布式链路追踪 SkywalkingAgent 的使用-Linux 下 Tomcat7和8中使用】学习笔记,与课程紧密连接,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/743/detail/13156


Agent 的使用-Linux 下 Tomcat7和8中使用


Agent 的使用

如何在 Linux 下 Tomcat7和8中使用 Skywalking 监控 Tomcat 中的应用。

1.使用前的准备

需要注意,在 Skywalking 中 Tomcat7和8的使用方式是一样的,如果要使用 Skywalking 监控 Tomcat 中的应用,需要先准备一个 Spring MVC 项目,同时拿出已经打包好的文件,下面来查看它的源码。

如图:image.png

在它的 pom 文件中指定依赖,依赖的版本号统一为 spring 5.0.5,除了 spring 的基础依赖外,还引入了 spring MVC ,这些都是常规的依赖。

如图:image.pngimage.png

在web.xml 里进行配置,配置 spring MVC 的 DispatcherServlet 来接收请求,指定文件为 applicationContext-web,这个配置文件实际上是在 resource 下面。

如图,请求需要 .do 进行结尾:image.png

这样请求才会被 springmvc 的servlet-name 进行响应。

然后,再来查看 applicationContext,如图:image.png

如上图是有一个扫描包,这个扫描包在 com.itcast.controller 下。如图:image.png

这个包其实还有一个 hello controller 类,这个类声明为 controller,对外提供接口,接口的地址是/hello,/sayhello,这里可以稍微备注一下接口的访问地址。

如图:image.png

如上图要记得加上 .do,这样就能访问到这个接口,这个接口会返回到前端 hello word 这样一个字符串,这也是最简单的一个 springmvc 项目,可以做一个测试看它是如何在 Tomcat 中被 Skywalking 进行检验的。

2.如何使用 Skywalking

首先,需要把 Tomcat 和 war 包上传到 Linux 下,如图:image.pngimage.png

上传 Tomcat,切换到 usr/local/ Skywalking ,查看 Tomcat 是否成功上传,上传后对它进行解压。

解压后,通过上传工具,在 webapp 下把 war 包上传,如图:

image.png

由于这个 war 包的名字比较长,可以在工具里面进行修改,把原来的名字改为 Skywalking_springmvc 这个名字。

3.对 Tomcat 的配置文件进行修改

需要修改的文件是 catalina.sh ,即在文件顶部添加以下两句话:

CATALINA_OPTS="$CATALINA_OPTS -javaagent:/usr/local/skywalking/apache-

skywalking-apm-bin/agent/skywalking-agent.jar";export CATALINA_OPTS

这句话的内容是说:在 CATLINA_OPTS 参数后面添加 -javaagent:/usr/local/skywalking/apache- skywalking-apm-bin/agent,这个agent 实际上指向目录,选中了里面的 /skywalking-agent.jar 的一个架包,这是 javaagent 的一种标准写法,也就是通过 javaagent 的方式将一个架包启动,而且是和应用程序一起启动,这样就可以通过架包定义的方法进行拦截。此时 CATALINA_OPTS 已经加上了以上内容,只需要把变量导出即可。

进入 apache-tomcat 目录下,在 bin 下面查找启动脚本,即 catalina.sh ,然后在它的顶部添加这两句话,然后保存。image.pngimage.pngimage.png

保存还需要把端口号进行修改,原来的端口是在8080上,现在需要把它改为8081。

如图:image.png

查找到 server.xml 配置文件,把它原来的8080端口号改为8081,然后进行保存,退出。

4.启动与访问

进入 bin 目录下,输入./startup.sh

提示Tomcat  started.表示启动成功。image.png

之后就可以直接通过浏览器进行访问,可以看到,skywalking 的页面目前是没有如何信息的,在浏览器打开192.168.62.141.8081加上项目名,这里把项目名改为 skywalking_springmvc ,然后加上接口名,即/hello,/sayhello.do。

进行访问,页面无法打开就需要考虑是否是因为 Linux 下目录被挤压的问题,

image.png 

如果不是,还有可能是因为 Tomcat 启动出现了问题,这时候可以查看日志,再看配置文件是否编写正确,如图:image.png

将其和目录文件对比,发现少了一个-,注意这里一定要和目录一致,这样才能让 agent 找到架包,才能保证不会出错。

如图:image.pngimage.png

重新执行启动脚本,在日志里进行监控,可以发现,现在的日志变得比较多了。

刷新之前的访问页面,如图:image.png

需要注意的是,如果 Tomcat 还没有启动完毕,页面还是会出现无法访问的情况,等 Tomcat 启动完毕后才能访问,访问接口后返回的是 hello world。

再在 skywalking 页面刷新,如图:image.pngimage.png

此时接口的调用已经可以显示了,还可以看到与它相关的服务,叫 skywalking_tomcat,也就是之前在 agent 里修改的服务名。

如图:image.pngimage.pngimage.png

进入 agent 目录,在 config 里查看,可以看到,这里有之前修改的服务名,现在在访问页面展现,并且它的端点接口提供的是/hello/sayhello,当前实例是 skywalking_tomcat 提供的 pid:10871,进程 IP 地址是192.168.62.141

下面来看它的拓扑图,如图:image.png

当前拓扑图,用户直接调用了 skywalking_tomcat 这个服务,这个服务提供了 springmvc 的端点。

然后在追踪这里,如图:image.png

如上图,这笔调用花费了567毫秒,这个时间是不定的,可能会因为启动时间而变长。

如图:image.png

查看具体的信息,使用 GET 请求调用了 url,然后所有信息都可以得到展示,证明 skywalking 对 Tomcat 已经生效。

以上就是简单的 skywalking 监控 Tomcat 的使用方式。

需要密切关注的还是:在 catalina.sh 文件顶部添加那两句话,即通过 java agent 来启动 skywalking-agent 的架包,这样 skywalking 才能获取到 springmvc 所有的数据,把所有的数据上传到后端服务,来进行统计。

相关文章
|
2月前
|
Shell Linux
Linux shell编程学习笔记30:打造彩色的选项菜单
Linux shell编程学习笔记30:打造彩色的选项菜单
|
20天前
|
并行计算 Ubuntu Linux
Ubuntu学习笔记(三):Linux下操作指令大全
Ubuntu学习笔记,介绍了Linux操作系统中常用的命令和操作,如文件管理、系统信息查看、软件安装等。
38 3
|
2月前
|
Shell Linux
Linux shell编程学习笔记82:w命令——一览无余
Linux shell编程学习笔记82:w命令——一览无余
|
3月前
|
应用服务中间件 Linux 网络安全
【Azure 应用服务】App Service for Linux 环境中为Tomcat页面修改默认的Azure 404页面
【Azure 应用服务】App Service for Linux 环境中为Tomcat页面修改默认的Azure 404页面
|
3月前
|
网络协议 安全 应用服务中间件
在Linux中,Tomcat8005、8009、8080三个端口的含义?
在Linux中,Tomcat8005、8009、8080三个端口的含义?
|
3月前
|
缓存 Java 应用服务中间件
在Linux中,Tomcat和Resin有什么区别,工作中怎么选择?
在Linux中,Tomcat和Resin有什么区别,工作中怎么选择?
|
3月前
|
关系型数据库 Java MySQL
Linux安装JDK1.8 & tomcat & MariaDB(MySQL删减版)
本教程提供了在Linux环境下安装JDK1.8、Tomcat和MariaDB的详细步骤。这三个组件的组合为Java Web开发和部署提供了一个强大的基础。通过遵循这些简单的指导步骤,您可以轻松建立起一个稳定、高效的开发和部署环境。希望这个指导对您的开发工作有所帮助。
190 8
|
3月前
|
前端开发 Java 应用服务中间件
在Linux中,tomcat和nginx的区别是什么?
在Linux中,tomcat和nginx的区别是什么?
|
4月前
|
应用服务中间件 Linux 网络安全
|
3月前
|
存储 运维 Shell
运维.Linux.bash学习笔记.数组及其使用
运维.Linux.bash学习笔记.数组及其使用
32 0