部署ELK日志分析系统3-Logstash

1. Logstash简介

Logstash 是开源的服务器端数据处理管道,能够处理每秒几万条的日志,可以同时从多个来源采集数据,过滤、分析、丰富、统一格式然后将数据发送到ElasticSearch中。

1.1 结构图

Logstash结构图

1.2 名词解释

Logstash 的事件(event)处理流水线有三个主要角色完成:inputs –> filters –> outputs:

  • inputs :接收数据的输入,常用:File、Syslog、Redis、Filebeats、TCP、JDBC
  • filters :数据处理与转换,常用:Grok、Mutate、Drop、Clone、Geoip
  • outputs:数据的输出,常用:Elasticsearch、File

2. 启动参数与配置

2.1 常用启动参数

  • -e:默认参数运行,input {stdin { }} output {stdout { }}
  • -f:指定配置文件运行,bin/logstash -f /etc/logstash.conf
  • -t:测试 Logstash 读取到的配置文件语法是否能正常解析
  • -l:输出日志配置,bin/logstash -l logs/logstash.log
  • -w:运行 filter 和 output 的 pipeline 线程数量,默认是 CPU 核数
  • -b:pipeline 线程执行具体的 filter 和 output 函数之前,最多能累积的日志条数,默认是 125 条
  • -u:pipeline 线程在打包批量日志的时候,最多等待几毫秒,默认是 5ms
  • -P:自定义插件,bin/logstash -P /path/plugins
  • –verbose:打印日志
  • –debug:打印调试日志

2.2 常用配置

logstash相关配置文件:

  • jvm.options:修改jvm的相关参数,比如修改占用内存等
# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space
-Xms4g
-Xmx8g
  • logstash.yml:修改logstash运行参数,比如node.name、path.data、pipeline.workers等
node.name: logstash-1  #节点名称,便于识别
path.data:   #持久化存储数据的文件夹,默认是LOGSTASH_HOME/data
path.config: #pipeline配置文件的目录
path.log:    #pipeline日志文件的目录
pipeline.workers: 8 #pipeline的线程数,默认为CPUhesu
pipeline.batch.size/delay: #设定批量处理数据的数据和延迟
queue.type: #设定队列类型,默认是memory
queue.max_bytes: #队列总容量,默认是1024mb
  • log4j2.properties:修改日志相关配置
  • startup.options:修改创建启动脚本的配置
  • pipelines.yml:修改实例中运行的管道配置信息

2.3 Pipeline语法

引用Logstash Event的属性:

  • 直接引用字段值:if [ua][os] =~ "windows"
  • 在字符串中引用:os => "ua is %{[ua][os]}"

数据类型:

  • 布尔类型Boolean:status => true
  • 数值类型Number:port => 33
  • 字符创类型String:name => "Hello world"
  • 数组Array/List:users => [{id => 1,name => a},{id => 2,name => b}]
  • 哈希类型Hash:match => { "field1" => "value1" "field2" => "value2" }

表达式操作符:

  • 比较:==、!=、<、>、<=、>=
  • 正则匹配:=~、!~
  • 包含:in、not in
  • 逻辑操作:and、or、nand、xor、!
  • 分组操作:()

2.4 实例配置

input { 												#输入
  tcp { 												#接收TCP数据输入
    mode => "server" 									#服务器模式
    host => "0.0.0.0" 								 	#监听地址
    port => 4567 										#监听端口
    codec => json_lines 								#编码器
	add_field => {"log_source" =>"tcp"}					#增加字段
  }
  beats {												#接收beats数据输入
    port => 5044
    codec => "json"
    add_field => {"log_source" =>"beat"}
  }
}

filter {												#数据过滤
  if [log_source] == "beat" {
    json {
      source => "message"
    }
    mutate {
      remove_field => "type"
    }
  }
}

