logstash的input的幾種配置


讀取文件

Logstash 使用一個名叫 FileWatch 的 Ruby Gem 庫來監聽文件變化。這個庫支持 glob 展開文件路徑,而且會記錄一個叫 .sincedb 的數據庫文件來跟蹤被監聽的日志文件的當前讀取位置。所以,不要擔心 logstash 會漏過你的數據。

sincedb 文件中記錄了每個被監聽的文件的 inode, major number, minor number 和 pos。

input
    file {
        path => ["/var/log/*.log", "/var/log/message"]
        type => "system"
        start_position => "beginning"
    }
}

有一些比較有用的配置項,可以用來指定 FileWatch 庫的行為:

  • discover_interval

logstash 每隔多久去檢查一次被監聽的 path 下是否有新文件。默認值是 15 秒。

  • exclude

不想被監聽的文件可以排除出去,這里跟 path 一樣支持 glob 展開。

  • sincedb_path

如果你不想用默認的 $HOME/.sincedb(Windows 平台上在 C:\Windows\System32\config\systemprofile\.sincedb),可以通過這個配置定義 sincedb 文件到其他位置。

  • sincedb_write_interval

logstash 每隔多久寫一次 sincedb 文件,默認是 15 秒。

  • stat_interval

logstash 每隔多久檢查一次被監聽文件狀態(是否有更新),默認是 1 秒。

  • start_position

logstash 從什么位置開始讀取文件數據,默認是結束位置,也就是說 logstash 進程會以類似 tail -F 的形式運行。如果你是要導入原有數據,把這個設定改成 "beginning",logstash 進程就從頭開始讀取,有點類似 cat,但是讀到最后一行不會終止,而是繼續變成 tail -F

讀取網絡TCP

Logstash有自己的 TCP/UDP 插件,在臨時任務的時候,也算能用,尤其是測試環境。

小貼士:雖然 LogStash::Inputs::TCP 用 Ruby 的 SocketOpenSSL 庫實現了高級的 SSL 功能,但 Logstash 本身只能在 SizedQueue 中緩存 20 個事件。這就是我們建議在生產環境中換用其他消息隊列的原因。

input {
    tcp {
        port => 8888
        mode => "server"
        ssl_enable => false
    }
}

目前來看,LogStash::Inputs::TCP 最常見的用法就是配合 nc 命令導入舊數據。在啟動 logstash 進程后,在另一個終端運行如下命令即可導入數據:

# nc 127.0.0.1 8888 < olddata

這種做法比用 LogStash::Inputs::File 好,因為當 nc 命令結束,我們就知道數據導入完畢了。而用 input/file 方式,logstash 進程還會一直等待新數據輸入被監聽的文件,不能直接看出是否任務完成了。

讀取redis數據

input {
    redis {
        batch_count => 1 #EVAL命令返回的事件數目
        data_type => "list" #logstash redis插件工作方式
        key => "logstash-test-list" #監聽的鍵值
        host => "127.0.0.1" #redis地址
        port => 6379 #redis端口號
        password => "123qwe" #如果有安全認證,此項為密碼
        db => 0 #redis數據庫的編號
        threads => 1 #啟用線程數量
    }
}
output {
 stdout{}
}

 data_type logstash工作的類型

logstash中的redis插件,指定了三種方式來讀取redis隊列中的信息。

  • list=>BLPOP
  • channel=>SUBSCRIBE
  • pattern_channel=>PSUBSCRIBE

其中list,相當於隊列;channel相當於發布訂閱的某個特定的頻道;pattern_channel相當於發布訂閱某組頻道。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM