grok提取字段问题

默认分类 | 作者 ferdina | 发布于2018年12月05日 | 阅读数:287

在生产过程中碰到个问题
版本es 651 filebeat 641
修改nginx模板 提取nginx 日志中的cookie
 "grok": {
      "field": "message",
      "patterns":[
        "\"?%{IPV4:nginx.access.remote_ip_list} - %{DATA:nginx.access.user_name} \\[%{HTTPDATE:nginx.access.time}\\] \"%{GREEDYDATA:nginx.access.info}\" %{NUMBER:nginx.access.response_code} %{NUMBER:nginx.access.body_sent.bytes} \"%{DATA:nginx.access.referrer}\" \"%{DATA:nginx.access.agent}\" \"%{DATA:nginx.access.cookie}\" \"%{DATA:nginx.access.request_body}\""
 
首先提取了 cookie字段,没问题
 "grok": {
      "field": "nginx.access.cookie",
      "patterns": [
          "email=%{EMAILADDRESS:nginx.access.client}",
          ""
      ],
      "ignore_missing": true
然后从 cookie字段中提取email地址
但是发现当cookie字段格式如下时
email=cloris@ucan.com; token=ecc47f17abc040928c3c89c1f31a73a4; lang=en-US
是没问题的,但是如果email字段在中间 就提取不到信息
如:

token=ecc47f17abc040928c3c89c1f31a73a4; email=cloris@ucan.com; lang=en-US
求指教

已邀请:

rochy - rochy_he@tw

赞同来自:

添加两个 gork filter 即可;
第一个 gork 里面不去匹配 email
第二个只匹配 email

要回复问题请先登录注册