output {
  if [log_source] == "beat" { 
    if "xxx" in [type]{
      elasticsearch {									#输出数据
        hosts => ["192.168.1.11:9200","192.168.1.12:9200"]
        index => "nginx-xxx-%{+YYYY.MM}"
      }
    } else if "yyy" in [type] {
      elasticsearch {
        hosts => ["192.168.1.11:9200","192.168.1.12:9200"]
        index => "nginx-yyy-log-%{+YYYY.MM}"
      }
    } 
  } 
}

3. 常用插件

3.1 输入插件

文件读取插件: 用来抓取文件的变化信息,将变化信息封装成Event进程处理或者传递

参数类型默认值描述
add_fieldhash{}用于向Event中添加字段
close_oldernumber3600设置文件多久秒内没有更新就关掉对文件的监听
codecstring“plain”输入数据之后对数据进行解码
delimiterstring“\n”文件内容的行分隔符,默认按照行进行Event封装
discover_intervalnumber15间隔多少秒查看一下path匹配对路径下是否有新文件产生
enable_metricbooleantrue
excludearraypath匹配的文件中指定例外,如:path => “/var/log/“;exclude =>”.gz”
idstring区分两个相同类型的插件,比如两个filter,在使用Monitor API监控是可以区分,建议设置上ID
ignore_oldernumber忽略历史修改,如果设置3600秒,logstash只会发现一小时内被修改过的文件,一小时之前修改的文件的变化不会被读取,如果再次修改该文件,所有的变化都会被读取,默认被禁用
max_open_filesnumberlogstash可以同时监控的文件个数(同时打开的file_handles个数),如果你需要处理多于这个数量多文件,可以使用“close_older”去关闭一些文件
patharray必须设置项,用于匹配被监控的文件,如“/var/log/.log”或者“/var/log//.log”,必须使用绝对路径
sincedb_pathstring文件读取记录,必须指定一个文件而不是目录,文件中保存没个被监控的文件等当前inode和byteoffset,默认存放位置“$HOME/.sincedb*”
sincedb_write_intervalnumber15间隔多少秒写一次sincedb文件
start_position“beginning”,“end”” end”从文件等开头还是结尾读取文件内容,默认是结尾,如果需要导入文件中的老数据,可以设置为“beginning”,该选项只在第一次启动logstash时有效,如果文件已经存在于sincedb的记录内,则此配置无效
stat_intervalnumber1间隔多少秒检查一下文件是否被修改,加大此参数将降低系统负载,但是增加了发现新日志的间隔时间
tagsarray可以在Event中增加标签,以便于在后续的处理流程中使用
typestringEvent的type字段,如果采用elasticsearch做store,在默认情况下将作为elasticsearch的type
file {
    path => ["/var/log/*.log"]
    type => "system"
    start_position => "beginning"
  }

Beats插件: 建立监听服务,接收Filebeat或者其他beat发送的Events

参数类型默认值描述
cipher_suitesarray密码加密算法列表,根据优先级排序
client_inactivity_timeoutnumber60多长时间之后关闭空闲的连接
codecstring“plain”输入数据之后对数据进行解码
enable_metricbooleantrue
hoststring“0.0.0.0”监听的IP地址
idstring区分两个相同类型的插件,比如两个filter,在使用Monitor API监控是可以区分,建议设置上ID
include_codec_tagbooleantrue
portnumber必须设置项,监听服务监听的端口
sslbooleanfalse是否启用ssl
ssl_certificatestringssl证书路径
ssl_certificate_authoritiesarray[]定义证书文件或者路径列表,当“ssl_verify_mode”被设置为“peer”或者“force_peer”时有效
ssl_handshake_timeoutnumber10000间隔多少毫秒ssl握手超时
ssl_keystringssl密钥
ssl_key_passphrasestringssl密钥密码
ssl_verify_mode“none”、”peer”、”force_peer”none
tagsarray可以在Event中增加标签,以便于在后续的处理流程中使用
tls_max_versionnumber1.2Themaximum TLS version allowed for the encrypted connections. The value must bethe one of the following: 1.0 for TLS 1.0, 1.1 for TLS 1.1, 1.2 for TLS 1.2
tls_min_versionnumber1Theminimum TLS version allowed for the encrypted connections. The value must beone of the following: 1.0 for TLS 1.0, 1.1 for TLS 1.1, 1.2 for TLS 1.2
beats {	
    port => 5044
    codec => "json"
    add_field => {"log_source" =>"beat"}
  }

