logstash是怎么工作的?-創(chuàng)新互聯(lián)

Logstash是一個(gè)開源的、服務(wù)端的數(shù)據(jù)處理pipeline(管道),它可以接收多個(gè)源的數(shù)據(jù)、然后對(duì)它們進(jìn)行轉(zhuǎn)換、最終將它們發(fā)送到指定類型的目的地。Logstash是通過插件機(jī)制實(shí)現(xiàn)各種功能的,讀者可以去官方下載各種功能的插件,也可以自行編寫插件。

專注于為中小企業(yè)提供成都網(wǎng)站制作、網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)淮安區(qū)免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了千余家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

Logstash實(shí)現(xiàn)的功能主要分為接收數(shù)據(jù)、解析過濾并轉(zhuǎn)換數(shù)據(jù)、輸出數(shù)據(jù)三個(gè)部分,對(duì)應(yīng)的插件依次是input插件、filter插件、output插件,其中,filter插件是可選的,其它兩個(gè)是必須插件。也就是說在一個(gè)完整的Logstash配置文件中,必須有input插件和output插件。

常用的input插件

-file:讀取一個(gè)文件,這個(gè)讀取功能有點(diǎn)類似于linux下面的tail命令,一行一行的實(shí)時(shí)讀取。
-syslog: 監(jiān)聽系統(tǒng)514端口的syslog messages,并使用RFC3164格式進(jìn)行解析。
-redis: Logstash可以從redis服務(wù)器讀取數(shù)據(jù),此時(shí)redis類似于一個(gè)消息緩存組件。
-kafka:Logstash也可以從kafka集群中讀取數(shù)據(jù),kafka加Logstash的架構(gòu)一般用在數(shù)據(jù)量較大的業(yè)務(wù)場景,kafka可用作數(shù)據(jù)的緩沖和存儲(chǔ)。
-filebeat:filebeat是一個(gè)文本日志收集器,性能穩(wěn)定,并且占用系統(tǒng)資源很少,Logstash可以接收filebeat發(fā)送過來的數(shù)據(jù)。

常見的filter插件

filter插件主要用于數(shù)據(jù)的過濾、解析和格式化、也就是將非結(jié)構(gòu)化的數(shù)據(jù)解析成結(jié)構(gòu)化的、可查詢的標(biāo)準(zhǔn)化數(shù)據(jù)。常見的filter插件有如下幾個(gè):
-grok:grok是logstash最重要的插件,可解析并結(jié)構(gòu)化任意數(shù)據(jù),支持正則表達(dá)式,并提供了很多內(nèi)置的規(guī)則和模板可供使用,
-mutate:此插件提供了豐富的基礎(chǔ)類型數(shù)據(jù)處理能力,包括類型轉(zhuǎn)換,字符串處理和字段處理。
-date:此插件可以用來轉(zhuǎn)換你的日志記錄中的時(shí)間字符串。
-GeoIP:此插件可以根據(jù)IP地址提供對(duì)用的地域信息,包括國別,省市,經(jīng)緯度等,對(duì)于可視化地圖和區(qū)域統(tǒng)計(jì)非常有用。

常用的output:

-elasticsearch:發(fā)送數(shù)據(jù)到elasticsearch-file:發(fā)送數(shù)據(jù)到文件中-redis:發(fā)送數(shù)據(jù)到redis中,從這里可以看出redis插件既可以用在input插件中,也可以用在output插件中。-kafka:發(fā)送數(shù)據(jù)到kafka中,與redis插件類似,此插件也可以用在logstash的輸入和輸出插件中。

如果使用rpm包安裝軟件,那么logstash的配置文件是/etc/logstah目錄下。其中,jvm.options是設(shè)置JVM內(nèi)存資源的配置文件,logstash.yml是logstash全局屬性配置文件,一般無需修改,此外還有一個(gè)pipelines.yml文件,這個(gè)文件在logstash啟動(dòng)的時(shí)候進(jìn)程也會(huì)去讀取,這個(gè)文件的內(nèi)容實(shí)際上指向的是當(dāng)前目錄下的conf.d這個(gè)子目錄里面的配置文件,conf.d目錄下的文件要以.conf結(jié)尾,里面配置了input插件、filter插件、output插件信息。

我們先來認(rèn)識(shí)一下logstash是如何實(shí)現(xiàn)輸入輸出的,這里我們不添加filter插件。

(使用rpm包安裝的話,logstash可執(zhí)行文件在/usr/share/logstash/bin/目錄下。)

[root@:172.31.22.29 /etc/logstash/conf.d]#/usr/share/logstash/bin/logstash -e ""Sending Logstash logs to /var/log/logstash which is now configured via log4j2.properties`date` this timestamp is OK                    #輸入此信息。然后按enter鍵{       "message" => "·`date` this timestamp is OK",
          "host" => "ip-172-31-22-29.ec2.internal",
    "@timestamp" => 2019-01-22T02:59:01.422Z,
          "type" => "stdin",
      "@version" => "1"
}

有一點(diǎn)大家要記?。?/p>

/usr/share/logstash/bin/logstash -e
/usr/share/logstash/bin/logstash -e ""

我們這里就是進(jìn)入了一個(gè)簡單的交互式命令界面,當(dāng)我輸入信息時(shí),logstash服務(wù)會(huì)反饋給我信息。我們來解釋一下命令含義:

