![](/img/trans.png)
[英]Multiple custom grok patterns not matching, but they successfully match alone?
[英]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.