Logstash是一款開源的數據收集引擎,具備實時管道處理能力。簡單來說,logstash作為數據源與數據存儲分析工具之間的橋梁,結合 ElasticSearch以及Kibana,能夠極大方便數據的處理與分析。通過200多個插件,logstash可以接受幾乎各種各樣的數據。包括日志、網絡請求、關系型數據庫、傳感器或物聯網等等。
安裝
之前我有一篇文章ElasticSearch + Logstash + Kibana 搭建筆記記錄了ELK環境的搭建過程,只是簡單介紹了一種安裝方式,本文記錄更多的細節。
logstash 要求Java8的支持。Java9暫時不支持,本文使用的logstash版本為5.5.1。
在Linux環境中,我們可以通過包管理進行安裝,例如Unbuntu中的apt、以及CentOS中的yum。也可以從這里下載對應環境的二進制版本。
體驗Pipeline
Logstatsh最基本的Pipeline模式如下圖所示,其需要兩個必需參數input、output,以及一個可選參數filter。
cd logstash-5.5.1
bin/logstash -e 'input { stdin { } } output { stdout {} }'
[2017-08-09T15:40:03,303][INFO ][logstash.pipeline ] Pipeline main started
hello world
2017-08-09T07:40:46.397Z iZ627x15h6pZ hello world
-e
參數允許我們在命令行中直接輸入配置,而不同通過-f
參數指定配置文件。看到Pipeline main started表示logstash已經啟動成功,在命令行輸入一些文字后,logstash會加上日期和主機名(IP)輸出到終端。這就是Logstash最基本的工作模式,接受輸入,然后將信息加工后放入到輸出。
處理日志
Logstash收購了Filebeat加入到自己的生態系統中用來處理日志,Filebeat是一個輕量化的日志收集工具,還可以感知后臺logstash的繁忙程度來決定日志發送的速度。
首先下載 Filebeat,解壓后就可以使用。找到filebeat.yml修改如下:
filebeat.prospectors:
- input_type: log
paths:
- /path/to/file/logstash-tutorial.log
output.logstash:
hosts: ["localhost:5043"]
配置完成后等logstash啟動后再啟動Filebeat。
sudo ./filebeat -e -c filebeat.yml -d "publish"
接下來配置logstash,按照如下配置編寫一個 filebeat.conf 文件
input {
beats {
port => "5043"
}
}
output {
stdout { codec => rubydebug }
}
配置文件可以用下面的命令驗證是否有問題
bin/logstash -f filebeat.conf --config.test_and_exit
如果驗證沒有問題,就可以用這個配置文件啟動 logstash 了。
bin/logstash -f filebeat.conf
之后再啟動Filebeat,就可以在Filebeat終端窗口看到日志信息的輸出,同時在logstash這邊也能看到有日志輸出。這就說明此時logstash已經能夠正常接收beats送來的文件了。
參考資料:
1、Logstash Reference
2、Filebeat
文章列表