繁体   English   中英

使用grok匹配自定义样式的电子邮件地址

[英]Using grok to match custom style email address

我只是为我的Apache日志设置了ELK堆栈。 效果很好。 现在,我想将邮件日志添加到组合中,而使用grok解析日志时遇到了麻烦。

我正在使用此网站进行调试: https : //grokdebug.herokuapp.com/

这是示例邮件日志(sendmail)条目:

Apr 24 19:38:51 ip-10-0-1-204 sendmail[9489]: w3OJco1s009487: to=<username@domain.us>, delay=00:00:01, xdelay=00:00:01, mailer=smtp, pri=120318, relay=webmx.bglen.net. [10.0.3.231], dsn=2.0.0, stat=Sent (Ok: queued as E2DEF60724), w3OJco1s009487: to=<username@domain.us>, delay=00:00:01, xdelay=00:00:01, mailer=smtp, pri=120318, relay=webmx.[redacted].net. [10.0.3.231], dsn=2.0.0, stat=Sent (Ok: queued as E2DEF60724)

从上面的文本中,我想将文本拉到to=<username@domain.us>

到目前为止,我有一个grok模式:

(?<mail_sent_to>[a-zA-Z0-9_.+=:-]+@[0-9A-Za-z][0-9A-Za-z-]{0,62}(?:\.(?:[0-9A-Za-z][0-‌​9A-Za-z-]{0,62}))*)

它给我的结果username@domain.us>很好,但我希望它的前面也有to= 而且我只希望此grok过滤器匹配必须在其前面to=电子邮件地址。

我尝试了这个,但是结果是“没有匹配项”:

(?<mail_sent_to>"to="[a-zA-Z0-9_.+=:-]+@[0-9A-Za-z][0-9A-Za-z-]{0,62}(?:\.(?:[0-9A-Za-z][0-‌​9A-Za-z-]{0,62}))*)

您可以使用

\b(?<mail_sent_to>to=<[a-zA-Z0-9_.+=:-]+@[0-9A-Za-z][0-9A-Za-z-]{0,62}(?:\.[0-9A-Za-z][0-9A-Za-z-]{0,62})*>)

或者,因为[a-zA-Z0-9_]\\w匹配相同的字符:

\b(?<mail_sent_to>to=<[\w.+=:-]+@[0-9A-Za-z][0-9A-Za-z-]{0,62}(?:\.[0-9A-Za-z][0-9A-Za-z-]{0,62})*>)

参见regex演示

细节

  • \\b单词边界
  • (?<mail_sent_to> -“ mail_sent_to”组:
    • to=< -文字字符串to=<
    • [\\w.+=:-]+ -1+个单词, . +=:-字符
    • @ -一个@ char
    • [0-9A-Za-z] -字母数字字符
    • [0-9A-Za-z-]{0,62} -0至62个字母,数字或-
    • (?:\\.[0-9A-Za-z][0-9A-Za-z-]{0,62})* -0个以上的序列
      • \\. -一个点
      • [0-9A-Za-z] -字母数字字符
      • [0-9A-Za-z-]{0,62} -0至62个字母,数字或-
    • > -一个>字符
  • ) -组末尾。

这非常简单,它创建了一个自定义模式来匹配to=<> ,并创建了预定义的EMAILADDRESS来匹配电子邮件地址。

\b(?<mail_sent_to>to=<%{EMAILADDRESS}>)

这将输出,

{
  "mail_sent_to": [
    [
      "to=<username@domain.us>"
    ]
  ],
  "EMAILADDRESS": [
    [
      "username@domain.us"
    ]
  ],
  "EMAILLOCALPART": [
    [
      "username"
    ]
  ],
  "HOSTNAME": [
    [
      "domain.us"
    ]
  ]
}

编辑:

电子邮件的模式是

EMAILLOCALPART [a-zA-Z][a-zA-Z0-9_.+-=:]+
EMAILADDRESS %{EMAILLOCALPART}@%{HOSTNAME}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM