2016-03-10 78 views
0

我使用logstash从计算机提取日志并将它们发送到logstash服务器。所以我有:使用logstash发送简单日志

  • 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 “服务器”:

    input { 
    tcp { 
    port => "9900" 
    host => "10.10.10.1" 
    }} 
    
    output { 
    elasticsearch { hosts => ["localhost:9200"] } 
    }} 
    

它实际上“有效”。但要查看服务器端的日志,我必须停止logstash代理(否则,不会发送日志)。为什么会这样?我是新来的ELK,我当然做错了。

+1

你可能会考虑在远程机器上运行的重量更轻的托运人(如filebeat)。您是否检查过两个logstash实例的日志文件以获取更多信息? –

+0

我发现了这个问题的快速修复。谢谢你的回答,我会用另一个托运人,我会检查filebeat。 :) –

回答

0

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 
}} 
相关问题