开发者学堂课程【分布式链路追踪 Skywalking:过滤指定的端点】学习笔记,与课程紧密连接,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/743/detail/13163
过滤指定的端点
内容介绍:
一、 Swagger 插件的学习
二、 Swagger 插件的使用
这节课即将学习实用插件,这将有助于过滤指定的端点。在开发的过程中,有一些接口并不需要去进行监控。例如swagger 提供了一篇文档的自动生成功能。
在阅读一篇文档时,会不可避免的去调用一些接口,这些接口本质上是不需要 skywalking 进行监控的。所以它提供了一个过滤指定端点插件来进行一个过滤。
一、Swagger 插件的学习
首先,打开 plugins 这个项目,里面会有一个 FilterControll 节能控制器,其会提供两个接口,一个叫做 include, 代表这个接口可以被追踪,另外一个叫做 exclude, 这个接口不可以被追踪。
而这两个接口在实线上是一样的,我们可以通过对 swagger 插件的学习来对 exclude 这个端点来进行屏蔽,让 skywalking 不会去监控这个接口。
二、 Swagger 插件的使用
1.拷贝
找到 optional-plugins 这个目录项有一个可选插件叫做apm-trace-ignore-plugin, 它会把对应的 trace 给忽略掉。
然后把apm-trace-ignore-plugin-6.4.0.jar 这个插件拷到 plugins 这个目录中,之前讲过在可选目录中这个插件本质上是不会被加载到插件列表的,所以需要手动进行拷贝。
首先打开讯接,找到插件目录进入到 skywalking 目录中,其次进入到 apm-bin 当中,然后进入到可选择插件列表找到
apm-trace-ignore-plugin-6.4.0.jar,再把它拷贝到 plugins 插件目录中,切换出来进入到plugins目录,看这个插件 apm-trace 是否存在。通过寻找就发现 apm-trace 插件已经拷贝到了 plugins 目录当中。当 skywalking 启动时该插件就会生效。
2.启动
找到 skywalking 的 bin目录,将 skywalking 重启一下,这里没有提供一个重启脚本,需要把这个进程给它杀掉,然后直接搜索 oap就可以发现oap 的进程很长,需要把进程为1478的给杀它掉: kill-9 1478, 这时oap 就可以成功杀掉。同时再去执行 oapService.sh 这个脚本,把它启动一下,它会提示 oap 启动成功。
在 oap 启动之后,再确认一下当前的 plugins 这个项目是不是已经启动。因为上节课中已经把它启动了。当前是启动的状态,一会儿可以直接访问其接口。
3.接口监控
如何让 exclude 接口被排除到 skywalking 的监控列表之外,该插件的使用方式很简单,就是在我们的配置项中去添加一个配置叫做 trace. ignore_path ,它是一个路径,可以用一些通倍符来支持表达式来进行一个展示,它支持的是 Ant、 path 表达式:
/path/*, /path/**, /path/?
//“*”代表0或任意多的一个字符
//“**”代表0或任意多的目录,也就是所有的这个目录下都会被排除掉。
//“?”代表一个单字符
对 exclude 结构来说不用很麻烦,因为只需要排除这一个接口,可直接通过 /exclude 来指定就可以。
启动方式与之前是一样的,由于现在应用已经启动,所以需要把它重新启动一下:kill-91751,找到刚才启动的命令,然后还需要再添加一个参数-Dskywalking.trace.ignore_path=/exclude 为避免出错需拷贝命令。
“skywalking.” 是一个标准的前缀, “trace.ignore_path”是一个 trace 的忽略目录它指向 exclude 这个接口,然后执行一下。
因为目录不对,所以需要进行切换,再执行,等待应用的启动。启动之后需注意要测试 include 能够被监控到 exclude 不能够被监控到,所以先通过 include 来调用一次,注意一次即可。
看到 include 调用成功之后,可多次调用 exclude,因为可以认为exclude 已经被排除了,所以多调用几次,也不会被监控掉。
再进到仪表盘来刷新一下当前页面,可以看到 include 已经被监控到了,而 exclude 却没有出现在追踪中。
4.排除
打开追踪进行搜索、刷新,发现最近的接口只有 include 被调用,exclude 是不会出现的。
多刷新几次exclude, 再点击搜索依旧不会出现,所以这就证明对于排除trace已经成功了,比如说 exclude 这个接口尽管调用成功,但是不会 skywalking 监控到的。
以上就是过滤指定端点这个插件的一个用法,这个插件可以用来过滤掉我们在项目中使用到的一些不想被监控到的端点,把它排除掉,所以 skywalking 就不会对这些端点进监控。