TCP监听插件: 两种工作模式,“Client”和“Server”,分别用于发送网络数据和监听网络数据

参数类型默认值描述
add_fieldhash{}用于向Event中添加字段
codecstring“plain”输入数据之后对数据进行解码
enable_metricbooleantrue
hoststring“0.0.0.0”监听的IP地址
idstring区分两个相同类型的插件,比如两个filter,在使用Monitor API监控是可以区分,建议设置上ID
mode“server”、“client”“server”“server”监听“client”的连接请求,“client”连接“server”
portnumber必须设置项,“server”模式时指定监听端口,“client”模式指定连接端口
proxy_protocolbooleanfalseProxyprotocol support, only v1 is supported at this time
ssl_certstringssl证书路径
ssl_enablebooleanfalse是否启用ssl
ssl_extra_chain_certs
ssl_keystringssl密钥
ssl_key_passphrasestringssl密钥密码
ssl_verify
tagsarray可以在Event中增加标签,以便于在后续的处理流程中使用
typestringEvent的type字段,如果采用elasticsearch做store,在默认情况下将作为elasticsearch的type
 tcp {  
    mode => "server"  
    host => "0.0.0.0"  
    port => 4567  
    codec => json_lines  
	add_field => {"log_source" =>"tcp"} 
  }

Redis读取插件: 读取Redis中缓存的数据信息

参数类型默认值描述
add_fieldhash{}用于向Event中添加字段
batch_countnumber125使用redis的batch特性,需要redis2.6.0或者更新的版本
codecstring“plain”输入数据之后对数据进行解码
data_typelist,channel, pattern_channel必须设置项,根据设置不同,订阅redis使用不同的命令,依次是:BLPOP、SUBSCRIBE、PSUBSCRIBE,需要注意的是“channel”和“pattern_channel”是广播类型,相同的数据会同时发送给订阅了该channel的logstash,也就是说在logstash集群环境下会出现数据重复,集群中的每一个节点都将收到同样的数据,但是在单节点情况
dbnumber0指定使用的redis数据库
enable_metricbooleantrue
hoststring127.0.0.1redis服务地址
idstring区分两个相同类型的插件,比如两个filter,在使用Monitor API监控是可以区分,建议设置上ID
keystring必须设置项,reidslist或者channel的key名称
passwordstringredis密码
portnumber6379redis连接端口号
tagsarray可以在Event中增加标签,以便于在后续的处理流程中使用
threadsnumber1
timeoutnumber5redis服务连接超时时间,单位:秒
 redis {
    host => "127.0.0.1"
    port => 6379
    data_type => "list"
    key => "log-list"
  }

Syslog监听插件: 监听操作系统syslog信息

参数类型默认值描述
add_fieldhash{}用于向Event中添加字段
codecstring“plain”输入数据之后对数据进行解码
enable_metricbooleantrue
facility_labelsarray[“kernel”,”user-level”, “mail”, “system”,”security/authorization”, “syslogd”, “lineprinter”, “network news”, “UUCP”, “clock”,”security/authorization”, “FTP”, “NTP”, “logaudit”, “log alert”, “clock”, “local0”,”local1”, “local2”, “local3”, “local4”,”local5”, “local6”, “local7”]Labelsfor facility levels. These are defined in RFC3164.
hoststring“0.0.0.0”监听地址
idstring区分两个相同类型的插件,比如两个filter,在使用Monitor API监控是可以区分,建议设置上ID
localestring区域设置,类似linux的locale,日期格式设置
portnumber514监听端口,Remember that ports less than 1024(privileged ports) may require root to use.
proxy_protocolbooleanfalseProxyprotocol support, only v1 is supported at this time
severity_labelsarray[“Emergency”,”Alert”, “Critical”, “Error”,”Warning”, “Notice”, “Informational”,”Debug”]Labelsfor severity levels. These are defined in RFC3164.
tagsarray可以在Event中增加标签,以便于在后续的处理流程中使用
timezonestring指定时区以便格式化日期
typestringThis is the base class for Logstash inputs. Add a type field to all events handled by this input.
use_labelsbooleantrueUselabel parsing for severity and facility levels.
syslog {
}

