logstash(一)基礎(chǔ)介紹

每個(gè) logstash 過(guò)濾插件正歼,都會(huì)有四個(gè)方法叫add_tag,remove_tag,add_field和remove_field。它們?cè)诓寮^(guò)濾匹配成功時(shí)生效。

語(yǔ)法

Logstash 設(shè)計(jì)了自己的 DSL —— 有點(diǎn)像 Puppet 的 DSL,或許因?yàn)槎际怯?Ruby 語(yǔ)言寫(xiě)的吧 —— 包括有區(qū)域界弧,注釋?zhuān)瑪?shù)據(jù)類(lèi)型(布爾值,字符串搭综,數(shù)值垢箕,數(shù)組,哈希)兑巾,條件判斷条获,字段引用等。

區(qū)段

Logstash 用{}來(lái)定義區(qū)域蒋歌。區(qū)域內(nèi)可以包括插件區(qū)域定義月匣,你可以在一個(gè)區(qū)域內(nèi)定義多個(gè)插件。插件區(qū)域內(nèi)則可以定義鍵值對(duì)設(shè)置奋姿。示例如下:

input {

? ? ? ? ? ? ?stdin {}

? ? ? ? ? ? ?syslog {}

}

數(shù)據(jù)類(lèi)型

Logstash 支持少量的數(shù)據(jù)值類(lèi)型:

bool

debug => true

string

host => "hostname"

number

port => 514

array

match => ["datetime", "UNIX", "ISO8601"]

hash

options => {

key1 => "value1",

key2 => "value2"

}

注意:如果你用的版本低于 1.2.0锄开,哈希的語(yǔ)法跟數(shù)組是一樣的,像下面這樣寫(xiě):

match => [ "field1", "pattern1", "field2", "pattern2" ]


字段引用(field reference)

字段是Logstash::Event對(duì)象的屬性称诗。我們之前提過(guò)事件就像一個(gè)哈希一樣萍悴,所以你可以想象字段就像一個(gè)鍵值對(duì)。

小貼士:我們叫它字段寓免,因?yàn)?Elasticsearch 里是這么叫的癣诱。

如果你想在 Logstash 配置中使用字段的值,只需要把字段的名字寫(xiě)在中括號(hào)[]里就行了袜香,這就叫字段引用撕予。

對(duì)于嵌套字段(也就是多維哈希表,或者叫哈希的哈希)蜈首,每層的字段名都寫(xiě)在[]里就可以了实抡。比如欠母,你可以從 geoip 里這樣獲取longitude值(是的,這是個(gè)笨辦法吆寨,實(shí)際上有單獨(dú)的字段專(zhuān)門(mén)存這個(gè)數(shù)據(jù)的):

[geoip][location][0]

小貼士:logstash 的數(shù)組也支持倒序下標(biāo)赏淌,即[geoip][location][-1]可以獲取數(shù)組最后一個(gè)元素的值。

Logstash 還支持變量?jī)?nèi)插啄清,在字符串里使用字段引用的方法是這樣:

"the longitude is %{[geoip][location][0]}"

條件判斷(condition)

Logstash從 1.3.0 版開(kāi)始支持條件判斷和表達(dá)式六水。

表達(dá)式支持下面這些操作符:

==(等于),!=(不等于),<(小于),>(大于),<=(小于等于),>=(大于等于)

=~(匹配正則),!~(不匹配正則)

in(包含),not in(不包含)

and(與),or(或), nand(非與), xor(非或)

()(復(fù)合表達(dá)式),!()(對(duì)復(fù)合表達(dá)式結(jié)果取反)

通常來(lái)說(shuō),你都會(huì)在表達(dá)式里用到字段引用辣卒。為了盡量展示全面各種表達(dá)式掷贾,下面虛擬一個(gè)示例:

if "_grokparsefailure" not in [tags] {

} else if [status] !~ /^2\d\d/ or ( [url] == "/noc.gif" nand [geoip][city] != "beijing" ) {

} else {

}

命令行參數(shù)

Logstash 提供了一個(gè) shell 腳本叫l(wèi)ogstash方便快速運(yùn)行。它支持以下參數(shù):

