【基本介紹】
官方文檔:https://www.elastic.co/guide/en/logstash/current/first-event.html
【0.1】概念介紹
Logstash是一個具有實時管道的開源數據收集引擎。可以動態地統一不同來源的數據,並將數據歸到不同目的地。也是一個管理事件和日志工具。你可以用它來收集日志,分析它們,並將它們儲存起來以供以后使用。
Logstash 通常都是和 Kibana 以及 Elasticsearch 一起使用,且版本要一樣。
【0.2】save your event
Logstash管道具有兩個必需元素input
和output
,以及一個可選元素filter
。輸入插件使用來自源的數據,過濾器插件根據您的指定修改數據,輸出插件將數據寫入目標。
【1】Centos7.X 下載
【1.1】下載
要和 es/kibana 下載同一個版本,最佳;
https://www.elastic.co/cn/downloads/logstash
【1.2】前置環境配置(JVM)
Logstash需要以下版本之一:
- Java 8
- Java 11
- Java 14
使用 官方的Oracle發行版或開源發行版,例如 OpenJDK。
如果要使用捆綁版本以外的JDK,請使用JAVA_HOME環境變量。如果您將JAVA_HOME環境變量設置為使用自定義JDK,則即使升級后,Logstash仍將繼續使用您指定的JDK版本。
安裝包里有自帶捆綁JDK;
注意,如果操作系統並環境變量中沒有配置 JAVA_HOME,則使用其自帶的捆綁JDK;
【2】安裝
【2.1】解壓、移動位置、授權
tar -zxvf logstash-7.11.1-linux-x86_64.tar.gz mv logstash-7.11.1 /usr/local/logstash groupadd elk useradd elk -g elk chown -R elk:elk /usr/local/logstash
【2.2】快速啟動的方法
#啟動 基本的 intput output #stdin stdout 標准輸入、標准輸出插件 /usr/local/logstash/bin/logstash -e 'input{ stdin{} } output{ stdout{} }' # codec插件,指定輸出格式為json /usr/local/logstash/bin/logstash -e 'input{ stdin{} } output{ stdout{ codec => json } }' # 日志內容寫入elasticsearch /usr/local/logstash/bin/logstash -e 'input{ stdin{} } output{ elasticsearch{hosts => ["192.168.175.129:9200"]} }' #日志內容寫入elasticsearch,同時標准輸出 #注意elasticsearch插件的語法格式:hosts 對應數組 /usr/local/logstash/bin/logstash -e 'input{ stdin{} } output{ elasticsearch{hosts => ["192.168.175.129:9200"]} stdout{} }'
【3】啟動演示
【3.1】標准輸入、輸出啟動演示
(1)啟動
su -l elk -c "/usr/local/logstash/bin/logstash -e 'input{ stdin{} } output{ stdout{} }'"
機器性能太差啟動花了好幾分鍾,我還以為我出問題了呢,詳細啟動信息如下圖:
(2)輸入,輸出,核驗
在默認情況下,stdout輸出插件的編碼解釋器為 rubydebug,所以輸出內容中包含了時間、版本等額外信息;其中 message 就是我們輸入的信息了;
(3)停止,我們沒有后台運行,直接 ctrl c 即可
【3.2】更換編解器啟動
在默認情況下,stdout輸出插件的編碼解釋器為 rubydebug,所以輸出內容中包含了時間、版本等額外信息;其中 message 就是我們輸入的信息了;
換一些編碼解碼器試試:
(1)JSON
/usr/local/logstash/bin/logstash -e 'input{ stdin{} } output{ stdout{ codec => json } }'
(2)plain
/usr/local/logstash/bin/logstash -e 'input{ stdin{} } output{ stdout{ codec => plain } }'
【3.3】使用配置文件啟動,連接 ES
在我們上面幾種啟動方法中,都是直接使用命令加 -e 參數傳輸配置字符串,指定了標准輸入 stdin 和 標准輸出 stdout 插件
(1)修改配置文件
logstash有兩種類型的文職文件,一種是 .yml,一種是.conf;
我們這次用 .conf
vim /usr/local/logstash/config/logstash-sample.conf
input { stdin { } } output { elasticsearch { host = > ["http://192.168.175.129:9200"] index = > "stdin" } }
里面有個默認簡單案例配置在里面,我們注釋掉就好了;然后把我們上面的代碼粘貼進來
(2)以配置文件啟動
記得把配置文件修改成utf8格式不然十有八九就報錯
/usr/local/logstash/bin/logstash -f /usr/local/logstash/config/logstash-sample.conf
【錯誤】
(1) Failed to execute action {:action=>LogStash::PipelineAction::Create/pipeline_id:main
解決:把.conf 文件轉成utf8格式
(2)org.jruby.exceptions.SystemExit: (SystemExit) exit
org.jruby.exceptions.SystemExit: (SystemExit) exit at org.jruby.RubyKernel.exit(org/jruby/RubyKernel.java:747) ~[jruby-complete-9.2.13.0.jar:?] at org.jruby.RubyKernel.exit(org/jruby/RubyKernel.java:710) ~[jruby-complete-9.2.13.0.jar:?]