Logstash配置文件詳情

logstash 配置文件編寫詳解

說明

它一個有jruby語言編寫的運行在java虛擬機上的具備收集分析轉發數據流功能的工具
能集中處理各類類型的數據
能標準化不通模式和格式的數據
能快速的擴展自定義日誌的格式
能很是方便的添加插件來自定義數據html

經過在配置文件編寫輸入(input),過濾(filter),輸出(output)相關規則,對數據收集轉發。java

在這裏插入圖片描述

配置文件編寫語法

數據類型
boolen: 布爾 a => true
Bytes: 字節 a => 「10MiB」
Strings:字符串 a => 「hello world」
Number: 數值 a => 1024
Array: 數組 match => [「datatime」,「UNIX」,「ISO8601」]
Hash: 哈希 options => { key1 => 「value1」,key2 => 「value2」 }
編碼解碼: codec: codec => 「json」
密碼型: my_passwd => 「password」
路徑: my_path => 「/tmp/logstash」
註釋: #node

條件判斷
==,!= ,< ,> ,<= ,>=
=~
in,not in
and ,or , nand, xor
(), !()
if expression {
} else if expression {

} else {

}nginx

字段引用
%{[response][status]}正則表達式

實例配置操做
# 輸入
input {
  ...
}

# 過濾器
filter {
  ...
}

# 輸出
output {
  ...
}

input實例express

input {
    # file爲經常使用文件插件,插件內選項不少,可根據需求自行判斷
    file {
        path => "/var/log/httpd/access_log"   # 要導入的文件的位置,可使用*,例如/var/log/nginx/*.log
        Excude =>」*.gz」                       # 要排除的文件
        start_position => "beginning"         # 從文件開始的位置開始讀,默認是end
        ignore_older => 0                # 多久以內沒修改過的文件不讀取,0爲無限制,單位爲秒
        sincedb_path => "/dev/null"      # 記錄文件上次讀取位置;輸出到null表示每次都從文件首行開始解析
        add_field=>{"test"="test"}       # 增長一個字段
        type => "apache-log"             # type字段,可代表導入的日誌類型
        }   
}

input擁有多個插件,選擇對應的插件獲取相應的數據。相關連接:input相關插件apache

filter實例
插件grok插件
grok插件有很是強大的功能,他能匹配一切數據,可是他的性能和對資源的損耗一樣讓人詬病。相關插件:filter相關插件連接json

方法一:
filter{
    grok{
        #首先要說明的是,全部文本數據都是在Logstash的message字段中的,咱們要在過濾器裏操做的數據就是message。
        #只說一個match屬性,他的做用是從message 字段中把時間給摳出來,而且賦值給另個一個字段logdate。
        #第二點須要明白的是grok插件是一個十分耗費資源的插件。
        #第三點須要明白的是,grok有超級多的預裝正則表達式,這裏是沒辦法徹底搞定的,也許你能夠從這個大神的文章中找到你須要的表達式
        #http://blog.csdn.net/liukuan73/article/details/52318243
        #可是,我仍是不建議使用它,由於他徹底能夠用別的插件代替,固然,對於時間這個屬性來講,grok是很是便利的。
        
         match => ['message','%{TIMESTAMP_ISO8601:logdate}']
        } 
}

方法二:
filter {  
       grok {  
      match => {"message"=>"%{IPORHOST:clientip}\s+%{WORD:method}\s+%{URIPATHPARAM:request}\s+%{NUMBER:bytes}\s+%{NUMBER:duration}"}  
   }  
}

output實例
插件elasticsearch,相關插件連接地址:output插件地址數組

elasticsearch{  
    hosts=>["10.0.0.11:9200"]        # elasticsearch 地址 端口
    action=>"index"                    # 索引
    index=>"indextemplate-logstash"    # 索引名稱
    #document_type=>"%{@type}"  
    document_id=>"ignore"  
      
    template=>"/opt/logstash-conf/es-template.json"    # 模板文件的路徑 
    template_name=>"es-template.json"                  # 在es內部模板的名字
    template_overwrite=>true                           # 
    protocol => "http"         #目前支持三種協議    node、http 和tranaport  
   }
相關文章
相關標籤/搜索