在LogStash中使用GROK将非结构化数据从日志转换为ELK堆栈的提示和技巧

使用GROK构建非结构化数据



如果您使用的是Elastic Stack(ELK),并且有兴趣将自定义Logstash日志映射到Elasticsearch,那么此文章适合您。





ELK Stack是三个开源项目的缩写:Elasticsearch,Logstash和Kibana。它们共同构成了一个日志管理平台。



  • Elasticsearch是搜索和分析引擎。
  • Logstash是服务器端数据处理管道,它同时从多个源中获取数据,进行转换,然后将其发送到像Elasticsearch这样的缓存中。
  • Kibana允许用户使用Elasticsearch中的图表将数据可视化。


Beats后来问世,是一个轻量级的数据托运人。Beats的引入将Elk Stack转变为Elastic Stack,但这不是重点。



本文重点介绍Grok,这是Logstash中的一项功能,可以在将日志发送到存储之前对其进行转换。就我们的目的而言,我将仅讨论处理从Logstash到Elasticsearch的数据。





Grok- Logstash, - . (regex) .



, Grok , .



Grok





Grok, Logstash Elasticsearch Kibana, .



, . , .





localhost GET /v2/applink/5c2f4bb3e9fda1234edc64d 400 46ms 5bc6e716b5d6cb35fc9687c0


, , , .



, , , API. .





  • ​ localhost == environment
  • ​ GET == method
  • ​ /v2/applink/5c2f4bb3e9fda1234edc64d == url
  • ​ 400 == response_status
  • ​ 46ms == response_time
  • ​ 5bc6e716b5d6cb35fc9687c0 == user_id


, . – . .



Grok



Grok



Logstash 100 . , , apache, linux, haproxy, aws .



, , ? Grok.



Grok



, Grok. Grok Debugger Grok Patterns.



, Grok : %{SYNTAX:SEMANTIC}



, , Discover Grok. , , Grok, , .





, Grok, , Github Elastic.





, - , .





Grok https://grokdebug.herokuapp.com/



:



localhost GET /v2/applink/5c2f4bb3e9fda1234edc64d 400 46ms 5bc6e716b5d6cb35fc9687c0


Pattern:



%{WORD:environment} %{WORD:method} %{URIPATH:url} %{NUMBER:response_status} %{WORD:response_time} %{USERNAME:user_id}




{
  "environment": [
    [
      "localhost"
    ]
  ],
  "method": [
    [
      "GET"
    ]
  ],
  "url": [
    [
      "/v2/applink/5c2f4bb3e9fda1234edc64d"
    ]
  ],
  "response_status": [
    [
      "400"
    ]
  ],
  "BASE10NUM": [
    [
      "400"
    ]
  ],
  "response_time": [
    [
      "46ms"
    ]
  ],
  "user_id": [
    [
      "5bc6e716b5d6cb35fc9687c0"
    ]
  ]
}


Grok , — Logstash.



Logstash.conf



, ELK, Logstash:



sudo vi /etc/logstash/conf.d/logstash.conf


.



input { 
  file {
    path => "/your_logs/*.log"
  }
}
filter{
  grok {
    match => { "message" => "%{WORD:environment} %{WORD:method} %{URIPATH:url} %{NUMBER:response_status} %{WORD:response_time} %{USERNAME:user_id}"}
  }
}
output {
  elasticsearch {
    hosts => [ "localhost:9200" ]
  }
}


Logstash , , .



sudo service logstash restart
sudo service logstash status


, , , Elasticsearch Logstash Kibana!





Grok !





, , Grok Elasticsearch. . , , , url-.



尝试一下Grok表情!如果您有另一种方法,或者上面的示例有任何问题,请在下面写一条评论让我知道。



感谢您的阅读-请在Medium上关注我,以获得更多有趣的软件工程文章!



资源资源

https://www.elastic.co/blog/do-you-grok-grok

https://github.com/elastic/logstash/blob/v1.4.2/patterns/grok-patterns

https://grokdebug.herokuapp.com/



PS 链接到源



Elasticsearch电报频道




All Articles