1.事件定义
如图所示,进入PUMA的管理后台,进行事件添加:
(1).事件名称:事件的名称 ,例如 :登录事件
(2)描述:日志生成的主要依据(具体参考:2 事件描述定义规则)
(3)应用:绑定对应的产品,例如:统一后台管理
(4)接口:事件关联的接口 例如:/pack/login/usernameLogin (会去收集这个接口的访问)
<注>.一个接口最好只与一个事件绑定,一个事件可以绑定多个接口,但推荐只绑定一个接口
2.事件描述定义规则
例:
用户登录事件: 账号:${REQ_P:username} 密码:${REQ_G:password} 请求头:${HEAD:~} 响应:${RESP:~} token:${RESP:data->accessToken} 访问用户:${TOKEN:~}
定义一个事件描述,格式化的目标为${}中的内容,所以必须严格按照${}的格式,如果格式错误,那么将不会获取到正确的格式化内容。
符号解释:
$: 格式化起始符
{}:格式化包括符
: : key-value分隔符
-> : 获取子元素
枚举解释:目前支持的参数来源,REQ_G,REQ_P,RESP,HEAD,TOKEN
HEAD: 请求头
REQ_G: GET请求
REQ_P:POST请求
RESP:参数返回
TOKEN:token信息
参数解释:
REQ_G:password 从GET请求参数中获取password参数
REQ_P:username 从POST请求参数中获取username参数
HEAD:~ 从HEAD中获取所有参数
RESP:~ 从响应中获取所有参数
RESP:data->accessToken 从响应中获取data中的accessToken
TOKEN:~ 从请求头中获取token信息并转换为username
<注意>,TOKEN 尽量跟~ ,因为跟其它的也没用。
开启默认拦截器
<注>:如果需要自定义事件拦截规则,可以继承TagFilter 并重写
protected abstract byte[] handle(CustomHttpServletResponseWrapper customHttpServletResponseWrapper, CustomHttpServletRequestWrapper customHttpServletRequestWrapper, HttpServletResponse response);
即可。
Skywalking 图解