一、Windows下安裝運行
官網下載,下載與elasticSearch同一個版本,zip格式。Logstash占用內存較大,我在使用的時候cpu一般都是沖到90%
1、CMD直接運行
創建一個基本的Logstash管道來測試Logstash設置。
解壓logstash ,並且在bin目錄下運行命令(參考下面命令):加入 -e
標志可以在命令行直接指定配置文件。
logstash -e ""
或者:
logstash -e "input { stdin {} } output { stdout {} }"
注意:雙引號不能改成單引號否則可能會報:ERROR: Unknown command '{'
然后你會發現終端在等待你的輸入。沒問題,敲入 Hello World,回車,Logstash會將時間戳和IP地址信息加入輸出的消息。按下ctrl+C可以從命令行退出Logstash。
2、配置文件運行,並用bat文件
進入bin目錄,新建文件 logstash_default.conf 內容如下:
input {
stdin{}
}
output {
stdout{}
elasticsearch {hosts=>"127.0.0.1:9200"}
}
配置文件中定義了stdout和elasticsearch作為output,這樣的“多重輸出”即保證輸出結果顯示到屏幕上,同時也輸出到elastisearch中。
在bin目錄,新文件文件 run_default.bat 內容如下:
logstash -f logstash_default.conf
啟動 run_default.bat 啟動logstash。 等待cmd中出現:logstash api endpoint {:port=>9600 } 瀏覽器訪問:http://localhost:9600/
在CMD中輸入任何你想輸入的字符串。然后看下es中是否有了數據。
3、使用NSSM將Logstash安裝為Windows服務
- 下載NSSM:http://www.nssm.cc/download
-
將
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
1、輸入:采集各種樣式、大小和來源的數據
數據往往以各種各樣的形式,或分散或集中地存在於很多系統中。Logstash 支持各種輸入選擇 ,可以在同一時間從眾多常用來源捕捉事件。能夠以連續的流式傳輸方式,輕松地從您的日志、指標、Web 應用、數據存儲以及各種 AWS 服務采集數據。
2、過濾器:實時解析和轉換數據
數據從源傳輸到存儲庫的過程中,Logstash 過濾器能夠解析各個事件,識別已命名的字段以構建結構,並將它們轉換成通用格式,以便更輕松、更快速地分析和實現商業價值。
3、輸出:選擇你的存儲,導出你的數據
盡管 Elasticsearch 是我們的首選輸出方向,能夠為我們的搜索和分析帶來無限可能,但它並非唯一選擇。
Logstash 提供眾多輸出選擇,您可以將數據發送到您要指定的地方,並且能夠靈活地解鎖眾多下游用例。
每個階段都由很多的插件配合工作,比如file、elasticsearch、Redis等等。
每個階段也可以指定多種方式,比如輸出既可以輸出到elasticsearch中,也可以指定到標准輸出stdout在控制台打印。
三、命令行中常用的命令
-f:通過這個命令可以指定Logstash的配置文件,根據配置文件配置logstash
-e:后面跟着字符串,該字符串可以被當做logstash的配置(如果是“” 則默認使用stdin作為輸入,stdout作為輸出)
-l:日志輸出的地址(默認就是stdout直接在控制台中輸出)
-t:測試配置文件是否正確,然后退出。
logstash -f stdin.conf -t
四、用Logstash解析日志
在現實世界中,一個Logstash管理會稍微復雜一些:它通常有一個或多個input,filter 和 output 插件。
在這一小節中,創建一個Logstash管道,並且使用Filebeat將Apache Web日志作為input,解析這些日志,然后將解析的數據寫到一個Elasticsearch集群中。你將在配置文件中定義管道,而不是在命令行中定義管道配置。
在開始之前,請先下載示例數據。
1、配置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