gpt4 book ai didi

elasticsearch - Elasticsearch Logstash Filebeat映射

转载 作者:行者123 更新时间:2023-12-02 23:24:11 24 4
gpt4 key购买 nike

我对ELK Stack + Filebeat有问题。

Filebeat正在将类似Apache的日志发送到Logstash,Logstash应该解析这些行。 Elasticsearch应该将拆分数据存储在字段中,以便我可以使用Kibana可视化它们。

问题:
Elasticsearch接收日志,但将它们存储在单个“消息”字段中。

所需解决方案:

输入:

10.0.0.1 some.hostname.at-[27 / Jun / 2017:23:59:59 +0200]

ES:

“ip”:“10.0.0.1”

“主机名”:“some.hostname.at”

“时间戳记”:“27 / Jun / 2017:23:59:59 +0200”

我的logstash配置:

    input {

beats {
port => 5044
}



}

filter {


if [type] == "web-apache" {
grok {
patterns_dir => ["./patterns"]
match => { "message" => "IP: %{IPV4:client_ip}, Hostname: %{HOSTNAME:hostname}, - \[timestamp: %{HTTPDATE:timestamp}\]" }
break_on_match => false
remove_field => [ "message" ]
}

date {
locale => "en"
timezone => "Europe/Vienna"
match => [ "timestamp", "dd/MMM/yyyy:HH:mm:ss Z" ]
}

useragent {
source => "agent"
prefix => "browser_"
}
}

}

output {

stdout {
codec => rubydebug
}

elasticsearch {
hosts => ["localhost:9200"]
index => "test1"
document_type => "accessAPI"
}
}

我的Elasticsearch发现输出:

The "message" field contains my whole log file

我希望周围有任何ELK专家可以为我提供帮助。
先感谢您,
马蒂亚斯

最佳答案

您说的grok过滤器在这里不起作用。

尝试使用:

%{IPV4:client_ip} %{HOSTNAME:hostname} - \[%{HTTPDATE:timestamp}\]

无需在字段名称前单独指定所需的名称(您不是在此处尝试格式化消息,而是提取单独的字段),只需在“:”后的方括号中说明字段名称即可你想要的结果。

另外,使用覆盖功能而不是remove_field来获取消息。
此处的更多信息:
https://www.elastic.co/guide/en/logstash/current/plugins-filters-grok.html#plugins-filters-grok-options

最终看起来将类似于:
filter {
grok {
match => { "message" => "%{IPV4:client_ip} %{HOSTNAME:hostname} - \[%{HTTPDATE:timestamp}\]" }
overwrite => [ "message" ]
}
}

您可以在此处测试grok过滤器:
http://grokconstructor.appspot.com/do/match

关于elasticsearch - Elasticsearch Logstash Filebeat映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45143272/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com