-e

意即執(zhí)行荣茫。我們?cè)?"Hello World" 的時(shí)候已經(jīng)用過(guò)這個(gè)參數(shù)了胯盯。事實(shí)上你可以不寫(xiě)任何具體配置,直接運(yùn)行bin/logstash -e ''達(dá)到相同效果计露。這個(gè)參數(shù)的默認(rèn)值是下面這樣:

input {

? ? ? ? ?stdin { }

}

output {

? ? ? ? ?stdout { }

}


Logstash使用input和output定義收集日志時(shí)的輸入和輸出的相關(guān)配置,本例中input定義了一個(gè)叫"stdin"的input憎乙,output定義一個(gè)叫"stdout"的output票罐。無(wú)論我們輸入什么字符,Logstash都會(huì)按照某種格式來(lái)返回我們輸入的字符泞边,其中output被定義為"stdout"并使用了codec參數(shù)來(lái)指定logstash輸出格式该押。

--config 或 -f

意即文件。真實(shí)運(yùn)用中阵谚,我們會(huì)寫(xiě)很長(zhǎng)的配置蚕礼,甚至可能超過(guò) shell 所能支持的 1024 個(gè)字符長(zhǎng)度。所以我們必把配置固化到文件里梢什,然后通過(guò)bin/logstash -f agent.conf這樣的形式來(lái)運(yùn)行奠蹬。

此外,logstash 還提供一個(gè)方便我們規(guī)劃和書(shū)寫(xiě)配置的小功能嗡午。你可以直接用bin/logstash -f /etc/logstash.d/來(lái)運(yùn)行囤躁。logstash 會(huì)自動(dòng)讀取/etc/logstash.d/目錄下所有*.conf的文本文件,然后在自己內(nèi)存里拼接成一個(gè)完整的大配置文件荔睹,再去執(zhí)行狸演。

注意:

logstash 列出目錄下所有文件時(shí),是字母排序的僻他。而 logstash 配置段的 filter 和 output 都是順序執(zhí)行宵距,所以順序非常重要。采用多文件管理的用戶(hù)吨拗,推薦采用數(shù)字編號(hào)方式命名配置文件满哪,同時(shí)在配置中婿斥,嚴(yán)謹(jǐn)采用if判斷限定不同日志的動(dòng)作。

--configtest 或 -t

意即測(cè)試翩瓜。用來(lái)測(cè)試 Logstash 讀取到的配置文件語(yǔ)法是否能正常解析受扳。Logstash 配置語(yǔ)法是用 grammar.treetop 定義的。尤其是使用了上一條提到的讀取目錄方式的讀者兔跌,尤其要提前測(cè)試勘高。

--log 或 -l

意即日志。Logstash 默認(rèn)輸出日志到標(biāo)準(zhǔn)錯(cuò)誤坟桅。生產(chǎn)環(huán)境下你可以通過(guò)bin/logstash -l logs/logstash.log命令來(lái)統(tǒng)一存儲(chǔ)日志华望。

--pipeline-workers 或 -w

運(yùn)行 filter 和 output 的 pipeline 線(xiàn)程數(shù)量。默認(rèn)是 CPU 核數(shù)仅乓。

--pipeline-batch-size 或 -b

每個(gè) Logstash pipeline 線(xiàn)程赖舟,在執(zhí)行具體的 filter 和 output 函數(shù)之前,最多能累積的日志條數(shù)夸楣。默認(rèn)是 125 條宾抓。越大性能越好,同樣也會(huì)消耗越多的 JVM 內(nèi)存豫喧。

--pipeline-batch-delay 或 -u

每個(gè) Logstash pipeline 線(xiàn)程石洗,在打包批量日志的時(shí)候,最多等待幾毫秒紧显。默認(rèn)是 5 ms讲衫。

--pluginpath 或 -P

可以寫(xiě)自己的插件,然后用bin/logstash --pluginpath /path/to/own/plugins加載它們孵班。

--verbose

輸出一定的調(diào)試日志涉兽。


--debug

輸出更多的調(diào)試日志。


設(shè)置文件

