【发布时间】:2015-06-17 13:59:00
【问题描述】:
我正在尝试从 logstash 以特定方式在 kibana 中获取我的日志,但我没有成功。
我会举例说明。然后,如果我的日志文件中有这一行:
2015-06-17 13:08:45 INFO connectionpool Starting new HTTPS connection (1): SSX9FSMULE.algolia.net
我想在 kibana 中有这些字段和值:
DateTime : 2015-06-17 13:08:45
LogType : INFO
ModuleName : connectionpool
Message : connectionpool Starting new HTTPS connection (1): SSX9FSMULE.algolia.net
日期时间字段并不重要,因为默认情况下 ES 包含时间戳
我试试这个代码:
if [type] == "mylog" {
grok {
match => { "message" => "%{MYLOGTIME:DateTime} %{LOGLEVEL:LogType} %{WORD:ModuleName} %{GREEDYDATA:Message}" }
}
}
模式目录中的文件 mylog 包含此行:
MYLOGTIME %{YEAR}-%{MONTHNUM}-%{MONTHDAY} %{TIME}
但它不起作用,我在 kibana 中没有得到上述所需字段之一,只有消息
2015-06-17 13:08:45 INFO connectionpool Starting new HTTPS connection (1): SSX9FSMULE.algolia.net
我试过这个:
if [type] == "autosuggest" {
grok {
match => { "message" => "%{GREEDYDATA:Message}" }
add_field => [ "LogType", "%{LOGLEVEL}" ]
add_field => [ "ModuleNAme", "%{WORD}" ]
}
}
并在 kibana 中得到了这个:
LogType : %{LOGELEVEL}
ModuleName : %{WORD}
Message : 2015-06-17 13:08:45 INFO connectionpool Starting new HTTPS connection (1): SSX9FSMULE.algolia.net
在标准 kibana 消息字段中,我有上面的消息:
2015-06-17 13:08:45 INFO connectionpool Starting new HTTPS connection (1): SSX9FSMULE.algolia.net
虽然我只想将消息的最后一部分(模块名称之后的部分)作为消息。
我在谷歌上搜索了几个小时都没有成功
请有人解释如何使用 grok 获取我想要的消息部分,以及如何实现我在这里尝试做的事情。
谢谢
【问题讨论】:
标签: logging elasticsearch logstash kibana