logstash 5.1.1 學習

Logstash 5.1.1 安裝配置


安裝和配置

java 環境:

[root@ ~]# tar xf jdk-8u71-linux-x64.tar.gz 
[root@ ~]# mv jdk1.8.0_71 /usr/local/java_1.8.0
[root@ ~]# ln -s /usr/local/java_1.8.0/bin/java /usr/bin/java
[root@ ~]# vim /etc/profile
# 添加:
export JAVA_HOME=/usr/local/java_1.8.0
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$JAVA_HOME/bin
[root@ ~]# source /etc/profile

安裝logstash

直接使用rpm包安裝:logstash-5.1.1.rpmhtml

[root@ ~]# rpm -ivh logstash-5.1.1.rpm

初始配置logstash

logstash安裝後的所在目錄爲:/usr/share/logstash/,這裏爲了方便統一的管理,作規範的配置java

# 統一配置目錄,/etc/logstash在安裝logstash後就存在了配置文件,啓動後又去/usr/share/logstash/config找,why?
[root@ ~]# ln -s /etc/logstash /usr/share/logstash/config
[root@ ~]# ln -s /usr/share/logstash/bin/* /usr/local/bin/
# 調整jvm使用內存
[root@ ~]# vim /etc/logstash/jvm.options 
 -Xms128m
 -Xmx256m
# 修改logstash基本配置
[root@ ~]# vim /etc/logstash/logstash.yml 
pipeline:
  workers: 4
  batch:
    size: 125
    delay: 5
path.config: /etc/logstash/conf.d
path.logs: /data/logs/logstash
http.port: 9600
http.host: "192.168.31.140"

hello world

作個簡單的測試node

[root@ ~]# logstash  -e 'input{stdin{}}output{stdout{codec=>rubydebug}}'
Sending Logstash's logs to /data/logs/logstash which is now configured via log4j2.properties
The stdin plugin is now waiting for input:
hello world
{
    "@timestamp" => 2017-06-21T06:55:00.471Z,
      "@version" => "1",
          "host" => "baseos-1",
       "message" => "hello world",
          "tags" => []
}

以上的例子從標準輸入中獲取數據,再從標準輸出中輸出。mysql

在輸出的結果中,"@timestamp"標記事件發生的時間點,"host"標記事件發生的主機,"tags"標記事件的某個方面的屬性(這是一個數組,能夠有多個屬性),"type"標記事件的惟一類型。linux

Es 統一採用UTC時間存成長整型數據,會比北京時間晚八個小時。nginx

命令行參數:

  • -e:直接執行後接的配置字符串,能夠爲空。空字符串''就默認是'input{stdin{}}output{stdout{codec=>rubydebug}}'。
  • -f:後接配置文件,能夠將複雜的配置寫到配置文件中。
  • -t:測試,用來測試後接的配置文件語法是否正確。寫法:logstash -t -f conf_file_path
  • -l:後接日誌文件,默認日誌爲配置文件logstash.yml中指定的日誌文件。

Logstash 數據類型

array

數組能夠是單個或者多個字符串值。git

path => [ "/var/log/messages", "/var/log/*.log" ]
path => "/data/mysql/mysql.log"

若是指定了屢次,追加數組。此實例path數組包含三個字符串元素。github

boolean

布爾值必須是TRUE或者false。true和false不能有引號。redis

ssl_enable => true

bytes

指定字節單位。支持的單位有SI (k M G T P E Z Y) 和 Binary (Ki Mi Gi Ti Pi Ei Zi Yi)。Binary單位基於1024,SI單位基於1000。不區分大小寫和忽略值與單位之間的空格。若是沒有指定單位,默認是byte。sql

my_bytes => "1113" # 1113 bytes
my_bytes => "10MiB" # 10485760 bytes
my_bytes => "100kib" # 102400 bytes
my_bytes => "180 mb" # 180000000 bytes

Codec

logstash編碼名稱用來表示數據編碼。用於input和output段。便於數據的處理。若是input和output使用合適的編碼,就無需單獨的filter對數據進行處理。

codec => "json"

hash

鍵值對,注意多個鍵值對用空格分隔,而不是逗號。

match => {
"field1" => "value1"
"field2" => "value2"
... }

number

必須是有效的數值,浮點數或者整數。
port => 33

password