從 Logstash 5.0 開(kāi)始篙程,新增了$LS_HOME/config/logstash.yml文件枷畏,可以將所有的命令行參數(shù)都通過(guò) YAML 文件方式設(shè)置。同時(shí)為了反映命令行配置參數(shù)的層級(jí)關(guān)系虱饿,參數(shù)也都改成用.而不是-了矿辽。

pipeline:

? ? ? ? ? workers:24

? ? ? ? ? batch:

? ? ? ? ? ? ? size:125

? ? ? ? ? ? ? delay:5

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市郭厌,隨后出現(xiàn)的幾起案子袋倔,更是在濱河造成了極大的恐慌,老刑警劉巖折柠,帶你破解...
    沈念sama閱讀 217,509評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件宾娜,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡扇售,警方通過(guò)查閱死者的電腦和手機(jī)前塔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)嚣艇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人华弓,你說(shuō)我怎么就攤上這事食零。” “怎么了寂屏?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,875評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵贰谣,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我迁霎,道長(zhǎng)吱抚,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,441評(píng)論 1 293
  • 正文 為了忘掉前任考廉,我火速辦了婚禮秘豹,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘昌粤。我一直安慰自己既绕,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布涮坐。 她就那樣靜靜地躺著凄贩,像睡著了一般。 火紅的嫁衣襯著肌膚如雪膊升。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,365評(píng)論 1 302
  • 那天谭企,我揣著相機(jī)與錄音廓译,去河邊找鬼。 笑死债查,一個(gè)胖子當(dāng)著我的面吹牛非区,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播盹廷,決...
    沈念sama閱讀 40,190評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼征绸,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了俄占?” 一聲冷哼從身側(cè)響起管怠,我...
    開(kāi)封第一講書(shū)人閱讀 39,062評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎缸榄,沒(méi)想到半個(gè)月后渤弛,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,500評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡甚带,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評(píng)論 3 335
  • 正文 我和宋清朗相戀三年她肯,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了佳头。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,834評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡晴氨,死狀恐怖康嘉,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情籽前,我是刑警寧澤亭珍,帶...
    沈念sama閱讀 35,559評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站聚假,受9級(jí)特大地震影響块蚌,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜膘格,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評(píng)論 3 328
  • 文/蒙蒙 一峭范、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧瘪贱,春花似錦纱控、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,779評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至球昨,卻和暖如春尔店,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背主慰。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,912評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工嚣州, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人共螺。 一個(gè)月前我還...
    沈念sama閱讀 47,958評(píng)論 2 370
  • 正文 我出身青樓该肴,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親藐不。 傳聞我的和親對(duì)象是個(gè)殘疾皇子匀哄,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)雏蛮,斷路器涎嚼,智...
    卡卡羅2017閱讀 134,654評(píng)論 18 139
  • 本人陸陸續(xù)續(xù)接觸了ELK的1.4,2.0挑秉,2.4铸抑,5.0,5.2版本衷模,可以說(shuō)前面使用當(dāng)中一直沒(méi)有太多感觸鹊汛,最近使用...
    三杯水Plus閱讀 4,104評(píng)論 0 12
  • 5 系列是 elastic 下一代的產(chǎn)品線(xiàn)蒲赂, elastic 希望所有的產(chǎn)品未來(lái)都統(tǒng)一成同一個(gè)系列版本,所有的產(chǎn)品...
    疲馬羈禽閱讀 2,887評(píng)論 0 51
  • 晚飯后邊溫習(xí)今天的功課刁憋,邊和高先生聊天滥嘴,聊過(guò)年回家的事兒,聊各自獎(jiǎng)金的發(fā)放狀況至耻,聊明年的工作計(jì)劃若皱,說(shuō)說(shuō)笑笑...
    火色石榴花閱讀 821評(píng)論 0 1
  • 踐行21天 你永遠(yuǎn)不要認(rèn)為金錢(qián)可以買(mǎi)到忠誠(chéng),金錢(qián)和忠誠(chéng)是完全沒(méi)有交集的兩種截然不同的概念尘颓。 感覺(jué)說(shuō)的太絕對(duì)了走触。員工...
    徐殊文閱讀 149評(píng)論 0 0