我使用ELK堆栈解析CSV文件,并在用logstash解析后将它们发送给ElasticSearch。
不幸的是,我有一个问题:
当我将文件发送到我的logstash管道的“输入”的监听目录时,记录加倍,看到三元组,没有我问任何东西......
确实:
这就是我的管道:
input {
file {
path => "/home/XXX/report/*.csv"
start_position => "beginning"
sincedb_path => "/dev/null"
}
}
filter {
csv {
separator => ";"
columns => ["Name", "Status", "Category", "Type", "EndPoint", "Group", "Policy", "Scanned At", "Reported At", "Affected Application"]
}
}
output {
elasticsearch {
hosts => "http://localhost:9200"
index => "malwarebytes-report"
}
stdout {}
}
当我在“/ home / XXX / report /”中发送包含28条记录的第一个文件时,这就是ElasticSearch所说的:
[root @ lrtstfpe1 confd]#curl -XGET 'localhost:9200/_cat/indices?v&pretty'
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
yellow open malwarebytes-report PO4g6rKRTb6yuMDb7i-6sg 5 1 28 0 25.3kb 25.3kb
到目前为止一切顺利,但是当我发送第150个记录的第二个文件时......:
[root @ lrtstfpe1 confd]#curl -XGET 'localhost:9200/_cat/indices?v&pretty'
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
yellow open malwarebytes-report PO4g6rKRTb6yuMDb7i-6sg 5 1 328 0 263.3kb 263.3kb
150首录音加倍并添加到前28 ...
发生了什么事?
有几天我坚持这个问题,我真的需要你......
更新:
You need to look in /etc/logstash/conf.d and see if there are any other config files there
问题是我在这个文件夹中只有一个管道......所以:
我刚刚完全卸载了ELK堆栈(rpm -e elasticsearch kibana logstash filebeat
)以及任何ELK跟踪(rm -rf /var/lib/ELK/ var/log/ELK/ etc/default/ELK /usr/share/ELK
...)所以,没有任何地方。
我只是重新安装一切:
rpm -ivh elasticsearch-6.2.3.rpm
rpm -ivh kibana-6.2.3-x86_64.rpm
rpm -ivh logstash-6.2.3.rpm
启动服务:service ELK restart
然后,在配置方面:
/etc/elasticsearch.yml
完全默认为完全。
/etc/kibana.ym
l完全默认为。
/etc/logstash.yml
完全默认为。
然后,我在/etc/logstash/conf.d/
中放了一个名为“pip.conf”的唯一管道
它的配置:
input {
file {
path => "/home/report/*.csv"
start_position => "beginning"
sincedb_path => "/dev/null"
}
}
filter {
csv {
separator => ";"
columns => ["Name","Status","Category","Type","EndPoint","Group","Policy","Scanned At","Reported At","Affected Application"]
}
}
output {
elasticsearch {
hosts => "http://localhost:9200"
index => "malwarebytes-report"
}
stdout{}
}
最后,我启动了我的管道:
我进入/usr/share/logstash
并执行:
bin/logstash -f /etc/logstash/conf.d/pip.conf
经过几次努力,我的管道正在倾听,现在,我将file1.csv
和我的file2.csv
放入/home/report/
。
file1.csv
包含28条记录,file2.csv
包含150条记录。
但现在,当我查看我的索引时:curl -XGET 'localhost:9200/_cat/indices?v&pretty'
我的索引“malwarebytes-report”包含357条记录......(150x2 + 28x2 ...)
我不明白什么......
答案 0 :(得分:0)
如果您可以使用logstash之外的其他工具来将文件加载到elasticsearch中,则可以使用elasticsearch-loader。
我是moshe/elasticsearch_loader
的作者
我为这个确切的问题写了ESL。
您可以通过pip下载它:
pip install elasticsearch-loader
然后您将可以通过发出以下命令将csv文件加载到elasticsearch中:
elasticsearch_loader --index incidents --type incident csv file1.csv