一個單獨的字符串。
my_password => "password"

path

一個表明有效的操做系統路徑。
my_path => "/tmp/logstash"

string

name => "Hello world"
name => 'It\'s a beautiful day'

Logstash 插件學習

Logstash必需要有input和output。

input插件

這裏只介紹 stdin、file 和beats 插件

標準輸入:stdin

一個標準輸入配置實例:

input {
    stdin {
        add_field => {"key" => "value"}
        codec => "plain"
        tags  => ["add"]
        type => "stdin"
    }
}

輸出結果:

The stdin plugin is now waiting for input:
hello
{
    "@timestamp" => 2017-06-21T07:34:57.899Z,
      "@version" => "1",
          "host" => "baseos-1",
       "message" => "hello",
          "type" => "stdin",
           "key" => "value",
          "tags" => [
        [0] "add"
    ]
}

參數:

  • add_field:用於向Event中添加字段,hash類型,默認值:{} 。
  • codec:輸入數據以後對數據進行解碼,常見的就是在output指定輸出結果爲rubydebug 格式,string類型,默認值:"line"。
  • tags: 能夠在Event中增長標籤,以便於在後續的處理流程中使用,array類型。
  • type:若是採用elasticsearch作store,在默認狀況下將做爲elasticsearch的type,string類型。type字段做爲事件自己的一部分存儲,在kibana中經過type字段進行索引。

讀取文件:file

文件讀取插件主要用來抓取文件的變化信息,將變化信息封裝成Event進程處理或者傳遞。

Logstash使用一個叫FileWatchRuby Gem 庫來監聽文件變化。這個庫支持glob展開文件路勁(只支持絕對路徑,不會自動遞歸目錄),並且會記錄一個隱藏的數據文件來跟蹤被監聽的日誌文件的當前讀取位置(默認這個文件叫.sincedb)。該數據庫文件記錄了每一個被監聽文件的inodemajor numberminor numberpos

一個讀取文件配置實例:

input {
    file {
        path => ["/data/logs/nginx/*.log"]
        exclude => ["/data/logs/nginx/nginx.pid","/data/logs/nginx/error.log"]
        discover_interval => 5
        sincedb_path => "/data/database/logstash/.sincedb_nginx_log"
        sincedb_write_interval => 10
        type => "nginx_log"
        start_position => "beginning"
    }
}

參數:

  • discover_interval:logstash每隔多久去檢查一次被監聽的path路徑下是否有新文件,默認15秒。
  • exclude:不想監聽的文件路徑。
  • close_older:一個已經被監聽的文件,若是超過這個時間沒有新內容更新,則關閉這個文件的句柄,默認3600秒。
  • ignore_older:每次檢查文件列表時,若是一個文件的最後修改時間超過這個值,就忽略這個文件,默認86400秒,一天。
  • sincedb_path:sincedb文件的位置,默認$HOME/.sincedb。
  • sincedb_write_interval:多久寫一次sincedb文件,默認15秒。
  • star_interval:每隔多久檢查一次被監聽文件狀態是否有更新,默認15秒。
  • start_position:從什麼位置開始讀取文件數據,默認是結束位置。「beginning」從頭開始讀取。該選項僅對第一次被監聽的文件起做用,若是sincedb文件已經記錄了這個文件了,那麼logstash依然會從記錄過的pos開始讀取,能夠刪除sincedb文件來讓logstash從頭開始讀取被監聽文件。

詳細參考:https://www.elastic.co/guide/en/logstash/5.0/plugins-inputs-file.html

獲取Nginx日誌,並輸出到標準輸出
[root@ ~]# vim /etc/logstash/conf.d/nginx_access.conf 
input {
    file {
        path => ["/data/logs/nginx/*.log"]
        exclude => ["/data/logs/nginx/nginx.pid","/data/logs/nginx/error.log"]
        discover_interval => 5
        sincedb_path => "/data/database/logstash/.sincedb_nginx_log"
        sincedb_write_interval => 10
        type => "nginx_log"
        start_position => "beginning"
    }
}
output {
    stdout {
        codec => rubydebug
    }
}

測試效果:

