格式化弹性搜索结果

时间:2018-06-11 20:27:30

标签: elasticsearch logstash elasticsearch-5 elasticsearch-plugin

我正在使用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)。

如何使用“;”拆分此“消息”字符串作为正则表达式,以便我只能得到我需要的数据?

1 个答案:

答案 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/应用非常有用!