logstash配置文件經常使用參數

    最近在折騰logstash,其處理流程不過於input、filter、output三個處理流程,如下是我翻譯的幾個經常使用的處理參數 python

output流之http mysql

output {
  http {
    codec => ... # codec (optional), default: "plain"
    content_type => ... # string (optional)
    format => ... # string, one of ["json", "form", "message"] (optional), default: "json"
    headers => ... # hash (optional)
    http_method => ... # string, one of ["put", "post"] (required)
    mapping => ... # hash (optional)
    message => ... # string (optional)
    url => ... # string (required)
    verify_ssl => ... # boolean (optional), default: true
    workers => ... # number (optional), default: 1
}
}
  • codec:  數據類型,默認是「plain」,用來指定輸出數據的類型
  • content_type:  值類型是string,默認沒有設置該參數,若是沒有特別指明,json格式是application/json,form格式是application/x-www-form-urlencoded
  • format:  值能夠是json、form、message三種類型,默認是json。用來設置http body的格式,若是是form格式,http body會被影射成一個查詢字符串(foo=bar&baz=fizz...),若是是message格式,http body會被格式化成事件???,不然,事件都是以json格式發送
  • headers:  值類型是一個hash,默認是沒有設置的。默認使用的格式以下:headers => ["X-My-Header", "%{host}"]
  • http_method:  值能夠是put或者post,默認沒有設置。
  • mapping:  值是一個hash,默認沒有設置,該值可讓你選擇事件的一個結構體或者部分發送,例如:mapping => ["foo", "%{host}", "bar", "%{type}"]
  • message:  值是字符串,默認沒有設置
  • url:  值是一個字符串,默認沒有設置。可讓你使用http或者https進行put或者post。
  • verify_ssl:  值是布爾類型,默認是true,是否驗證SSL
  • workers:  值是一個數值。默認是1,用來設置工做者數目。


input流codec之json格式 sql

input {
  file {
    codec => json {
      charset => ["UTF-8"] (optional), default: "UTF-8"
  }
  }
}
  • 被用來解析徹底格式的json消息,若是json數據使用'\n'分割的,則可使用json_lines

filter流之json
filter {
  json {
    add_field => ... # hash (optional), default: {}
    add_tag => ... # array (optional), default: []
    remove_field => ... # array (optional), default: []
    remove_tag => ... # array (optional), default: []
    source => ... # string (required)
    target => ... # string (optional)
}
}
  對一個包含json的字段,能夠擴展成一個數據結構
  • add_field:  值類型爲hash,默認是{} 空。若是這個過濾成功了,會增長任意field到這個事件。例如:add_field => [ "foo_%{somefield}", "Hello world, from %{host}" ],若是這個事件有一個字段somefiled,它的值是hello,那麼咱們會增長一個字段foo_hello,字段值則用%{host}代替。
  • add_tag:  值類型爲array,默認是[] 空。執行成功會增長一個任意的tags到事件。例如:add_tag => [ "foo_%{somefield}" ]
  • remove_field:  值類型爲array,默認是[] 空,執行成功,刪除一個field,例如:remove_tag => [ "foo_%{somefield}" ]
  • source:  值類型爲字符串,默認沒有設置。

filter流之json_encode
apache

filter {
  json_encode {
    add_field => ... # hash (optional), default: {}
    add_tag => ... # array (optional), default: []
    remove_field => ... # array (optional), default: []
    remove_tag => ... # array (optional), default: []
    source => ... # string (required)
    target => ... # string (optional)
}
}
  • 把一個field序列化成json格式。

filter流之grep
filter {
  grep {
    add_field => ... # hash (optional), default: {}
    add_tag => ... # array (optional), default: []
    drop => ... # boolean (optional), default: true
    ignore_case => ... # boolean (optional), default: false
    match => ... # hash (optional), default: {}
    negate => ... # boolean (optional), default: false
    remove_field => ... # array (optional), default: []
    remove_tag => ... # array (optional), default: []
}
}

   grep過濾器,若是你不想經過哪些事件能夠把它drop掉,或者給每一個匹配的事件增長tags和fields。若是negate的值是true,則匹配到的事件會被丟棄。 json

  • add_field:  值類型是hash,默認是{} 空。過濾成功,會增長一個field到事件。例如:add_field => [ "foo_%{somefield}", "Hello world, from %{host}" ]
  • add_tag:  值類型是array,默認是[] 空。過濾成功,會增長一個tags到事件,例如:add_tag => [ "foo_%{somefield}" ]
  • drop:  值是布爾類型,默認是true。drop掉不匹配的事件,若是該值設置爲false,則不會有事件被drop。
  • ifnore_case:  值類型是布爾類型,默認是false。不區分大小寫匹配,相似於grep -i,若是是true,則區分大小寫
  • match:  值是hash類型,默認是{} 空。一個hash匹配field=>regxp。若是有多個匹配,則必須全部的都成功。例如:match => [ "message", "hello world" ]
  • negate:  值是布爾類型,默認值是false。相似於grep -v
  • remove_field:  值是array類型,默認是[] 空。若是成功,刪除一個fields。
  • remove_tag:  值是array類型,同上。


filter流之grok 數據結構

filter {
  grok {
    add_field => ... # hash (optional), default: {}
    add_tag => ... # array (optional), default: []
    break_on_match => ... # boolean (optional), default: true
    drop_if_match => ... # boolean (optional), default: false
    keep_empty_captures => ... # boolean (optional), default: false
    match => ... # hash (optional), default: {}
    named_captures_only => ... # boolean (optional), default: true
    overwrite => ... # array (optional), default: []
    patterns_dir => ... # array (optional), default: []
    remove_field => ... # array (optional), default: []
    remove_tag => ... # array (optional), default: []
    tag_on_failure => ... # array (optional), default: ["_grokparsefailure"]
}
}


   解析任意文本而且結構化他們。grok目前是logstash中最好的解析非結構化日誌而且結構化他們的工具。這個工具很是適合syslog、apache log、mysql log之類的人們可讀日誌的解析。
相關文章
相關標籤/搜索