logstash 介紹

logstash

它一個(gè)有jruby語言編寫的運(yùn)行在java虛擬機(jī)上的具有收集
分析轉(zhuǎn)發(fā)數(shù)據(jù)流功能的工具

  • 能集中處理各種類型的數(shù)據(jù)
  • 能標(biāo)準(zhǔn)化不通模式和格式的數(shù)據(jù)
  • 能快速的擴(kuò)展自定義日志的格式
  • 能非常方便的添加插件來自定義數(shù)據(jù)

安裝logstash

  • 安裝jdk
  • rpm包安裝

logstash運(yùn)行參數(shù)

  • -f 制定配置文件抓督,目錄或者通配符加載配置信息
  • -e 用于指定字符串輸入
  • -w 指定filterworkers的數(shù)量,指定logstash工作線程數(shù)量
  • -l 指定logstash默認(rèn)日志寫入文件中,默認(rèn)是控制臺(tái)輸出
  • --quiet 靜默模式 僅僅只有error級(jí)別log輸出
  • --verbose info級(jí)別的log輸出
  • --debug debug級(jí)別日志的log輸出
  • --V 查看logstash版本
  • -p 可以寫自己的插件,然后指定好路徑使用她們
  • -t 測(cè)試logstash讀取到的配置文件語法能否正常解析

配置語法

  • input
  • filter
  • output

語法格式

  • 區(qū)域
    • 用{}定義區(qū)域
    • 一個(gè)區(qū)域可以定義多個(gè)插件
  • 數(shù)據(jù)類型
    • boolen: 布爾 a => true
    • Bytes: 字節(jié) a => "10MiB"
    • Strings:字符串 a => "hello world"
    • Number: 數(shù)值 a => 1024
    • Array: 數(shù)組 match => ["datatime","UNIX","ISO8601"]
    • Hash: 哈希 options => { key1 => "value1",key2 => "value2" }
    • 編碼解碼: codec: codec => "json"
    • 密碼型: my_passwd => "password"
    • 路徑: my_path => "/tmp/logstash"
    • 注釋: #
  • 條件判斷
    • ==,!= ,< ,> ,<= ,>=
    • =~
    • in,not in
    • and ,or , nand, xor
    • (), !()
    • if expression {
      } else if expression {
      ...
      } else {
      ...
      }
  • 字段引用
    • %{[response][status]}

logstash插件

  • inputs 輸入
  • codecs 解碼
  • filters 過濾
  • outputs 輸出

logstash-plugins

logstash inputs 配置

  • stdin
  • file
  • tcp/udp
  • rsyslog
  • redis
  • kafka
  • beats
input {
    stdin {
    } 
}
outpu {
    stdout {
    } 
}

stdin

stdin {
    add_field => { "a" => "b" }
    codec => "json"
    tags => "["a","b"]"
    type => "my_type"

} 

file

  • close_older number No
  • delimiter string No
  • discover_interval number No
  • exclude array No
  • ignore_older number No
  • max_open_files number No
  • path array Yes
  • sincedb_path string No
  • sincedb_write_interval number No
  • start_position string, one of ["beginning", "end"] No
  • stat_interval number No
input {
    file {
        path => ["/var/log/nginx/access.log"] 
        type => "nginx-log"  
        start_position => 'beginning'
    } 
} 
output {
    stdout {} 
}


tcp/udp

input {
    tcp {
        port => 9090 
        mode => "server"
        ssl_enable => false 
        
    }
}
output {
    stdout {} 
    
} 
nc 127.0.0.1:9090 < data

input {
    udp {
        host => "127.0.0.1" 
        port => 5050        
    }   
} 
output {
    stdout {} 
    
} 

#python udp客戶端
import socket 
port = 5050
host = "127.0.0.1"
file_input = raw_input("\033[32;1mPlease input: \033[0m")
s = socket.socket(socket.AF_INET,socket_SOCK_DGRAM) 
s.sendto(file_input,(host,port))

rsyslog

input {
    syslog {
        host => "127.0.0.1" 
        type => "syslog" 
        port => 518 
        
    } 

} 
output {
    stdout { } 

} 
###
vim /etc/rsyslog.conf 
*.* @@127.0.0.1:518
### 
logger 命令模擬發(fā)送日志

編碼

# plain
input {
    stdin {
        codec => 'plain'
    } 
} 
output {
    stdout { }  
} 
# json
input {
    stdin {} 

} 
output {
    stdout {
        codec => "json" 
    }

} 
#json_lines
input {
    tcp {
        port => 12345
        host => '127.0.0.1'
        codec => json_lines 
    
    }
}
output {
    stdout { } 
}
#rubydebug 
input {
    stdin {
        codec => json 
    }
} 
output {
    stdout {
        codec => rubydebug 
    }
} 

