Logstash最強(qiáng)大的功能在于豐富的過濾器插件。此過濾器提供的并不單單是過濾的功能,還可以對(duì)進(jìn)入過濾器的原始數(shù)據(jù)進(jìn)行復(fù)雜的邏輯處理。甚至添加獨(dú)特的事件到后續(xù)流程中。
創(chuàng)新互聯(lián)建站專注于企業(yè)全網(wǎng)營銷推廣、網(wǎng)站重做改版、錯(cuò)那網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、HTML5建站、商城建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為錯(cuò)那等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。1、logstash基本語法組成
logstash主要由三部分組成:input、filter、output。而filter就是過濾器插件,這個(gè)組件可以不要,但是這樣子就不能體現(xiàn)出logtash的強(qiáng)大過濾功能了。
input{ 輸入插件 } filter{ 過濾器插件 } outer{ 輸出插件 }
下面我們依次對(duì)各個(gè)插件進(jìn)行介紹
1.1、logstash輸入插件(input)
Logstash的輸入插件主要用來接收數(shù)據(jù),Logstash支持多種數(shù)據(jù)源,常見的有讀取文件、標(biāo)準(zhǔn)輸入、讀取syslog日志、讀取網(wǎng)絡(luò)數(shù)據(jù)等,這里分別介紹下每種接收數(shù)據(jù)源的配置方法
我們先來看個(gè)例子:
input{ file{ path => ["/var/log/messages"] type => "system" start_position => "timestamp" } } output{ stdout{ codec => rubydebug } }
這時(shí)我們有幾個(gè)小疑問:
1、logstash的input是怎么樣接收日志的呢?
logstash使用一個(gè)名為filewatch的ruby gem庫來監(jiān)聽文件變化,并通過一個(gè)叫.sincedb的數(shù)據(jù)庫文件來記錄被監(jiān)聽的日志文件的讀取進(jìn)度(時(shí)間戳)。這個(gè)sincedb數(shù)據(jù)文件的默認(rèn)路徑在 <path.data>/plugins/inputs/file下面,文件名類似于.sincedb_452905a167cf4509fd08acb964fdb20c。而<path.data>表示logstash插件存儲(chǔ)目錄,默認(rèn)是LOGSTASH_HOME/data。(rpm包安裝則是在/usr/share/logstash目錄下)。
2、logstash的input技術(shù)跟Linux的那個(gè)比較像呢?
input就跟Linux的管道右側(cè)內(nèi)容一樣,在Linux管道中,左側(cè)的輸出傳給管道的右側(cè)接收機(jī)制。而input就是如此,當(dāng)他監(jiān)聽一個(gè)文件時(shí),會(huì)以tail -f命令的形式逐行獲取數(shù)據(jù)。不過input可以指定從哪個(gè)地方(某一時(shí)間戳)開始讀取,而start_position就是指定時(shí)間戳。如果不指定則從頭開始讀取。type則是用來標(biāo)記時(shí)間類型。
下面舉個(gè)例子來看:
1.2、標(biāo)準(zhǔn)輸入
stdin是從標(biāo)準(zhǔn)輸入獲取信息的。這里我們看一個(gè)稍微復(fù)雜一點(diǎn)的例子:
input { stdin { add_field => {"key"=>"apple"} tags => ["add1"] type => "test1" } } output { stdout { codec => rubydebug } }
然后我們啟動(dòng)一下終端,大家要注意,我這里沒有指定輸入文件,而指定的是stdin,表示標(biāo)準(zhǔn)輸入,意思就是交互式輸入數(shù)據(jù)。
[root@::172.31.22.29 /etc/logstash/conf.d]#/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/l1.conf Sending Logstash logs to /var/log/logstash which is now configured via log4j2.propertieshello word #手動(dòng)輸入此信息{ "type" => "test1", "@version" => "1", "message" => "hello word", "@timestamp" => 2019-01-22T05:42:08.340Z, "tags" => [ [0] "add1" ], "host" => "ip-172-31-22-29.ec2.internal", "key" => "apple" }
type和tags是logstash的兩個(gè)特殊字段, type一般會(huì)放在input中標(biāo)記事件類型, tags主要用于在事件中增加標(biāo)簽,以便在后續(xù)的處理流程中使用,主要用于filter或output階段。
2、logstash編碼插件(Codec)
前面的例子中,其實(shí)我們就已經(jīng)用過編碼插件codec了,就是這個(gè)rubydebug,它就是一種codec。
編碼插件(codec)可以在logstash輸入或輸出時(shí)處理不同類型的數(shù)據(jù),同時(shí),還可以更好更方便的與其他自定義格式的數(shù)據(jù)產(chǎn)品共存,比如:fluent、netflow、collectd等通用數(shù)據(jù)格式的其他產(chǎn)品。因此,logstash不只是一個(gè)input-->filter-->output的數(shù)據(jù)流,而且是一個(gè)input-->decode-->filter-->encode-->output的數(shù)據(jù)流。
codec支持的編碼格式常見有plain、json、json_lines等,下面依次介紹:
1、codec插件之plain
plain是最簡單的編碼插件,你輸入什么信息,就返回什么信息,諸如上面的例子中的timestamp、type等都不會(huì)帶有:
修改一下配置文件:
input { stdin { } } output { stdout { codec => plain } }
現(xiàn)在我們啟動(dòng)一下:
[root@::172.31.22.29 /etc/logstash/conf.d]#/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/l1.conf Sending Logstash logs to /var/log/logstash which is now configured via log4j2.properties2019-01-22T06:10:14.161Z ip-172-31-22-29.ec2.internal hello word #在此輸入信息2019-01-22T06:10:19.382Z ip-172-31-22-29.ec2.internal hello word
2、codec插件之json、json_lines
有時(shí)候logstash采集的日志是JSON格式,那我們可以在input字段加入codec => json來進(jìn)行解析,這樣就可以根據(jù)具體內(nèi)容生成字段,方便分析和儲(chǔ)存。如果想讓logstash輸出為json格式,可以在output字段加入codec=>json。下面是一個(gè)包含json編碼的時(shí)間配置文件:
input { stdin { } } output { stdout { codec => json } }
啟動(dòng)一下:
[root@:172.31.22.29 /etc/logstash/conf.d]#/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/l1.conf Sending Logstash logs to /var/log/logstash which is now configured via log4j2.propertieshello word #輸入此行信息{"host":"ip-172-31-22-29.ec2.internal","@version":"1","message":"hello word","@timestamp":"2019-01-22T06:27:27.191Z"}
你會(huì)發(fā)現(xiàn)插件是json的時(shí)候,。他會(huì)自帶一些信息,諸如host、@version、@timestamp。json的每個(gè)字段都是key:value格式,多個(gè)字段之間通過逗號(hào)分隔。這種輸出比較長,因此我們采用json_lines編碼格式稍微好一點(diǎn)。
2.1、我們演示一下在input里面設(shè)置json格式會(huì)怎么輸入呢?
input { stdin { codec => json } } output { stdout { } }
接下來啟動(dòng)一下服務(wù):
[root@::172.31.22.29 /etc/logstash/conf.d]#/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/l1.conf Sending Logstash logs to /var/log/logstash which is now configured via log4j2.properties{"message":"hello word","@version":"1","@timestamp":"2019-01-22T06:32:56.973Z","host":"ip-172-31-22-29.ec2.internal"}{ "host" => "ip-172-31-22-29.ec2.internal", "@timestamp" => 2019-01-22T06:32:56.973Z, "@version" => "1", "message" => "hello word" }
這里就是說當(dāng)我輸入紅色方框里面的內(nèi)容的時(shí)候,這里我輸入的是一行JSON格式,然后系統(tǒng)就會(huì)返回給我信息。
另外有需要云服務(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)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
網(wǎng)站欄目:logstash中input與codec插件的使用方法-創(chuàng)新互聯(lián)
文章位置:http://m.newbst.com/article38/doddsp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、品牌網(wǎng)站建設(shè)、外貿(mào)建站、標(biāo)簽優(yōu)化、用戶體驗(yàn)、網(wǎng)站策劃
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容
移動(dòng)網(wǎng)站建設(shè)知識(shí)