Logstash是一個開源數據收集引擎,具備實時管道功能。Logstash能夠動態地未來自不一樣數據源的數據統一塊兒來,並將數據標準化到你所選擇的目的地。html
集中、轉換和存儲你的數據java
Logstash是一個開源的服務器端數據處理管道,能夠同時從多個數據源獲取數據,並對其進行轉換,而後將其發送到你最喜歡的「存儲」。(固然,咱們最喜歡的是Elasticsearch)ruby
INPUTS (輸入插件): 採集各類格式、大小和來源的數據bash
數據每每以各類各樣的形式,或分散或集中地存在於不少系統中。Logstash 支持各類輸入選擇 ,能夠在同一時間從衆多經常使用來源捕捉事件。可以以連續的流式傳輸方式,輕鬆地從您的日誌、指標、Web 應用、數據存儲以及各類 AWS 服務採集數據。服務器
FILTERS (過濾器插件):實時解析和轉換數據 架構
數據從源傳輸到存儲庫的過程當中,Logstash 過濾器可以解析各個事件,識別已命名的字段以構建結構,並將它們轉換成通用格式,以便更輕鬆、更快速地分析和實現商業價值。elasticsearch
Logstash 可以動態地轉換和解析數據,不受格式或複雜度的影響:ide
咱們豐富的過濾庫給數據過濾提供了無限的可能性。測試
OUTPUTS(輸出插件):選擇你的存儲,導出你的數據ui
儘管 Elasticsearch 是咱們的首選輸出方向,可以爲咱們的搜索和分析帶來無限可能,但它並不是惟一選擇。Logstash 提供衆多輸出選擇,您能夠將數據發送到您要指定的地方,而且可以靈活地解鎖衆多下游用例。
一、安裝JDK
Logstach是基於Java開發是一個Java程序,運行在Jvm中,因此第一步要安裝JDK。
yum install -y java-1.8.0-openjdk-devel
https://www.elastic.co/cn/downloads/logstash,是Logstach的官方站點,若是須要下載最新的版本,進入官網下載便可。能夠下載到本地電腦而後再導入CentOS中,也能夠直接在CentOS中下載。
wget https://artifacts.elastic.co/downloads/logstash/logstash-6.5.4.rpm
二、安裝Logstach
# 執行安裝命令 rpm -ivh logstash-6.5.4.rpm warning: logstash-6.5.4.rpm: Header V4 RSA/SHA512 Signature, key ID d88e42b4: NOKEY Preparing... ########################################### [100%] 1:logstash ########################################### [100%] Using provided startup.options file: /etc/logstash/startup.options Successfully created system startup script for Logstash # 查看下logstash的安裝目錄 rpm -ql logstash # 建立一個軟鏈接,每次執行命令的時候不用在寫安裝路勁(默認安裝在/usr/share下) ln -s /usr/share/logstash/bin/logstash /bin/
好,立刻開始咱們的第一個例子:
首先,讓咱們經過最基本的Logstash管道來測試一下剛纔安裝的Logstash。Logstash管道有兩個必需的元素,輸入和輸出,以及一個可選元素過濾器。輸入插件從數據源那裏消費數據,過濾器插件根據你的指望修改數據,輸出插件將數據寫入目的地。
接下來咱們輸入最基本的管道,例如:
# 執行logstash的命令 logstash -e 'input { stdin { } } output { stdout {} }' # -e是容許命令行指定配置 # 運行成功之後輸入: hello world
而後啓動後,輸入hello world
# 注: # -e 執行操做 # input 標準輸入 # { input } 插件 # output 標準輸出 # { stdout } 插件 # # 經過rubydebug來輸出下更詳細的信息 logstash -e 'input { stdin { } } output { stdout {codec => rubydebug} }' # 執行成功輸入: 愛上一匹野馬,可我家裏沒有草原 # stdout輸出的結果:
# 若是標準輸出還有Elasticsearch中都須要保留應該怎麼玩,看下面 logstash -e 'input { stdin { } } output { elasticsearch { hosts => ["192.168.1.111:9200"] } stdout { codec => rubydebug }}' # 運行成功之後輸入: 愛上一匹野馬,可個人家裏沒有草原 # 返回的結果(標準輸出中的結果):