multiline

input {
    stdin {
        codec => multiline {
            charset => ""     #字符編碼
            max_bytes =>        #最大字節(jié)數(shù)
            max_lines =>      #最大行數(shù),默認(rèn)500
            multiline_tag =>  #設(shè)置一個(gè)事件標(biāo)簽揭北,默認(rèn)multiline
            pattern =>          #string匹配規(guī)則
            patterns_dir =>    #array多個(gè)匹配規(guī)則
            negate => false   #設(shè)置正向匹配還是反向匹配
            what   => next    #匹配的內(nèi)容后,后面多行的日志是向前靠攏還是向后靠攏鸣哀,previous,next
        }
    
    
    }
}
input {
    stdin {
        codec = multiline {
            pattern => "^\["
            negate => true
            what => previous
        
        }
    
    }
} 
output {
    stdout {
        codec => rubydebug 
    
    } 
} 

logstash filter 配置

  • json file
  • grok file
  • kv file

grok filter

kv filter

logstash output 配置

  • file輸出
  • tcp/udp方式輸出
  • elasticsearch
  • redis
  • kafka
  • hdfs
  • email

output file

output {
    file {
        path => "/root/access_result"
        #message_format => "%{ip}" 
        #path => "/root/access_%{+YYYY.MM.DD}_%{host}.txt"  
        #gzip => true 
    
    }
    stdout {
        codec => rebydebug 
        
    }
}
output {
    tcp {
        codec => json_lines 
        host => "127.0.0.1"
        port => "4050"
        mode => "server"
    }

}

output {
        udp {
            host => "127.0.0.1"
            port => 4050
        }
} 
output {
    elasticsearch {
        host => "127.0.0.1" 
        protocol => "http" 
        index => "test_output-%{type}-%{+YYYY.MM.dd}"
        document_type => "nginx" 
        workers => 5

    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末鹰溜,一起剝皮案震驚了整個(gè)濱河市虽填,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌曹动,老刑警劉巖斋日,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異恶守,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)衫樊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門晋被,熙熙樓的掌柜王于貴愁眉苦臉地迎上來挂脑,“玉大人崭闲,你說我怎么就攤上這事刁俭。” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)品抽。 經(jīng)常有香客問我,道長(zhǎng)赘方,這世上最難降的妖魔是什么炕淮? 我笑而不...
    開封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任币叹,我火速辦了婚禮颈抚,結(jié)果婚禮上驱富,老公的妹妹穿的比我還像新娘。我一直安慰自己叫榕,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上葵姥,一...
    開封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音句携,去河邊找鬼榔幸。 笑死,一個(gè)胖子當(dāng)著我的面吹牛矮嫉,可吹牛的內(nèi)容都是我干的削咆。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼蠢笋,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼拨齐!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起昨寞,我...
    開封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤瞻惋,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后编矾,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體熟史,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年窄俏,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蹂匹。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡凹蜈,死狀恐怖限寞,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情仰坦,我是刑警寧澤履植,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站悄晃,受9級(jí)特大地震影響玫霎,放射性物質(zhì)發(fā)生泄漏凿滤。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一庶近、第九天 我趴在偏房一處隱蔽的房頂上張望翁脆。 院中可真熱鬧,春花似錦鼻种、人聲如沸反番。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽罢缸。三九已至,卻和暖如春投队,著一層夾襖步出監(jiān)牢的瞬間枫疆,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來泰國(guó)打工蛾洛, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留养铸,地道東北人雁芙。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓轧膘,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親兔甘。 傳聞我的和親對(duì)象是個(gè)殘疾皇子谎碍,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)洞焙,斷路器蟆淀,智...
    卡卡羅2017閱讀 134,601評(píng)論 18 139
  • 本文是elasticsearch官方文檔logstash的翻譯,你也可 查看原文 注:Logstash意思是日志存...
    陽春是你閱讀 6,819評(píng)論 0 3
  • 本人陸陸續(xù)續(xù)接觸了ELK的1.4澡匪,2.0熔任,2.4,5.0唁情,5.2版本疑苔,可以說前面使用當(dāng)中一直沒有太多感觸,最近使用...
    三杯水Plus閱讀 4,087評(píng)論 0 12
  • Logstash使用配置 運(yùn)行:bin/logstash -f /home/logstash.conf logst...
    會(huì)飛的魚Coo閱讀 40,707評(píng)論 2 10
  • 在我年度計(jì)劃里甸鸟,有一項(xiàng)最重要的事就是惦费,2017年結(jié)婚。 二月一直忙著做交易計(jì)劃抢韭,把結(jié)婚的事給忘記了薪贫。面包比愛情重要...
    Joy君閱讀 113評(píng)論 0 0