我正在使用logstash从计算机中提取日志并将其发送到logstash服务器。所以我有:
配置文件是:
对于logstash代理:
input {
file {
path => "D:/mylogs.logs"
start_position => "beginning"
}}
output {
tcp {
port => "9900" # logstash port
host => "10.10.10.1" # remote logstash address
}}
对于logstash“server”:
input {
tcp {
port => "9900"
host => "10.10.10.1"
}}
output {
elasticsearch { hosts => ["localhost:9200"] }
}}
它实际上“有效”。但是要查看服务器端的日志,我必须停止logstash代理(否则,似乎不会发送日志)。为什么会这样?我是ELK的新手,我当然做错了。
答案 0 :(得分:1)
logstash的tcp插件不会在每个事件(字符串)之间附加换行符,因此不会发送tcp段(直到我关闭代理程序)。
在代理上,在tcp插件配置中,我添加以下属性:
input {
file {
path => "D:/mylogs.logs"
start_position => "beginning"
}}
output {
tcp {
codec => json_lines # Fix the new line problem
port => "9900" # logstash port
host => "10.10.10.1" # remote logstash address
}}