【发布时间】:2018-11-21 19:36:06
【问题描述】:
我是 elasticsearch 社区的新手,希望您能帮助我解决我正在努力解决的问题。 我的目标是使用 Filebeat 将大量日志文件发送到 Elasticsearch。 为此,我需要使用带有 Grok 模式处理器的摄取节点来解析数据。如果不这样做,我的所有日志都不能被利用,因为每个日志都属于同一个“消息”字段。不幸的是,我对 grok 正则表达式有一些问题,我找不到问题,因为这是我第一次使用它。 我的日志是这样的:
2016-09-01T10:58:41+02:00 INFO (6): 165.225.76.76 entreprise1 email1@gmail.com POST /application/controller/action Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko {"getid":"1"} 86rkt2dqsdze5if1bqldfl1
2016-09-01T10:58:41+02:00 INFO (6): 165.225.76.76 entreprise2 email2@gmail.com POST /application/controller/action Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko {"getid":"2"} 86rkt2rgdgdfgdfgeqldfl1
2016-09-01T10:58:41+02:00 INFO (6): 165.225.76.76 entreprise3 email3@gmail.com POST /application/controller/action Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko {"getid":"2"}
所以我们有标签作为分隔符,这些字段: 日期、IP、公司名称、电子邮件、方法(post、get)、url、浏览器、json_request、optional_code
我的摄取管道 json 看起来像这样:
PUT _ingest/pipeline/elastic_log_index
{
"description" : "Convert logs txt files",
"processors" : [
{
"grok": {
"field": "message",
"patterns": ["%{TIMESTAMP_ISO8601:timestamp} %{IP:ip} %{WORD:company}% {EMAILADDRESS:email} %{URIPROTO:method} %{URIPATH:page} %{WORD:browser} %{WORD:code}"]
}
},
{
"date" : {
"field" : "timestamp",
"formats" : ["yyyy-MM-ddTHH:mm:ss INFO(6):"]
}
}
],
"on_failure" : [
{
"set" : {
"field" : "error",
"value" : " - Error processing message - "
}
}
]
}
这不起作用。
1) 如何转义字符?例如时间戳末尾的“INFO(6):”
2) 我可以在我的 gork 模式中使用字段之间的空格吗?文件日志中的分隔符是制表符。
3) 行尾的代码并不总是出现在日志中,这可能是个问题吗?
4) 你知道为什么这个配置在我的 elasticsearch 下的日志文件中无论如何都不能解析吗?
非常感谢您的帮助,请原谅我的英语水平我是法语。
【问题讨论】:
标签: elasticsearch logstash logstash-grok filebeat