2016-03-10 96 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 
}} 
相關問題