开发者学堂课程【分布式链路追踪 Skywalking:Agent 的使用-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 项目,同时拿出已经打包好的文件,下面来查看它的源码。
如图:
在它的 pom 文件中指定依赖,依赖的版本号统一为 spring 5.0.5,除了 spring 的基础依赖外,还引入了 spring MVC ,这些都是常规的依赖。
如图:
在web.xml 里进行配置,配置 spring MVC 的 DispatcherServlet 来接收请求,指定文件为 applicationContext-web,这个配置文件实际上是在 resource 下面。
如图,请求需要 .do 进行结尾:
这样请求才会被 springmvc 的servlet-name 进行响应。
然后,再来查看 applicationContext,如图:
如上图是有一个扫描包,这个扫描包在 com.itcast.controller 下。如图:
这个包其实还有一个 hello controller 类,这个类声明为 controller,对外提供接口,接口的地址是/hello,/sayhello,这里可以稍微备注一下接口的访问地址。
如图:
如上图要记得加上 .do,这样就能访问到这个接口,这个接口会返回到前端 hello word 这样一个字符串,这也是最简单的一个 springmvc 项目,可以做一个测试看它是如何在 Tomcat 中被 Skywalking 进行检验的。
2.如何使用 Skywalking
首先,需要把 Tomcat 和 war 包上传到 Linux 下,如图:
上传 Tomcat,切换到 usr/local/ Skywalking ,查看 Tomcat 是否成功上传,上传后对它进行解压。
解压后,通过上传工具,在 webapp 下把 war 包上传,如图:
由于这个 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 ,然后在它的顶部添加这两句话,然后保存。
保存还需要把端口号进行修改,原来的端口是在8080上,现在需要把它改为8081。
如图:
查找到 server.xml 配置文件,把它原来的8080端口号改为8081,然后进行保存,退出。
4.启动与访问
进入 bin 目录下,输入./startup.sh
提示Tomcat started.表示启动成功。
之后就可以直接通过浏览器进行访问,可以看到,skywalking 的页面目前是没有如何信息的,在浏览器打开192.168.62.141.8081加上项目名,这里把项目名改为 skywalking_springmvc ,然后加上接口名,即/hello,/sayhello.do。
进行访问,页面无法打开就需要考虑是否是因为 Linux 下目录被挤压的问题,
如果不是,还有可能是因为 Tomcat 启动出现了问题,这时候可以查看日志,再看配置文件是否编写正确,如图:
将其和目录文件对比,发现少了一个-,注意这里一定要和目录一致,这样才能让 agent 找到架包,才能保证不会出错。
如图:
重新执行启动脚本,在日志里进行监控,可以发现,现在的日志变得比较多了。
刷新之前的访问页面,如图:
需要注意的是,如果 Tomcat 还没有启动完毕,页面还是会出现无法访问的情况,等 Tomcat 启动完毕后才能访问,访问接口后返回的是 hello world。
再在 skywalking 页面刷新,如图:
此时接口的调用已经可以显示了,还可以看到与它相关的服务,叫 skywalking_tomcat,也就是之前在 agent 里修改的服务名。
如图:
进入 agent 目录,在 config 里查看,可以看到,这里有之前修改的服务名,现在在访问页面展现,并且它的端点接口提供的是/hello/sayhello,当前实例是 skywalking_tomcat 提供的 pid:10871,进程 IP 地址是192.168.62.141
下面来看它的拓扑图,如图:
当前拓扑图,用户直接调用了 skywalking_tomcat 这个服务,这个服务提供了 springmvc 的端点。
然后在追踪这里,如图:
如上图,这笔调用花费了567毫秒,这个时间是不定的,可能会因为启动时间而变长。
如图:
查看具体的信息,使用 GET 请求调用了 url,然后所有信息都可以得到展示,证明 skywalking 对 Tomcat 已经生效。
以上就是简单的 skywalking 监控 Tomcat 的使用方式。
需要密切关注的还是:在 catalina.sh 文件顶部添加那两句话,即通过 java agent 来启动 skywalking-agent 的架包,这样 skywalking 才能获取到 springmvc 所有的数据,把所有的数据上传到后端服务,来进行统计。