3.2 过滤插件

grok正则捕获: 将非结构化数据解析成结构化数据以便于查询的最好工具,非常适合解析syslog,apache log, mysql log,以及一些其他的web log

参数类型默认值描述
add_fieldhash{}用于向Event中添加字段
add_tagarray可以在Event中增加标签,以便于在后续的处理流程中使用
break_on_matchbooleantruematch字段存在多个pattern时,当第一个匹配成功后结束后面的匹配,如果想匹配所有的pattern,将此参数设置为false
enable_metricbooleantrue
idstring区分两个相同类型的插件,比如两个filter,在使用Monitor API监控是可以区分,建议设置上ID
keep_empty_capturesbooleanfalse如果为true,捕获失败的字段奖设置为空值
matcharray{}设置pattern数组: match=> {“message” => [“Duration: %{NUMBER:duration}”,”Speed: %{NUMBER:speed}”]}
named_captures_onlybooleantrueIf true, only store named captures from grok.
overwritearray[]覆盖字段内容: match=> { “message” => “%{SYSLOGBASE} %{DATA:message}” } overwrite=> [ “message” ]
patterns_dirarray[]指定自定义的pattern文件存放目录,Logstash在启动时会读取文件夹内patterns_files_glob 匹配的所有文件内容
patterns_files_globstring“*”用于匹配patterns_dir中的文件
periodic_flushbooleanfalse定期调用filter的flush方法
remove_fieldarray[]从Event中删除任意字段: remove_field=> [ “foo_%{somefield}” ]
remove_tagarray[]删除“tags”中的值: remove_tag=> [ “foo_%{somefield}” ]
tag_on_failurearray[“_grokparsefailure”]当没有匹配成功时,将此array添加到“tags”字段内
tag_on_timeoutstring“_groktimeout”当匹配超时时,将此内容添加到“tags”字段内
timeout_millisnumber30000设置单个match到超时时间,单位:毫秒,如果设置为0,则不启用超时设置
filter {
  grok {
    match => {"message" => "%{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:duration}"}
  }
}

date时间处理插件: 该插件用于时间字段的格式转换,我们可以使用此插件用日志发生时间替换掉默认是时间戳的值。

参数类型默认值描述
add_fieldhash{}用于向Event中添加字段
add_tagarray可以在Event中增加标签,以便于在后续的处理流程中使用
enable_metricbooleantrue
idstring区分两个相同类型的插件,比如两个filter,在使用Monitor API监控是可以区分,建议设置上ID
localestring区域设置,类似linux的locale,日期格式设置
matcharray[]时间字段匹配,可自定多种格式,直到匹配到或者匹配结束,格式:[ field,formats… ],如:match=> [ “logdate”, “MMM dd yyyy HH:mm:ss”, “MMM d yyyy HH:mm:ss”, “ISO8601” ]
periodic_flushbooleanfalse定期调用filter的flush方法
remove_fieldarray[]从Event中删除任意字段: remove_field=> [ “foo_%{somefield}” ]
remove_tagarray[]删除“tags”中的值: remove_tag=> [ “foo_%{somefield}” ]
tag_on_failurearray[“_grokparsefailure”]当没有匹配成功时,将此array添加到“tags”字段内
targetstring“@timestamp”指定match匹配并且转换为date类型的存储位置(字段),默认覆盖到“@timestamp”
timezonestring指定时间格式化的时区

mutate数据修改插件: 提供了丰富的基础类型数据处理能力。可以重命名,删除,替换和修改事件中的字段。

