(一)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)使用命令行命令調試:
html
[search@h3 logstash-2.0.0]$ bin/logstash -e "input{stdin{}} output{stdout{}}" Default settings used: Filter workers: 1 Logstash startup completed hello 2015-11-04T15:16:02.747Z h3 hello test 2015-11-04T15:16:08.108Z h3 test
(2)命令行參數僅適合簡單的配置,若是配置比較多,咱們通常會寫入一個以.conf結尾的配置文件裏,而後使用
-f命令加載,將(1)中的配置,寫入hello.conf
而後使用bin/logstash -f hello.conf 執行加載,便可達到一樣效果
(3)經常使用的數據模塊
java
input{ ..... } filter{ ...... } output{ ....... }
(4)監聽文件,支持通配符,寫入文件 nginx
input{ file => ["/var/log/file","/var/solr/log/*"] } output{ file => "/sys/collect/log" }
(5)logstash插件支持數據類型
redis
數組: path=> ["a","b"] 布爾:ssl_enable => true 字節: my_bytes =>"1113"#1113 bytes my_bytes =>"10MiB"#10485760 bytes my_bytes =>"100kib"#102400 bytes my_bytes =>"180 mb"#180000000 bytes 編碼: codec => "json" 哈希表: match => { "k1" => "v1" "k2" => "v2" "k3" => "v3" } 數值: port=> 33 密碼: pwd=> "password" 路徑: path=> "/tmp/logstash" 字符串: name => "hello wordld" 註釋: input{ # 號開頭,與shell腳本註釋同樣 }
最後歡迎你們掃碼關注微信公衆號:我是攻城師(woshigcs),咱們一塊兒學習,進步和交流!(woshigcs)
本公衆號的內容是有關搜索和大數據技術和互聯網等方面內容的分享,也是一個舒適的技術互動交流的小家園,有什麼問題隨時均可以留言,歡迎你們來訪!
mongodb