分佈式日誌收集之Logstash 筆記(一)



(一)logstash是什麼? 

logstash是一種分佈式日誌收集框架,開發語言是JRuby,固然是爲了與Java平臺對接,不過與Ruby語法兼容良好,很是簡潔強大,常常與ElasticSearch,Kibana配置,組成著名的ELK技術棧,很是適合用來作日誌數據的分析。

固然它能夠單獨出現,做爲日誌收集軟件,你能夠收集日誌到多種存儲系統或臨時中轉系統,如MySQL,redis,kakfa,HDFS, lucene,solr等並不必定是ElasticSearch。

官網下載地址:https://www.elastic.co/downloads/logstash 
官網文檔地址:https://www.elastic.co/guide/en/logstash/current/index.html 


(二)logstash的的安裝 

logstash的目前的最新版本是2.0.0,建議安裝在Linux平臺,雖然它也支持Windows平臺,但可能會有問題 
下載: 
wget https://download.elastic.co/logstash/logstash/logstash-2.0.0.tar.gz 

解壓: 
tar -zxvf logstash-2.0.0.tar.gz 

進入根目錄,執行bin/logstash -h 可查看幫助文檔 
參數介紹以下: 

使用命令模板: 
    /bin/logstash 命令參數  選項 

選項: 
    -f , 指定加載一個後綴爲.conf文件的logstash配置模塊 
    -e  , 命令行指定參數 , 一般用來調試 
    -w,  指定logstash的工做線程數 
    -l,   指定logstash的默認日誌寫入到一個文件中,若是不指定,默認是標準輸出 
    --quiet                       靜默模式,僅僅只有error級別信息輸出 
    --verbose                   info級別的log輸出 
    --debug                      debug 級別的log輸出. 
    -V, --version                查看logstash的版本 
    -p, --pluginpath PATH         加載自定義的logstash插件 
    -t, --configtest               檢查logstash配置是否有效 
    -h, --help                    打印幫助 


(三)logstash的數據處理模型 

(1)input  =》 output 
(2)input =》 filter =》 output 

其中input經常使用的輸入源有:file,syslog,redis,log4j,apache log或nginx log,或者其餘一些自定義的log格式,業務log,搜索log,訂單log等等

filter經常使用的選項有: 
grok:支持正則提取任何非結構化數據或結構化數據,其中logstash內置120多種正則,好比常見的時間,ip,用戶名,等等也支持自定義正則解析 
mutate:修改字段名,刪除,更新等操做,轉換字段類型等 
drop: 刪除某些時間,如debug 
clone:拷貝一份事件副本,用來添加或刪除字段 
geoip : 經過ip獲取地理位置信息,在作kibana區域統計圖很是炫 
ruby: 支持原生的ruby代碼,操做事件,實現強大的其餘功能 

output經常使用的輸出有: 
elasticsearch 比較經常使用 
file:寫入文件 
redis:寫入隊列 
hdfs:寫入HDFS,需插件支持 
zabbix: zabbix監控 
mongodb:寫入mongodb庫 

除此以外還有個編碼插件codecs也比較經常使用 
經常使用來處理json數據或者多行數據源 



(四)logstash一些簡單例子 

(1)使用命令行命令調試: 
 
[java]   view plain copy
  1. [search@h3 logstash-2.0.0]$ bin/logstash -e "input{stdin{}} output{stdout{}}"  
  2. Default settings used: Filter workers: 1  
  3. Logstash startup completed  
  4. hello  
  5. 2015-11-04T15:16:02.747Z h3 hello  
  6. test  
  7. 2015-11-04T15:16:08.108Z h3 test  

(2)命令行參數僅適合簡單的配置,若是配置比較多,咱們通常會寫入一個以.conf結尾的配置文件裏,而後使用 
-f命令加載,將(1)中的配置,寫入hello.conf 

而後使用bin/logstash -f hello.conf  執行加載,便可達到一樣效果 


(3)經常使用的數據模塊 
[java]   view plain copy
  1. <pre name="code" class="java">input{     
  2. .....     
  3. }     
  4. filter{     
  5. ......     
  6. }     
  7. output{     
  8. .......     
  9. }    
 
(4)監聽文件,支持通配符,寫入文件 
 
[java]   view plain copy
  1. input{     
  2.     
  3. file => ["/var/log/file","/var/solr/log/*"]     
  4.     
  5. }     
  6.     
  7. output{     
  8.     
  9. file => "/sys/collect/log"    
  10.     
  11.     
  12. }    
(5)logstash插件支持數據類型 
[java]   view plain copy
  1. 數組: path=> ["a","b"]     
  2. 布爾:ssl_enable => true    
  3. 字節:     
  4. my_bytes =>"1113"#1113 bytes      
  5. my_bytes =>"10MiB"#10485760 bytes     
  6. my_bytes =>"100kib"#102400 bytes     
  7. my_bytes =>"180 mb"#180000000 bytes     
  8. 編碼:     
  9. codec => "json"    
  10. 哈希表:     
  11. match => {     
  12.     
  13. "k1" => "v1"    
  14. "k2" => "v2"    
  15. "k3" => "v3"    
  16.     
  17. }     
  18. 數值:     
  19. port=> 33    
  20. 密碼:     
  21. pwd=> "password"    
  22. 路徑:     
  23. path=> "/tmp/logstash"    
  24. 字符串:     
  25. name => "hello wordld"    
  26. 註釋:     
  27. input{     
  28. # 號開頭,與shell腳本註釋同樣     
  29. }    
相關文章
相關標籤/搜索