参数类型默认值描述
add_fieldhash{}用于向Event中添加字段
add_tagarray可以在Event中增加标签,以便于在后续的处理流程中使用
converthash将指定字段转换为指定类型,字段内容是数组,则转换所有数组元素,如果字段内容是hash,则不做任何处理,目前支持的转换类型包括:integer,float, string, and boolean.例如: convert=> { “fieldname” => “integer” }
enable_metricbooleantrue
gsubarray类似replace方法,使用指定内容替换掉目标字符串的现有内容,前提是目标字段必须是字符串,否则不做任何处理,例如:[ “fieldname”, “/”, ““, “fieldname2”, “[\?#-]”, “.”],解释:使用“”替换掉“fieldname”中的所有“/”,使用“.”替换掉“fieldname2”中的所有“\”“?”、“#”和“-”
idstring区分两个相同类型的插件,比如两个filter,在使用Monitor API监控是可以区分,建议设置上ID
joinhash使用指定的符号将array字段的每个元素连接起来,对非array字段无效。例如: 使用“,”将array字段“fieldname”的每一个元素连接成一个字符串: join=> { “fieldname” => “,” }
lowercasearray将自定的字段值转换为小写
mergehash合并两个array或者hash,如果是字符串,将自动转换为一个单元素数组;将一个array和一个hash合并。例如: 将”added_field”合并到”dest_field”: merge=> { “dest_field” => “added_field” }
periodic_flushbooleanfalse定期调用filter的flush方法
remove_fieldarray[]从Event中删除任意字段: remove_field=> [ “foo_%{somefield}” ]
remove_tagarray[]删除“tags”中的值: remove_tag=> [ “foo_%{somefield}” ]
renamehash修改一个或者多个字段的名称。例如: 将”HOSTORIP”改名为”client_ip”: rename=> { “HOSTORIP” => “client_ip” }
replacehash使用新值完整的替换掉指定字段的原内容,支持变量引用。例如: 使用字段“source_host”的内容拼接上字符串“: My new message”之后的结果替换“message”的值: replace=> { “message” => “%{source_host}: My new message” }
splithash按照自定的分隔符将字符串字段拆分成array字段,只能作用于string类型的字段。例如: 将“fieldname”的内容按照“,”拆分成数组: split=> { “fieldname” => “,” }
striparray去掉字段内容两头的空白字符。例如: 去掉“field1”和“field2”两头的空格: strip=> [“field1”, “field2”]
updatehash更新现有字段的内容,例如: 将“sample”字段的内容更新为“Mynew message”: update=> { “sample” => “My new message” }
uppercasearray将字符串转换为大写

JSON插件: 用于解码JSON格式的字符串

参数类型默认值描述
add_fieldhash{}用于向Event中添加字段
add_tagarray可以在Event中增加标签,以便于在后续的处理流程中使用
enable_metricbooleantrue
idstring区分两个相同类型的插件,比如两个filter,在使用Monitor API监控是可以区分,建议设置上ID
periodic_flushbooleanfalse定期调用filter的flush方法
remove_fieldarray[]从Event中删除任意字段: remove_field=> [ “foo_%{somefield}” ]
remove_tagarray[]删除“tags”中的值: remove_tag=> [ “foo_%{somefield}” ]
skip_on_invalid_jsonbooleanfalse是否跳过验证不通过的JSON
sourcestring必须设置项,指定需要解码的JSON字符串字段
tag_on_failurearray[“_grokparsefailure”]当没有匹配成功时,将此array添加到“tags”字段内
targetstring解析之后的JSON对象所在的字段名称,如果没有,JSON对象的所有字段将挂在根节点下
filter {
    json {
        source => "message"
        target => "jsoncontent"
    }
}

elasticsearch查询过滤插件: 用于查询Elasticsearch中的事件,可将查询结果应用于当前事件中

参数类型默认值描述
add_fieldhash{}用于向Event中添加字段
add_tagarray可以在Event中增加标签,以便于在后续的处理流程中使用
ca_filestringSSL Certificate Authority file path
enable_sortbooleantrue是否对结果进行排序
fieldsarray{}从老事件中复制字段到新事件中,老事件来源于elasticsearch(用于查询更新)
hostsarray[“localhost:9200”]elasticsearch服务列表
indexstring“”用逗号分隔的elasticsearch索引列表,如果要操作所有所有使用“_all”或者“”,保存数据到elasticsearch时,如果索引不存在会自动以此创建
passwordstring密码
periodic_flushbooleanfalse定期调用filter的flush方法
querystring查询elasticsearch的查询字符串
remove_fieldarray[]从Event中删除任意字段: remove_field=> [ “foo_%{somefield}” ]
remove_tagarray[]删除“tags”中的值: remove_tag=> [ “foo_%{somefield}” ]
result_sizenumber1查询elasticsearch时,返回结果的数量
sortstring“@timestamp:desc”逗号分隔的“:”列表,用于查询结果排序
sslbooleanfalseSSL
tag_on_failurearray[“_grokparsefailure”]当没有匹配成功时,将此array添加到“tags”字段内
userstring用户名

3.2 输出插件

ElasticSearch输出插件: 用于将事件信息写入到Elasticsearch中

参数类型默认值描述
absolute_healthcheck_pathbooleanfalse当配置了“healthcheck_path”时,决定elasticsearch健康检查URL是否按照绝对路径配置。
absolute_sniffing_pathbooleanfalse当配置了“sniffing_path”时,决定elasticsearch的sniffing访问路径配置。
actionstring“index” 对elasticsearch的操作类型,可用的操作类型: index:索引Logstash事件数据到elasticsearch; delete:根据id删除文档,id必须指定; delete:根据id删除文档,id必须指定; update:根据id更新文档
cacertstring.cer或者.pem证书文件路径,使用证书进行elasticsearch认证
codecstring“plain”输入数据之后对数据进行解码
doc_as_upsertbooleanfalse使update启用upsert模式,即文档不存在时创建新文档
document_idstringelasticsearch中的文档id,用来覆盖已经保存到elasticsearch中的文档
document_typestring指定存入elasticsearch中的文档的type,没有指定的情况下会使用Event信息中的“type”字段的值作为elasticsearch的type
enable_metricbooleantrue
failure_type_logging_whitelistarray[]elasricsearch报错白名单,白名单的异常信息不会被记入logstash的log中
healthcheck_pathstring“/”elasricsearch检查状态检查路径
hostsstring[//127.0.0.1]elasticsearch服务地址列表,如果配置多个将启用负载均衡
idstring区分两个相同类型的插件,比如两个filter,在使用Monitor API监控是可以区分,建议设置上ID
idle_flush_timenumber1间隔多长时间将数据输出到elasticsearch中一次,主要用于较慢的事件
indexstring“logstash-%{+YYYY.MM.dd}” 指定elasticsearch存储数据时的所有名称,支持变量引用,比如你可以按天创建索引,方便删除历史数据或者查询制定范围内的数据
keystorestring用于指定密钥库路径,可以是.jks或者.p12
keystore_passwordstring密钥库密码
manage_templatebooleantrue是否启用elasticsearch模版,Logstash自带一个模版,但是只有名称匹配“logstash-*”的索引才会应用该默版
parametershash添加到elasticsearch URL后面的参数键值对
parentstring“nil”为文档子节点指定父节点的id
passwordstringelasticsearch集群访问密码
pathstring当设置了elasticsearch代理时用此参数从定向HTTP API,如果“hosts”中已经包含此路径,则不需要设置
pipelinestring“nil”设置Event管道
pool_maxnumber1000elasticsearch最大连接数
pool_max_per_routenumber100每个“endpoint”的最大连接数
proxystring代理URL
resurrect_delaynumber5检查挂掉的“endpoint”是否恢复正常的频率
retry_initial_intervalnumber2设置批量重试的时间间隔,重试到 “retry_max_interval”次
retry_max_intervalnumber64Setmax interval in seconds between bulk retries.
retry_on_conflictnumber1Thenumber of times Elasticsearch should internally retry an update/upserteddocument
routingstring指定Event路由
scriptstring“”设置“scriptedupdate”模式下的脚本名称
script_langstring“painless”设置脚本语言
script_type“inline”、“indexed”、 “file”[“inline”]Definethe type of script referenced by “script” variable inline :”script” contains inline script indexed : “script” containsthe name of script directly indexed in elasticsearch file : “script”contains the name of script stored in elasticseach’s config directory
script_var_namestring“event”Setvariable name passed to script (scripted update)
scripted_upsertbooleanfalseifenabled, script is in charge of creating non-existent document (scriptedupdate)
sslbooleanfalse是否启用ssl
templatestring设置自定义的默版存放路径
template_namestring“logstash”设置使用的默版名称
template_overwritebooleanfalse是否始终覆盖现有模版
timeoutnumber60网络超时时间
truststorestring“:truststore”或者“:cacert”证书库路径
truststore_passwordstring证书库密码
userstring“”elasticsearch用户名
validate_after_inactivitynumber10000间隔多长时间保持连接可用
versionstring存入elasticsearch的文档的版本号
version_type“internal”、“external”、 “external_gt”、 “external_gte”、“force”
workersstring1whenwe no longer support the :legacy type This is hacky, but it can only be herne
output {
    elasticsearch {
        hosts => ["127.0.0.1:9200"]
        index => "filebeat-%{+yyyy.MM.dd}"
        template_overwrite => true
    }
}

Redis输出插件: 将Event写入Redis中进行缓存,可以使用Redis作为buffer使用

参数类型默认值描述
batchbooleanfalse是否启用redis的batch模式,仅在data_type=”list”时有效
batch_eventsnumber50batch大小,batch达到此大小时执行“RPUSH”
batch_timeoutnumber5batch超时时间,超过这个时间执行“RPUSH”
congestion_intervalnumber1间隔多长时间检查阻塞,如果设置为0,则没个Event检查一次
congestion_thresholdnumber0
data_type“list”、“channel”存储在redis中的数据类型,如果使用“list”,将采用“RPUSH”操作,如果是“channel”,将采用“PUBLISH”操作
dbnumber0使用的redis数据库编号
hostarray[“127.0.0.1”]redis服务列表,如果配置多个,将随机选择一个,如果当前的redis服务不可用,将选择下一个
keystringThename of a Redis list or channel. Dynamic names are valid here, forexample logstash-%{type}.
passwordstringredis服务密码
portnumber6379redis服务监听端口
reconnect_intervalnumber1连接失败时的重连间隔
shuffle_hostsbooleantrueShufflethe host list during Logstash startup.
timeoutnumber5redis连接超时时间
workersnumber1whenwe no longer support the :legacy type This is hacky, but it can only be herne

File输出插件: 用于将Event输出到文件内

参数类型默认值描述
create_if_deletedbooleantrue如果目标文件被删除,则在写入事件时创建新文件
dir_modenumber-1设置目录的访问权限,如果为“-1”,使用操作系统默认的访问权限
file_modenumber-1设置文件的访问权限,如果为“-1”,使用操作系统默认的访问权限
filename_failurestring“_filepath_failures”如果指定的文件路径无效,这会在目录内创建这个文件并记录数据
flush_intervalnumber2flush间隔
gzipbooleanfalse是否启用gzip压缩
pathstring必须设置项,文件输出路径,如:path =>”./test-%{+YYYY-MM-dd}.txt”
workersstring1whenwe no longer support the :legacy type This is hacky, but it can only be herne
output {
    file {
        path => ...
        codec => line { format => "custom format: %{message}"}
    }
}

TCP插件: 用于TCP将Event输出

参数类型默认值描述
hoststring必须设置项,When mode is server,the address to listen on. When mode is client,the address to connect to.
mode“server”、“client” “client”Modeto operate in. server listens forclient connections, client connectsto a server.
portnumber必须设置项,When mode is server, the port tolisten on. When mode is client, the port to connect to.
reconnect_intervalnumber10连接失败时,进程重新连接的事件间隔
tcp {
    host => ...
    port => ...
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值