使用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上关注我,以获得更多有趣的软件工程文章!
PS 链接到源
Elasticsearch电报频道