[root@baseos-1_192.168.31.140 ~]# logstash -f /etc/logstash/conf.d/nginx_access.conf 
Sending Logstash's logs to /data/logs/logstash which is now configured via log4j2.properties
{
          "path" => "/data/logs/nginx/logstash.wangshenjin.com_access.log",
    "@timestamp" => 2017-06-21T07:10:36.270Z,
      "@version" => "1",
          "host" => "baseos-1",
       "message" => "192.168.31.140 - - [21/Jun/2017:15:10:36 +0800] \"GET / HTTP/1.1\" 200 33 \"-\" \"curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh2/1.4.2\" \"-\"",
          "type" => "nginx_log",
          "tags" => []
}

beats插件

Beats插件用於創建監聽服務,接收Filebeat或者其餘beat發送的Events

filebeat:

filebeat 是基於原先 logstash-forwarder 的源碼改造出來的。換句話說:filebeat 就是新版的 logstash-forwarder,也會是 Elastic Stack 在 shipper 端的第一選擇。

filebeat 配置:

filebeat:
  prospectors:
    -
      paths:
        - /usr/local/nginx/logs/*.com.log
      input_type: log
      document_type: nginx-access
      tail_files: true
output:
  logstash:
    hosts: ["192.168.31.140:5044"]
shipper:
  tags: ["nginx_log"]

logstash 配置:

input {
    beats {
        port => 5044
    }
}
output {
    stdout {
        codec => rubydebug
    }
}

效果:

[root@ conf.d]# logstash -f filebeat.conf           
Sending Logstash's logs to /data/logs/logstash which is now configured via log4j2.properties
{
    "@timestamp" => 2017-06-21T10:49:12.596Z,
        "offset" => 605,
      "@version" => "1",
    "input_type" => "log",
          "beat" => {
        "hostname" => "salt-master",
            "name" => "salt-master",
         "version" => "5.1.1"
    },
          "host" => "salt-master",
        "source" => "/usr/local/nginx/logs/access.log",
       "message" => "192.168.31.1 - - [24/Feb/2017:17:00:59 +0800] \"GET / HTTP/1.1\" 301 184 \"-\" \"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36\"",
          "type" => "nginx-access",
          "tags" => [
        [0] "beats_input_codec_plain_applied"
    ]
}

參數:

  • port:監聽的端口,數值類型,必填字段。
  • host:監聽的IP,默認值爲"0.0.0.0",string類型,非必填。
  • client_inactivity_timeout:多長時間關閉鏈接,默認值60s,數值類型,非必填。
  • ssl:是否啓動SSL,默認值false,布爾類型,非必填。
  • ssl_certificate:證書路徑,string類型,非必填。
    • 若是logstash使用IP訪問,證書裏的subjectAltName字段須要包含logstash的IP,不然報錯:
    • x509: cannot validate certificate for 192.168.1.241 because it doesn't contain any IP SANs
  • ssl_key:SSL祕鑰,string類型,非必填。
  • ssl_key_passphrase:SSL祕鑰密碼,string類型,非必填。
  • ssl_verify_mode:是否定證客戶端,可選值「none」、」peer」、」force_peer」,默認none,非必填。

詳細參考:https://www.elastic.co/guide/en/logstash/5.0/plugins-inputs-beats.html

beats SSL:

這裏採用 easyrsa 生成logstash證書。

若是logstash使用IP訪問,證書裏的subjectAltName字段須要包含logstash的IP。easyrsa簽署證書時,能夠採用--subject-alt-name來添加:

./easyrsa  gen-req logstash_server nopass  # 生成證書籤署文件
./easyrsa --subject-alt-name="IP:192.168.31.140" sign server logstash_server # 簽署證書

Filter插件

grok

Logstash使用grok模塊對任意文本解析並結構化輸出,Logstash默認帶有120中匹配模式。

grok的語法格式爲 %{SYNTAX:SEMANTIC},前面是grok-pattrens中定義的變量,後面能夠自定義變量的名稱, 若是有雙引號""或者中括號[],須要加  進行轉義。

  • SYNTAX 是要匹配的模式,例如3.14匹配 NUMBER 模式,127.0.0.1 匹配 IP 模式。

  • SEMANTIC 是匹配到的文本片斷的標識,例如 「3.14」 能夠是一個時間的持續時間,因此能夠簡單地叫作"duration" ,字符串"55.3.244.1"能夠被標識爲「client」。

因此,grok過濾器表達式能夠寫成: %{NUMBER:duration} %{IP:client}

默認狀況下,全部的SEMANTIC是以字符串的方式保存,若是想要轉換一個SEMANTIC的數據類型,例如轉換一個字符串爲整形,能夠寫成以下的方式: %{NUMBER:num:int}

一個例子,示例日誌以下所示:

55.3.244.1 GET /index.html 15824 0.043

filter 配置以下所示:

filter {
    grok {
        match => {
            "message" => "%{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:duration}"
        }
    }
}

效果以下所示:

55.3.244.1 GET /index.html 15824 0.043
{
      "duration" => "0.043",
       "request" => "/index.html",
    "@timestamp" => 2017-06-22T01:49:27.773Z,
        "method" => "GET",
         "bytes" => "15824",
      "@version" => "1",
          "host" => "baseos-1",
        "client" => "55.3.244.1",
       "message" => "55.3.244.1 GET /index.html 15824 0.043",
          "tags" => []
}
一個nginx日誌例子:

nginx日誌格式:

'$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

filter 配置以下所示:

filter {
    if [type] == "nginx-access-log" {
        grok {
            match => {
                "message" => "%{IPORHOST:remote_addr} - %{USERNAME:remote_user} \[%{HTTPDATE:[@metadata][timestamp]}\] \"%{DATA:request}\" %{INT:status} %{INT
:body_bytes_sent} \"%{DATA:http_referer}\" \"%{DATA:http_user_agent}\" \"%{USERNAME:http_x_forwarded_for}\""
            }
        }
    }
}

效果以下所示:

Sending Logstash's logs to /data/logs/logstash which is now configured via log4j2.properties
{
             "remote_addr" => "192.168.31.130",
                 "request" => "GET / HTTP/1.1",
         "body_bytes_sent" => "33",
                 "message" => "192.168.31.130 - - [22/Jun/2017:13:50:33 +0800] \"GET / HTTP/1.1\" 200 33 \"-\" \"curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.14.0.0 zlib/1.2.3 libidn/1.18 libssh2/1.4.2\" \"-\"",
                    "type" => "nginx-access-log",
                    "tags" => [],
         "http_user_agent" => "curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.14.0.0 zlib/1.2.3 libidn/1.18 libssh2/1.4.2",
             "remote_user" => "-",
                    "path" => "/data/logs/nginx/logstash.wangshenjin.com_access.log",
              "@timestamp" => 2017-06-22T05:50:34.860Z,
            "http_referer" => "-",
                "@version" => "1",
                    "host" => "baseos-1",
    "http_x_forwarded_for" => "-",
                  "status" => "200"
}

message是每段讀進來的日誌,IPORHOST、USERNAME、HTTPDATE等都是patterns/grok-patterns中定義好的正則格式名稱,對照日誌進行編寫。

logstash 默認自帶120種正則格式,參考:https://github.com/logstash-plugins/logstash-patterns-core/tree/master/patterns

自定義正則

不少時候,日誌格式都是自定義的,這時候咱們須要根據實際狀況自定義正則。

這裏以 remote_addr、request爲例子,定義三個正則:

IPADDR [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}
REQUESTPATH (?:/[\\A-Za-z0-9$.+!*'(){},~:;=@#% \[\]_<>^\-&?]*)+
REQUESTPRO ([^"]*)

使用上面的自定義正則:

IPADDR [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}
REQUESTPRO ([^"]*)
REQUESTPATH (?:/[\\A-Za-z0-9$.+!*'(){},~:;=@#% \[\]_<>^\-&?]*)+

NGXACCESSLOG %{IPADDR:client_ip} - (%{USERNAME:user}|-) \[%{HTTPDATE:log_timestamp}\] \"%{WORD:request_mathod} %{REQUESTPATH:request_path} %{REQUESTPRO:request_protocol}\" %{NUMBER:http_status} %{NUMBER:body_bytes_sent} (%{GREEDYDATA:http_referer}|-) \"%{DATA:http_user_agent}\" \"%{USERNAME:http_x_forwarded_for}\"

logstash 的配置:

filter {
    grok {
        patterns_dir => "/etc/logstash/conf.d/patterns/mypattern"
        match => {
            "message" => "%{NGXACCESSLOG}"
        }
    }
}

output {
    stdout {
        codec => rubydebug
    }
}

效果以下所示:

{
           "log_timestamp" => "11/Oct/2017:19:32:22 +0800",
         "body_bytes_sent" => "13",
                 "message" => "192.168.31.1 - - [11/Oct/2017:19:32:22 +0800] \"GET /test/t/ HTTP/1.1\" 200 13 \"-\" \"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36\" \"-\"",
                    "type" => "logstash",
          "request_mathod" => "GET",
         "http_user_agent" => "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36",
                    "path" => "/data/logs/nginx/logstash.wangshenjin.com_access.log",
              "@timestamp" => 2017-10-30T04:08:08.412Z,
            "http_referer" => "\"-\"",
                "@version" => "1",
                    "host" => "baseos-1",
    "http_x_forwarded_for" => "-",
            "request_path" => "/test/t/",
               "client_ip" => "192.168.31.1",
             "http_status" => "200",
                    "user" => "-",
        "request_protocol" => "HTTP/1.1"
}

正則調試:https://grokdebug.herokuapp.com

統一管理grok正則:
# 新建一個目錄,統一存放自定義grok正則
[root@ conf.d]# mkdir patterns
[root@ conf.d]# vim patterns/nginx_access
NGINXACCESS %{IPORHOST:remote_addr} - %{USERNAME:remote_user} \[%{HTTPDATE:log_timestamp}\] \"%{DATA:request}\" %{INT:status} %{INT:body_bytes_sent} \"%{DATA:http_referer}\" \"%{DATA:http_user_agent}\" \"%{USERNAME:http_x_forwarded_for}\"

[root@ conf.d]# vim nginx_access.conf
****
filter {
    if [type] == "nginx-access-log" {
        grok {
            patterns_dir => "/etc/logstash/conf.d/patterns"   //設置自定義正則路徑     
            match => {
                "message" => "%{NGINXACCESS}"
            }
        }
    }
}
****

date

格式化日期

date {
        match => [ "log_timestamp", "YYYY-MM-dd HH:mm:ss"]
    }

geoip

藉助GeoIP數據庫來實現顯示請求來源的地理位置,GeoIP 庫能夠根據 IP 地址提供對應的地域信息,包括國別,省市,經緯度等。

獲取GeoIP數據庫

wget http://geolite.maxmind.com/download/geoip/database/GeoLite2-City.mmdb.gz  
gzip -d GeoLite2-City.mmdb.gz

配置:

filter {
***
    geoip {
        source => "client_ip"
        fields => ["city_name" , "country_name" ,"continent_code" , "continent_name" ]
        database => "/etc/logstash/GeoLite2-City.mmdb"
   }
}
參數:
  • source:設置解析IP地址的字段
  • fields:geoip數據庫重須要的字段,主要有:city_name, continent_code, country_code2, country_code3, country_name, dma_code, ip, latitude, longitude, postal_code, region_name,timezone。
  • target:將geoip數據保存到一個字段內
  • database:IP地址數據庫

output插件

redis

output配置以下:

output {
    redis {
        host => "127.0.0.1"
        port => 6000
        password => "8a6715"
        data_type => "channel"
        key => "logstash-%{+yyyy.MM.dd}"
    }
}

redis效果:

127.0.0.1:6000> subscribe logstash-2017.06.22
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "logstash-2017.06.22"
3) (integer) 1
1) "message"
2) "logstash-2017.06.22"
3) "{\"remote_addr\":\"192.168.31.130\",\"request\":\"GET / HTTP/1.1\",\"body_bytes_sent\":\"33\",\"message\":\"192.168.31.130 - - [22/Jun/2017:15:51:22 +0800] \\\"GET / HTTP/1.1\\\" 200 33 \\\"-\\\" \\\"curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.14.0.0 zlib/1.2.3 libidn/1.18 libssh2/1.4.2\\\" \\\"-\\\"\",\"type\":\"nginx-access-log\",\"tags\":[],\"http_user_agent\":\"curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.14.0.0 zlib/1.2.3 libidn/1.18 libssh2/1.4.2\",\"remote_user\":\"-\",\"path\":\"/data/logs/nginx/logstash.wangshenjin.com_access.log\",\"@timestamp\":\"2017-06-22T07:51:23.484Z\",\"http_referer\":\"-\",\"@version\":\"1\",\"host\":\"baseos-1\",\"http_x_forwarded_for\":\"-\",\"status\":\"200\"}"

參數:

  • batch:設爲true,經過發送一條rpush命令,存儲一批的數據
    • 默認爲false:1條rpush命令,存儲1條數據
    • 設爲true以後,1條rpush會發送batch_events條數據或發送batch_timeout秒(取決於哪個先到達)
  • batch_events:一次rpush多少條
    • 默認50條
  • batch_timeout:一次rpush最多消耗多少s
    • 默認5s
  • codec:對輸出數據進行codec,避免使用logstash的separate filter
  • congestion_interval:每多長時間進行一次擁塞檢查(擁塞保護(僅用於data_type爲list)
    • 默認1s,設爲0,表示對每rpush一個,都進行檢測
  • congestion_threshold:list中最多能夠存在多少個item數據,默認是0:表示禁用擁塞檢測
    • 當list中的數據量達到congestion_threshold,會阻塞直到有其餘消費者消費list中的數據
    • 做用:防止OOM
  • data_type
    • list:使用rpush
    • channel:使用publish
  • db:使用redis的數據庫,默認使用0號
  • host:數組
    • eg.["127.0.0.1:6380", "127.0.0.1"]
    • 能夠指定port,會覆蓋全局port
  • port:全局port,默認6379
  • key:list或channel的名字
    • 支持動態key,例如:logstash-%{type}
  • password:redis密碼,默認不使用密碼
  • reconnect_interval:失敗重連的間隔,默認爲1s
  • timeout:鏈接超時,默認5s

elasticsearch

output配置以下:

output {
        elasticsearch {
            hosts => ["192.168.1.147:9200","192.168.1.151:9200"]
            index  => "nginx-access-log-%{+YYYY.MM.dd}" #定義index pattern
        }
    }

參數:

  • hosts:elasticsearch服務列表
    • Default value is ["127.0.0.1"]
    • Value type is string
  • action:指定es的行爲,index, delete, create, update
    • Default value is "index":index a document(該document就是一個來自於logstash的event)
    • delete:經過id刪除一個document(須要指定document_id)
    • create:index a document(若是該document已經在index中存在,則失敗)
    • update:經過id更新一個document
  • index:指定文檔索引,支持字符擴展%{foo}
    • Value type is string
    • Default value is "logstash-%{+YYYY.MM.dd}"
    • 便於刪除老數據
    • 在語法解析的時候,看到+號開頭的,會自動認爲後面是時間格式,嘗試用時間格式來解析後續字符串。因此,以前處理過程當中不要給自定義的字段起一個+號開頭的名字
    • 索引名中不能有大寫字母
    • 有時也會自定義爲:logstash-%{servicename}-%{+YYYY.MM.dd}
  • cacert:驗證server合法性的.cer或.pem文件路徑
    • Value type is path
    • There is no default value for this setting.
  • codec:用於輸出數據以前對數據 進行解碼的的編解碼器,而不須要一個單獨的LogStash過濾器。
    • Value type is codec
    • 默認值:"plain"
  • document_id:文檔索引ID,用來覆蓋es中現有相同ID文檔
    • Value type is string
    • There is no default value for this setting.
  • document_type:文檔索引類型,支持字符擴展%{foo},不設置文檔類型,文檔類型會被設置爲logs
    • Value type is string
    • There is no default value for this setting.
  • user:進入es cluster的用戶
  • password:進入es cluster的密碼
  • timeout:Set the timeout for network operations and requests sent Elasticsearch. If a timeout occurs,the request will be retried.

  • flush_size:默認500,logstash攢夠500條數據再一次性向es發送。從5.0開始,flush_size值不能超過batch_size,否者以batch_size爲批量發送的大小
    • Value type is number
    • Default value is 500
  • idle_flush_time:默認1s,若是1s內沒攢夠500條仍是會一次性將攢的數據發出去給es
  • ssl:開啓SSL與ES集羣通訊,未指定該參數,是否啓動SSL將由ES的URL決定,若是顯式禁用SSL,在主機中給出一個HTTPS URL,該插件也將拒絕啓動。
    • Value type is boolean
    • There is no default value for this setting.

詳細參考:https://www.elastic.co/guide/en/logstash/5.0/plugins-outputs-elasticsearch.html

相關文章
相關標籤/搜索