elasticsearch Logstash-仅读取文件中的附加数据
我正在学习如何使用logstash,在使用logstash读取不断更新的文件时遇到了一些问题。这是我的测试:
elasticsearch Logstash-仅读取文件中的附加数据,
elasticsearch,logstash,kibana,elk,kibana-7,
elasticsearch,Logstash,Kibana,Elk,Kibana 7,我正在学习如何使用logstash,在使用logstash读取不断更新的文件时遇到了一些问题。这是我的测试: logstash.conf 输入{ 文件{ path=>[“/usr/share/logs\u data/first\u log\u test.log”] 开始位置=>“开始” } } 滤器{ 格罗克{ match=>[“message”,“(?\d{4}-\d{2}-\d{2})(?\d{2}:\d{2}:\d{2})%{GREEDYDATA}ParaBrutos/configs/
- logstash.conf
输入{
文件{
path=>[“/usr/share/logs\u data/first\u log\u test.log”]
开始位置=>“开始”
}
}
滤器{
格罗克{
match=>[“message”,“(?\d{4}-\d{2}-\d{2})(?\d{2}:\d{2}:\d{2})%{GREEDYDATA}ParaBrutos/configs/pipelines/(?([^/])+/(?([^-])+(?([^-])-(?([^.])+)-(?([^.])+).json]
}
}
输出{
弹性搜索{
主机=>“elasticsearch:9200”
用户=>“弹性”
密码=>“更改我”
ecs_兼容性=>已禁用
索引=>“每秒记录”
}
}
首先,我使用repo的代码,以固定方式安装ELK stack
我以这个测试日志文件为空开始,然后在文本编辑器中添加了几行,一行一行地处理模式,同时看到kibana中的索引模式正在更新。然而,我在这个测试日志中添加的每一个新行并不是单独添加的,我在kibana索引模式中看到了旧条目的点击
会发生什么
- 这可能与在索引模式创建中不选择时间过滤器有关吗
- 或者与
设置?但是什么呢?因为默认情况下,它不应该保存文件的最后读取位置吗相关的东西,因为\u db
- 或与
?尽管如此,通过插件,它应该只在第一次读取文件时生效开始位置相关的内容
我有点迷路了,尝试了很多东西,但仍然不太了解发生了什么。您能帮助我吗?如果您使用的是文本编辑器,那么每次退出时可能都会创建一个新文件 这可能是一个inode重用问题。元问题中有各种问题的链接。特别是见251 当文件可以旋转时,跟踪哪些文件已被读取是一个极其困难的问题。比大多数人最初想象的要困难得多。一个正确的选择是对文件内容进行校验和(尽管这不是万无一失的)。文件输入不能做到这一点,因为它可能会变得非常昂贵。相反,它实现了一种非常便宜的技术,几乎总是正确的(但在少数情况下,它决定它已经读取了一个尚未读取的文件)
在其他情况下,它会通过复制数据(这就是您要点击的内容)而出错。正如我所说,这是一个非常困难的问题。这正是发生的事情!我用
echo
更新了我的文件,解决了这个问题,它成功了。谢谢你,獾!
input {
file {
path => ["/usr/share/logs_data/first_log_test.log"]
start_position => "beginning"
}
}
filter {
grok {
match => ["message", "(?<execution_date>\d{4}-\d{2}-\d{2}) (?<execution_time>\d{2}:\d{2}:\d{2})%{GREEDYDATA}ParaBrutos/configs/pipelines/(?<crawler_category>([^/])+)/(?<crawler_subcategory>([^-])+)-(?<crawler_name>([^.])+).json"]
}
}
output {
elasticsearch {
hosts => "elasticsearch:9200"
user => "elastic"
password => "changeme"
ecs_compatibility => disabled
index => "logs_second"
}
}