Logstash日誌插件開發總結

Logstash插件開發介紹
本次文檔一共分爲3部分,分別爲下面3個部分,並且會附上不同的參考文檔 - Logstash輸入插件介紹 - Filter插件開發詳解 - 開發過程遇到一些問題總結 ##logstash介紹 >Logstash 是一款強大的數據處理工具,它可以實現數據傳輸,格式處理,格式化輸出,還有強大的插件功能,常用於日誌處理。其工作流程如下:

Logstash工作流程

它處理數據有3個階段

  • Input
  • Filter
  • Output
  • input 數據輸入端,可以接收來自任何地方的源數據

  • Filter 數據中轉層,主要進行格式處理,數據類型轉換、數據過濾、字段添加,修改等,常用的過濾器如下

  • output 是logstash工作的最後一個階段,負責將數據輸出到指定位置,兼容大多數應用

安裝下載參考文檔:http://blog.csdn.net/u010246789/article/details/52086799

注意:在window中,用bin/logstash.agent -f logstash 命令來啓動logstash

Logstash插件介紹

###FileInput插件介紹
FileInput插件是經常用到的輸入插件,主要從文本中提取數據,然後經過一系列的Filter插件過濾和處理後,把數據再傳遞到Output插件,然後對數據進行輸出,這主要介紹FilterInput插件的配置參數,可以參照官網。

配置參數 示例 詳解
path path => ["/var/log/nginx/access.log"],path => “/var/log/nginx/*.log” 文件源,可以檢測若干文件,String或者數組類型
codec codec=>plain{charset=>“UTF-8”} codec插件,默認是plain,可以設置編碼格式
discover_interval discover_interval=>20 檢查一次被監聽的path下是否有新文件,默認值是15秒
exclude exclude=>“Message.log”,exclude=>[1.log,*.txt] 排除不需要監測的文件,string或者數組類型
sincedb_path sincedb_path=>"/home/hadoop/1.txt" 記錄處理文件的位置,默認爲$HOME/.sincedb,如果設置爲:/dev/null,則代表忽略檢測位置
stat_interval stat_interval=>10 隔多久檢查一次被監聽文件狀態,默認1秒
start_position start_position=>“beginning”,start_position=>“end” logstash從什麼位置開始讀取文件數據,配置爲[beginning,end]中的一個,默認是結束位置
tags tags=>“logstash” 標記,一個字段
close_order close_order=>3600 文件輸入會關閉上一次讀取指定時間間隔的文件。 這取決於文件是否被拖尾或讀取,具有不同的含義。 如果拖尾,並且輸入數據中存在大的時間間隔,則可以關閉文件(允許打開其他文件),但在檢測到新數據時將排隊等待重新打開。 如果讀取,文件將在從最後一個字節讀取後的closed_older秒後關閉。 默認值爲1小時
delimiter delimiter=>"\n" 讀取事件的分割,默認是’\n’,也就是以一行爲一個事件
sincedb_write_interval sincedb_write_interval=>10 多久寫一次讀取位置的文件,就是是sincedb_path,默認15秒

這個是FileInput插件讀取的詳細參數

下面來介紹幾個常用到的Filter插件
###KV插件

KV插件設置一定的格式,來讀取字段中的鍵值對

其中有兩個比較重要的參數,如下:

- field_split - value_split

field_split爲兩個鍵值對間的分隔符,而value_split則是兩個key,value之間的分隔符

>若要切割的字段如下: >message="messagid=123&name=logstash" >kv的配置如下: >kv{ source=>"message" field_split =>"&" value_split =>"=" } >則message會把切割成 messageid="123" name="logstash"

###multiline插件
mutile插件的主要作用是根據正則表達式,把多條事件合併或者切割成一條,詳細瞭解請點擊:mutiline插件詳解:http://www.cnblogs.com/liuning8023/archive/2016/06/01/5549366.html
###mutate插件
mutate插件可以把一些字符串替換成別的字符串,通過gsub來實現。或者通過split來切割不同的字符串

mutate {
gsub=>[“message”, “\n”, “$”]
split=>[“message”,“keyword”]
}

這樣配置,message會把message字段中的\n替換成$,並且根據keyword把messageqi切割字符串,通過[message][0],[message][1]來獲取字段。
###Output插件WebHDFS介紹
webhdfs插件主要是把日誌上傳到HDFS文件系統中,其格式爲:
webhdfs{
host => “127.0.0.1”
port => 50070
user => “hadoop”
path => “/logstash/data”
codec => plain
{
charset=>“UTF-8”
format=>"%{message}"
}
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章