我的logstash导入了几个CSV文件,配置如下:
input {
file {
path => [
"C:\Data\Archive_ATS_L1\2016-10-08-00-00_to_2016-10-09-00-00\S2KHistorian\Historian\S2KEventMsg_Table.csv",
"C:\Data\Archive_ATS_L1\2016-10-09-00-00_to_2016-10-10-00-00\S2KHistorian\Historian\S2KEventMsg_Table.csv",
"C:\Data\Archive_ATS_L1\2016-10-10-00-00_to_2016-10-11-00-00\S2KHistorian\Historian\S2KEventMsg_Table.csv",
"C:\Data\Archive_ATS_L1\2016-10-11-00-00_to_2016-10-12-00-00\S2KHistorian\Historian\S2KEventMsg_Table.csv",
"C:\Data\Archive_ATS_L1\2016-10-12-00-00_to_2016-10-13-00-00\S2KHistorian\Historian\S2KEventMsg_Table.csv",
"C:\Data\Archive_ATS_L1\2016-10-13-00-00_to_2016-10-14-00-00\S2KHistorian\Historian\S2KEventMsg_Table.csv",
"C:\Data\Archive_ATS_L1\2016-10-14-00-00_to_2016-10-15-00-00\S2KHistorian\Historian\S2KEventMsg_Table.csv"
]
start_position => "beginning"
}
}
filter {
csv {
separator => ","
columns => ["MessageCode","SourceGuid","DateTimeGenerated","Code1","Code2","Code3","Code4","LanguageCode", "AlarmSeverity", "Message", "Guid1", "Guid2", "Guid3", "Guid4", "MessageOrigin", "RequestId", "Bool1", "Bool2", "Bool3", "Bool4", "Bool5", "Bool6", "Bool7", "Bool8", "Code5", "Code6", "Bool9", "Bool10", "Bool11", "Code7"]
}
}
output {
elasticsearch {
action => "index"
hosts => "localhost"
index => "S2K"
workers => 1
}
stdout {}
}我使用以下命令行启动logstash:
logstash.bat –f ..\conf\logstash.conf --verbose通常我会在控制台中看到导入到Elasticsearch中的数据。但这一次我得到的只是一行代码,上面写着"Pipeline main started“,而且一直都是这样。
如何从logstash检查数据是否已导入?我尝试使用Elasticsearch,方法是运行: curl http://localhost:9200/_aliases
这通常会给出索引列表。但是我在这个配置中拥有的索引(称为S2K)没有列出。
我是ELK的新手,那么我如何检查logstash是否在做它的工作呢?请注意,我使用的是Windows 7。
发布于 2021-05-03 23:54:54
要调试logstash,您需要做两件事:在config中添加stdout,并以适当的方式运行logstash。
1步:在logstash conf文件中添加此配置(例如: /etc/logstash/conf.d/config.conf)
output {
stdout {
codec => rubydebug {
metadata => true # Here, we will print metadata in console
}
}
}2步:运行logstash查看命令输出
sudo /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/config.conf你会得到类似这样的结果:
{
"log" => {
"file" => {
"path" => "***\\spring.log"
}
},
"appName" => "my-service",
"@metadata" => {
"ip_address" => "***",
"type" => "_doc",
"beat" => "filebeat",
"version" => "7.12.0"
},
"log_level" => "INFO",
"serverName" => "***",
"pid" => "6236",
"thread" => "main",
"message" => "***",
"serviceName" => "***",
"tags" => [
[0] "beats_input_codec_plain_applied"
],
"input" => {
"type" => "log"
},
"@timestamp" => 2021-01-03T10:22:07.644Z,
"@version" => "1",
"class" => "***"
}最后,在调试之后,您可以像sudo systemctl start logstash一样运行它
希望这对你有帮助,这种方法帮我节省了时间
发布于 2016-10-15 23:30:24
Stdout Ruby Debug是你的朋友。
这会将所有内容输出到屏幕,因此您需要将屏幕输出推送到一个文件中(底部的示例代码)
https://www.elastic.co/guide/en/logstash/current/plugins-outputs-stdout.html
输出部分中的.conf文件中包含什么内容
output { stdout { codec => rubydebug } }这是如何运行conf并将屏幕输出推送到另一个文件以进行调试的示例。
logstash -r -f yourconfig.conf > debugfile.out只需将yourconfig.conf和debugfile.out更改为您想要的任何名称,并且请记住在完成调试后从您的conf文件中删除rubydebug编解码器!
希望这能有所帮助
发布于 2016-10-17 22:43:59
您可以使用行编解码器来更改行的读取方式的字符集(缺省为UTF-8),而不必更改文件本身
https://stackoverflow.com/questions/40048005
复制相似问题