-e代表執(zhí)行的意思。
input即輸入的意思,input里面即是輸入的方式,這里選擇了stdin,就是標(biāo)準(zhǔn)輸入(從終端輸入)。
output即輸出的意思,output里面是輸出的方式,這里選擇了stdout,就是標(biāo)準(zhǔn)輸出(輸出到終端)。
這里的codec是個(gè)插件,表明格式。這里放在stdout中,表示輸出的格式,
rubydebug是專門用來做測試的格式,一般用來在終端輸出JSON格式。

logstash的output輸出的是JSON格式的內(nèi)容:

Logstash在輸出內(nèi)容中會(huì)給事件添加一些額外信息。比如@version、host、@timestamp都是新增的字段,而最重要的是@timestamp,用來標(biāo)記事件的發(fā)生時(shí)間。由于這個(gè)字段涉及到Logstash內(nèi)部流轉(zhuǎn),如果給一個(gè)字符串字段重命名為@timestamp的話,Logstash就會(huì)直接報(bào)錯(cuò)。另外,也不能刪除這個(gè)字段。還有一個(gè)字段type,表示事件的唯一類型。tags,表示事件的某方面屬性。

我們上面的例子中是最簡單的logstash例子。不過生產(chǎn)環(huán)境中大多使用-f參數(shù)去讀配置文件。我們在上面提到過,配置文件一般在/etc/logstash/conf.d目錄下,必須以.conf結(jié)尾才是logstash服務(wù)讀取的配置文件。

那這次我們以配置文件為例進(jìn)行介紹:

1)首先是我們進(jìn)入到conf.d目錄,然后創(chuàng)建配置文件l1.conf并輸入如下內(nèi)容:

input {
        file {
                path => "/var/log/haha.txt"        }
}

output {
                stdout {
                        codec => rubydebug
                }
}

保存退出。這里的意思就是說我們創(chuàng)建個(gè)配置文件去讀取/var/log/haha.txt這個(gè)日志文件,此文件里面一旦有數(shù)據(jù),就立馬讀取出來。

接下來進(jìn)行啟動(dòng)logstash服務(wù):

[root@: /etc/logstash/conf.d]#/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/l1.confSending Logstash logs to /var/log/logstash which is now configured via log4j2.properties
[2019-01-22T03:19:03,462][WARN ][logstash.config.source.multilocal] Ignoring the 'pipelines.yml' file because modules or command line options are specified
[2019-01-22T03:19:03,486][INFO ][logstash.runner          ] Starting Logstash {"logstash.version"=>"6.5.4"}[2019-01-22T03:19:08,344][INFO ][logstash.pipeline        ] Starting pipeline {:pipeline_id=>"main", "pipeline.workers"=>4, "pipeline.batch.size"=>125, "pipeline.batch.delay"=>50}[2019-01-22T03:19:08,655][INFO ][logstash.inputs.file     ] No sincedb_path set, generating one based on the "path" setting {:sincedb_path=>"/var/lib/logstash/plugins/inputs/file/.sincedb_0d6c5b209e03529a50b2eca9300b7d96", :path=>["/var/log/haha.txt"]}[2019-01-22T03:19:08,706][INFO ][logstash.pipeline        ] Pipeline started successfully {:pipeline_id=>"main", :thread=>"#<Thread:0x27274b73 run>"}[2019-01-22T03:19:08,773][INFO ][logstash.agent           ] Pipelines running {:count=>1, :running_pipelines=>[:main], :non_running_pipelines=>[]}
[2019-01-22T03:19:08,783][INFO ][filewatch.observingtail  ] START, creating Discoverer, Watch with file and sincedb collections
[2019-01-22T03:19:09,220][INFO ][logstash.agent           ] Successfully started Logstash API endpoint {:port=>9600}

會(huì)出現(xiàn)一堆啟動(dòng)信息,不妨礙實(shí)驗(yàn)。

接下來在另一終端向/var/log/haha.txt輸入一行內(nèi)容:

[root@::172.31.22.29 /etc/logstash]#echo "`date`+ timestamp is OK" >> /var/log/haha.txt

然后回到原來的那個(gè)終端去查看內(nèi)容:

{       "message" => "Tue Jan 22 03:21:32 UTC 2019+ timestamp is OK",
      "@version" => "1",
    "@timestamp" => 2019-01-22T03:21:33.843Z,
          "path" => "/var/log/haha.txt",
          "host" => "ip-172-31-22-29.ec2.internal"}

logstash服務(wù)會(huì)去讀取/var/log/haha.txt文件并采集數(shù)據(jù)進(jìn)行展示。

接下來我們對(duì)配置文件l1.conf進(jìn)行解讀:

首先看input插件,這里定義了input的輸入源為file,然后指定了文件的路徑為/var/log/haha.txt,也就是將此文件的內(nèi)容作為輸入源,這里的path屬性是必填配置,后面的路徑必須是絕對(duì)路徑,不能是相對(duì)路徑。如果需要監(jiān)控多個(gè)文件,可以通過逗號(hào)分隔即可。如下所示:

path => ["PATH1","PATH2","PATH3"]

這里的output插件,仍然采用rubydebug的JSON輸出格式。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

網(wǎng)站名稱:logstash是怎么工作的?-創(chuàng)新互聯(lián)
網(wǎng)站網(wǎng)址:http://www.muchs.cn/article0/shsio.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)、網(wǎng)站維護(hù)自適應(yīng)網(wǎng)站、服務(wù)器托管、標(biāo)簽優(yōu)化、網(wǎng)頁設(shè)計(jì)公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化