你須要管理的信息一般來自幾個不一樣來源,而且用例能夠爲你的數據要求多個目的地,你的Logstash管道能夠使用多個輸入和輸出插件來處理這些需求。html
在本節中,你將建立一個Logstash管道,該管道接收來自Twitter提要和Filebeat客戶端的輸入,而後將信息發送到一個Elasticsearch集羣,並將信息直接寫入文件。segmentfault
要添加Twitter提要,請使用twitter輸入插件,要配置插件,須要如下信息:服務器
訪問https://dev.twitter.com/apps來創建一個Twitter帳戶,生成你的消費key和secret,以及你的訪問token和secret,若是你不肯定如何生成這些key,請參閱twitter輸入插件的文檔。app
就像前面使用Logstash解析日誌時所作的那樣,建立一個包含配置管道結構的配置文件(稱爲second-pipeline.conf
),若是須要,能夠重用前面建立的文件,但請確保在運行Logstash時傳遞正確的配置文件名。負載均衡
將如下幾行添加到second-pipeline.conf
文件的input
部分,將此處所示的佔位符值替換爲你的值:curl
twitter { consumer_key => "enter_your_consumer_key_here" consumer_secret => "enter_your_secret_here" keywords => ["cloud"] oauth_token => "enter_your_access_token_here" oauth_token_secret => "enter_your_access_token_secret_here" }
正如你在配置Filebeat以將日誌行發送到Logstash時所瞭解的那樣,Filebeat客戶端是一個輕量級的、資源友好的工具,它能夠從服務器上的文件中收集日誌,並將這些日誌轉發到你的Logstash實例進行處理。iphone
安裝Filebeat後,須要對其進行配置,打開位於Filebeat安裝目錄中的filebeat.yml
文件,並使用如下行替換內容,確保paths
指向你的系統日誌:elasticsearch
filebeat.prospectors: - type: log paths: - /var/log/*.log fields: type: syslog output.logstash: hosts: ["localhost:5044"]
paths
=> Filebeat處理的文件的絕對路徑。fields
=> 將一個名爲type
值爲syslog
的字段添加到該事件中。保存你的更改。ide
爲了簡化配置,你不會像在現實場景中那樣指定TLS/SSL
設置。工具
經過在second-pipeline.conf
文件的input
部分添加如下代碼行,將你的Logstash實例配置爲使用Filebeat輸入插件:
beats { port => "5044" }
你能夠配置你的Logstash管道,以便使用file輸出插件將數據直接寫入文件。
經過在second-pipeline.conf
文件的output
部分添加如下行,配置你的Logstash實例以使用文件輸出插件:
file { path => "/path/to/target/file" }
對多個Elasticsearch節點的寫入能夠減輕給定Elasticsearch節點的資源需求,並在特定節點不可用時爲集羣提供多餘的入口點。
若要將你的Logstash實例配置爲寫入多個Elasticsearch節點,請編輯second-pipeline.conf
文件的output
部分以供讀取:
output { elasticsearch { hosts => ["IP Address 1:port1", "IP Address 2:port2", "IP Address 3"] } }
在你的Elasticsearch集羣的hosts
行中使用三個非主節點的IP地址,當hosts
參數列出多個IP地址時,Logstash使用地址列表的負載均衡請求,還請注意,Elasticsearch的默認端口是9200
,能夠在上面的配置中省略。
此時,你的second-pipeline.conf
文件看起來像這樣:
input { twitter { consumer_key => "enter_your_consumer_key_here" consumer_secret => "enter_your_secret_here" keywords => ["cloud"] oauth_token => "enter_your_access_token_here" oauth_token_secret => "enter_your_access_token_secret_here" } beats { port => "5044" } } output { elasticsearch { hosts => ["IP Address 1:port1", "IP Address 2:port2", "IP Address 3"] } file { path => "/path/to/target/file" } }
Logstash使用的數據來自你配置的Twitter提要,接收來自Filebeat的數據,並將此信息索引到Elasticsearch集羣中的三個節點,並將其寫入文件。
在數據源機器上,使用如下命令運行Filebeat:
sudo ./filebeat -e -c filebeat.yml -d "publish"
Filebeat將嘗試在端口5044上鍊接,在Logstash使用激活的Beats插件啓動以前,該端口上不會有任何迴應,所以你看到的任何關於在該端口上鍊接失敗的消息目前都是正常的。
要驗證你的配置,請運行如下命令:
bin/logstash -f second-pipeline.conf --config.test_and_exit
--config.test_and_exit
選項解析配置文件並報告任何錯誤,當配置文件經過配置測試時,使用如下命令啓動Logstash:
bin/logstash -f second-pipeline.conf
使用grep
工具在目標文件中搜索,以驗證信息是否存在:
grep syslog /path/to/target/file
運行一個Elasticsearch查詢,在Elasticsearch集羣中找到相同的信息:
curl -XGET 'localhost:9200/logstash-$DATE/_search?pretty&q=fields.type:syslog'
使用YYYY.MM.DD格式將$DATE替換爲當前日期。
要查看來自Twitter提要的數據,請嘗試如下查詢:
curl -XGET 'http://localhost:9200/logstash-$DATE/_search?pretty&q=client:iphone'
一樣,請記住使用YYYY.MM.DD格式將$DATE替換爲當前日期。