以在 grok 里预定义好命名正则表达式,Grok 支持把预定义的 grok 表达式 写入到文件中
USERNAME [a-zA-Z0-9._-]+
USER %{USERNAME}
第一行,用普通的正则表达式来定义一个 grok 表达式;第二行,通过打印赋值格式,用前面定义好的 grok 表达式来定义另一个 grok 表达式。
grok 表达式的打印复制格式的完整语法是下面这样的:
%{PATTERN_NAME:capture_name:data_type}
-
http://doc.yonyoucloud.com/doc/logstash-best-practice-cn/filter/grok.html
-
http://grokdebug.herokuapp.com/
常用总结
-
(?<temMsg>(.*)(?=Report)/?)
获取Report之前的字符,作为temMsg字段的值 -
(?<temMsg>(?=Report)(.*)/?)
获取Report之后的字符,作为temMsg字段的值 -
(?<temMsg>(?<=report).*?(?=msg))
截取report和msg之间的值 不包含report和msg本身,作为temMsg字段的值 -
(?<temMsg>(report).*?(?=msg))
截取 包含report但不包含msg -
(?<temMsg>(?<=report).*?(msg))
截取 不包含report但包含msg -
(?<temMsg>(report).*?(msg|request))
输出以report开头,以msg或者以request结尾的所有包含头尾信息 -
(?<temMsg>(report).*?(?=(msg|request)))
输出以report开头,以msg或者以request结尾的不包含头尾信息
自定义索引映射
Graylog本身是使用默认映射包括用于设置timestamp
,message
,full_message
,和source
索引的消息的字段:
$ curl -X GET ‘http://localhost:9200/_template/graylog-internal?pretty’
{
“graylog-internal” : {
“order” : -1,
“index_patterns” : [
“graylog_*”
],
“settings” : {
“index” : {
“analysis” : {
“analyzer” : {
“analyzer_keyword” : {
“filter” : “lowercase”,
“tokenizer” : “keyword”
}
}
}
}
},
“mappings” : {
“message” : {
“_source” : {
“enabled” : true
},
“dynamic_templates” : [