官术网_书友最值得收藏!

1.4 Logstash概覽

Logstash可以看成是數(shù)據(jù)傳輸?shù)墓艿溃梢詮亩鄠€(gè)數(shù)據(jù)源提取數(shù)據(jù),然后再清洗過(guò)濾并發(fā)送到指定的目標(biāo)數(shù)據(jù)源。目標(biāo)數(shù)據(jù)源也可以是多個(gè),而且只要修改Logstash管道配置就可以輕松擴(kuò)展數(shù)據(jù)的源頭和目標(biāo)。這在實(shí)際應(yīng)用中非常有價(jià)值,尤其是在提取或發(fā)送的數(shù)據(jù)源發(fā)生變更時(shí)更為明顯。比如原來(lái)只將數(shù)據(jù)提取到Elasticsearch中做檢索,但現(xiàn)在需要將它們同時(shí)傳給Spark做實(shí)時(shí)分析。如果事先沒(méi)有使用Logstash就必須設(shè)計(jì)新代碼向Spark發(fā)送數(shù)據(jù),而如果預(yù)先使用了Logstash則只需要在管道配置中添加新的輸出配置。這極大增強(qiáng)了數(shù)據(jù)傳輸?shù)撵`活性。

1.4.1 安裝Logstash

Logstash是基于Java語(yǔ)言開(kāi)發(fā)的,所以安裝Logstash之前需要先安裝JDK 。Logstash 7目前只支持Java 8或Java 11,所以安裝前要檢查安裝JDK的版本是否正確。在Linux上安裝Logstash時(shí),最好將JDK安裝路徑設(shè)置到JAVA_HOME環(huán)境變量中。Logstash提供了DEB、RPM安裝包,還提供了tar.gz和zip壓縮包,也可以直接通過(guò)Docker啟動(dòng)Logstash。安裝過(guò)程比較簡(jiǎn)單,直接解壓縮文件是最簡(jiǎn)單的辦法,這里不再贅述。

1.4.2 啟動(dòng)Logstash

Logstash的啟動(dòng)命令位于安裝路徑的bin目錄中,如果使用DEB或RPM安裝則位于/usr/share/logstash/bin目錄中。直接運(yùn)行l(wèi)ogstash會(huì)報(bào)錯(cuò),需要按如下方式提供參數(shù):

示例1-5 啟動(dòng)Logstash

啟動(dòng)時(shí)應(yīng)注意兩點(diǎn):一是在Windows下要使用logstash.bat;二是-e參數(shù)后要使用雙引號(hào),否則啟動(dòng)會(huì)出錯(cuò)。如果在命令行啟動(dòng)日志中看到“Successfully started Logstash API endpoint {:port=>9600}”,就證明啟動(dòng)成功。在上面的命令行中,-e代表輸入配置字符串,定義了一個(gè)標(biāo)準(zhǔn)輸入插件(即stdin)和一個(gè)標(biāo)準(zhǔn)輸出插件(即stdout),意思就是從命令行提取輸入,并在命令行直接將提取的數(shù)據(jù)輸出。如果想要更換輸入或輸出,只要將input或output中的插件名稱(chēng)更改即可,這充分體現(xiàn)了Logstash管道配置的靈活性。按示例1-5啟動(dòng)Logstash,命令行將會(huì)等待輸入,鍵入“Hello, World!”后會(huì)在命令行返回結(jié)果如下:

示例1-6 stdout輸出

在默認(rèn)情況下,stdout輸出插件的編解碼器為rubydebug,所以輸出內(nèi)容中包含了版本、時(shí)間等信息,其中message屬性包含的就是在命令行輸入的內(nèi)容。試著將輸出插件的編碼器更換為plain或line,則輸入的結(jié)果將會(huì)發(fā)生變化:

示例1-7 更換編解碼器

如果想要終止Logstash,只要在命令行中輸入“Ctrl+C”即可。

1.4.3 連接Elasticsearch

Logstash基于插件開(kāi)發(fā)和應(yīng)用,包括輸入、過(guò)濾器和輸出三大類(lèi)插件。輸入插件指定了數(shù)據(jù)來(lái)源,過(guò)濾器插件則對(duì)數(shù)據(jù)做過(guò)濾清洗,而輸出插件則指定了數(shù)據(jù)將被傳輸?shù)侥睦铩T谑纠?-5中啟動(dòng)Logstash時(shí),是通過(guò)命令行并使用-e參數(shù)傳入了配置字符串,指定了標(biāo)準(zhǔn)輸入stdin插件和標(biāo)準(zhǔn)輸出stdout插件。但在實(shí)際應(yīng)用中,通常都是使用配置文件指定插件。配置文件的語(yǔ)法形式與命令行相同,要使用的插件是通過(guò)插件名稱(chēng)來(lái)指定。例如,想要向Elasticsearch中發(fā)送數(shù)據(jù),則應(yīng)該使用名稱(chēng)為elasticsearch的輸出插件。在Logstash安裝路徑下的config目錄中(使用DEB或RPM安裝時(shí)目錄為/etc/logstash),有一個(gè)名為logstash-sample.conf的文件,提供了配置插件的參考。這個(gè)文件配置的輸入插件為beats,輸出插件為elasticsearch。復(fù)制這個(gè)文件并重命名為std_es.conf(也可以直接創(chuàng)建空文件),下面通過(guò)修改這個(gè)文件配置一個(gè)從命令行提取輸入,并傳輸?shù)紼lasticsearch的Logstash實(shí)例。按如下內(nèi)容修改std_es.conf文件的輸入輸出插件:

示例1-8 使用文件配置管道

在上面的配置中,elasticsearch輸出插件中的hosts參數(shù)指定了Elasticsearch地址和端口,index參數(shù)則指定了存儲(chǔ)的索引。Elasticsearch索引不需要預(yù)先創(chuàng)建,但要保證它啟動(dòng)的地址和端口與配置文件中的一致。按如下方式啟動(dòng)Elasticsearch:

示例1-9 使用-f設(shè)置管道配置

其中,-f參數(shù)后面指定了配置文件的路徑。啟動(dòng)后如果沒(méi)有異常,可在命令行窗口中輸入“Hello,World!”等任意字符串,Logstash將把輸入內(nèi)容提取到指定的Elasticsearch服務(wù)中。通過(guò)Kibana開(kāi)發(fā)工具輸入GET _cat/indices,可以看到stdin這個(gè)索引已經(jīng)創(chuàng)建出來(lái)了。輸入GET /stdin/_search,則返回結(jié)果為

示例1-10 查看Logstash索引數(shù)據(jù)

通過(guò)示例1-10可以看到,Elasticsearch為輸入創(chuàng)建了一個(gè)stdin索引,在命令行輸入的“Hello,World!”已經(jīng)被索引,在返回結(jié)果的_source字段上可以看到文檔內(nèi)容。有關(guān)Logstash的具體內(nèi)容,將在本書(shū)第12~14章中介紹。

主站蜘蛛池模板: 河南省| 阳曲县| 长沙县| 江门市| 云霄县| 巩留县| 临沭县| 壶关县| 独山县| 崇明县| 滨州市| 米泉市| 上高县| 长治县| 莒南县| 于田县| 鹤山市| 夏河县| 长春市| 景泰县| 嘉义市| 敦化市| 雅江县| 津南区| 涞源县| 黑河市| 新绛县| 沙湾县| 新源县| 沛县| 东乡族自治县| 方正县| 盐津县| 吉隆县| 正定县| 沙湾县| 金川县| 敦煌市| 华容县| 禹州市| 盈江县|