我正在使用Elasticsearch检索一些日志:
的http:/本地主机:9200 /收集/ _search Q =类型: “日志”
它给我带来了一些这样的点击:
{
"_index": "collection",
"_type": "doc",
"_id": "UL878GMBYKUUOvfyQJWl",
"_score": 6.487114,
"_source": {
"@version": "1",
"type": "log",
"message": "64.242.88.10;[07/Mar/2004:16:11:58 -0800];"GET /twiki/bin/view/TWiki/WikiSyntax HTTP/1.1\"; 200 7352\r",
"@timestamp": "2018-06-11T19:03:23.163Z",
"host": "logstash",
"path": "/opt/access_log.log"
}
}
每次点击都有一条“消息”,就像来自CSV“access_log.log”的一行。
但是每个有用的信息都在“消息”里面只有一个大字符串。所以我需要以某种方式提取以识别服务器IP(例如64.242.88.10)。
如何使用“;”拆分此“消息”字符串作为正则表达式,以便我只能得到我需要的数据?
答案 0 :(得分:1)
您可以使用grok filter plugin。
Grok是将非结构化日志数据解析为某种东西的好方法 结构化和可查询。
此工具非常适合syslog日志,apache和其他webserver日志, mysql日志,通常是一般写入的任何日志格式 对于人类而非计算机消费。
默认情况下,Logstash附带约120种模式。你可以找到它们 这里: https://github.com/logstash-plugins/logstash-patterns-core/tree/master/patterns。 您可以轻松添加自己的。 (参见patterns_dir设置)
如果您需要帮助构建匹配日志的模式,您会发现 http://grokdebug.herokuapp.com和。{ http://grokconstructor.appspot.com/应用非常有用!