官網下載,下載與elasticSearch同一個版本,zip格式。Logstash佔用內存較大,我在使用的時候cpu通常都是衝到90%html
建立一個基本的Logstash管道來測試Logstash設置。api
解壓logstash ,而且在bin目錄下運行命令(參考下面命令):加入 -e
標誌能夠在命令行直接指定配置文件。瀏覽器
logstash -e "" ruby
或者:服務器
logstash -e "input { stdin {} } output { stdout {} }"
注意:雙引號不能改爲單引號不然可能會報:ERROR: Unknown command '{'elasticsearch
而後你會發現終端在等待你的輸入。沒問題,敲入 Hello World,回車,Logstash會將時間戳和IP地址信息加入輸出的消息。按下ctrl+C能夠從命令行退出Logstash。工具
進入bin目錄,新建文件 logstash_default.conf 內容以下:post
input {
stdin{}
}
output {
stdout{}
elasticsearch {hosts=>"127.0.0.1:9200"}
}
配置文件中定義了stdout和elasticsearch做爲output,這樣的「多重輸出」即保證輸出結果顯示到屏幕上,同時也輸出到elastisearch中。測試
在bin目錄,新文件文件 run_default.bat 內容以下:url
logstash -f logstash_default.conf
啓動 run_default.bat 啓動logstash。 等待cmd中出現:logstash api endpoint {:port=>9600 } 瀏覽器訪問:http://localhost:9600/
在CMD中輸入任何你想輸入的字符串。而後看下es中是否有了數據。
將NSSM
解壓,eg:E盤,進入到E:\nssm-2.24\win64 ,執行cmd
nssm install logstash,【nssm install <服務名> 例如:nssm install Elasticsearch(自定義服務名)】
彈出以下界面
Path
: 填寫啓動文件路徑(${LOGSTASH_HOME}\bin\xxx.bat
)Startup directory
: 填寫啓動文件目錄(${LOGSTASH_HOME}\bin
)Detail
: 填寫服務名稱Dependencies
: 填寫此服務啓動須要依賴哪一個服務(通常配置爲要先啓動elasticsearch
,再啓動logstash
)
在logstash中,包括了三個階段:輸入input --> 處理filter(不是必須的) --> 輸出output
一、輸入:採集各類樣式、大小和來源的數據
數據每每以各類各樣的形式,或分散或集中地存在於不少系統中。Logstash 支持各類輸入選擇 ,能夠在同一時間從衆多經常使用來源捕捉事件。可以以連續的流式傳輸方式,輕鬆地從您的日誌、指標、Web 應用、數據存儲以及各類 AWS 服務採集數據。
二、過濾器:實時解析和轉換數據
數據從源傳輸到存儲庫的過程當中,Logstash 過濾器可以解析各個事件,識別已命名的字段以構建結構,並將它們轉換成通用格式,以便更輕鬆、更快速地分析和實現商業價值。
三、輸出:選擇你的存儲,導出你的數據
儘管 Elasticsearch 是咱們的首選輸出方向,可以爲咱們的搜索和分析帶來無限可能,但它並不是惟一選擇。
Logstash 提供衆多輸出選擇,您能夠將數據發送到您要指定的地方,而且可以靈活地解鎖衆多下游用例。
每一個階段都由不少的插件配合工做,好比file、elasticsearch、Redis等等。
每一個階段也能夠指定多種方式,好比輸出既能夠輸出到elasticsearch中,也能夠指定到標準輸出stdout在控制檯打印。
-f:經過這個命令能夠指定Logstash的配置文件,根據配置文件配置logstash
-e:後面跟着字符串,該字符串能夠被當作logstash的配置(若是是「」 則默認使用stdin做爲輸入,stdout做爲輸出)
-l:日誌輸出的地址(默認就是stdout直接在控制檯中輸出)
-t:測試配置文件是否正確,而後退出。
logstash -f stdin.conf -t
在現實世界中,一個Logstash管理會稍微複雜一些:它一般有一個或多個input,filter 和 output 插件。
在這一小節中,建立一個Logstash管道,而且使用Filebeat將Apache Web日誌做爲input,解析這些日誌,而後將解析的數據寫到一個Elasticsearch集羣中。你將在配置文件中定義管道,而不是在命令行中定義管道配置。
在開始以前,請先下載示例數據。
一、配置Filebeat來發送日誌行到Logstash
在你建立Logstash管道以前,你須要先配置Filebeat來發送日誌行到Logstash。Filebeat客戶端是一個輕量級的、資源友好的工具,它從服務器上的文件中收集日誌,並將這些日誌轉發到你的Logstash實例以進行處理。Filebeat設計就是爲了可靠性和低延遲。Filebeat在主機上佔用的資源不多,並且Beats input插件將對Logstash實例的資源需求降到最低。
(畫外音:注意,在一個典型的用例中,Filebeat和Logstash實例是分開的,它們分別運行在不一樣的機器上。在本教程中,Logstash和Filebeat在同一臺機器上運行。)
第1步:配置filebeat.yml
filebeat.inputs:
- type: log
paths:
- /usr/local/programs/logstash/logstash-tutorial.log
output.logstash:
hosts: ["localhost:5044"]
第2步:在logstash安裝目錄下新建一個文件first-pipeline.conf
(畫外音:剛纔說過了一般Logstash管理有三部分(輸入、過濾器、輸出),這裏input下面beats { port => "5044" }的意思是用Beats輸入插件,而stdout { codec => rubydebug }的意思是輸出到控制檯)
第3步:檢查配置並啓動Logstash
logstash -f first-pipeline.conf --config.test_and_exit
(畫外音:--config.test_and_exit選項的意思是解析配置文件並報告任何錯誤)
logstash -f first-pipeline.conf --config.reload.automatic
(畫外音:--config.reload.automatic選項的意思是啓用自動配置加載,以致於每次你修改完配置文件之後無需中止而後重啓Logstash)
第4步:啓動filebeat
filebeat -e -c filebeat.yml -d "publish"
若是一切正常,你將會在Logstash控制檯下看到相似這樣的輸出:
更多參考:Logstash