它處理數據有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_splitfield_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}"
}
}