Logstash配置文件为要添加到事件处理管道的每种插件都有一个单独的部分,例如:python
# This is a comment. You should use comments to describe # parts of your configuration. input { ... } filter { ... } output { ... }
每一个部分都包含一个或多个插件的配置选项,若是指定多个过滤器,它们将按照配置文件中它们的出现顺序应用。apache
插件的配置由插件名称和插件的设置块组成,例如,这个输入部分配置两个文件输入:json
input { file { path => "/var/log/messages" type => "syslog" } file { path => "/var/log/apache/access.log" type => "apache" } }
在本例中,为每一个文件输入配置了两个设置:路径和类型。ruby
你能够根据插件类型配置不一样的设置,有关每一个插件的信息,请参阅输入插件、输出插件、过滤器插件和编解码器插件。app
插件能够要求设置的值是某种类型,例如boolean、list或hash,支持下列值类型。this
这种类型如今大多不同意使用标准类型,好比string
,使用插件定义:list => true
属性,以便更好地进行类型检查,它仍然须要处理不须要类型检查的hash或混合类型列表。编码
例如:操作系统
users => [ {id => 1, name => bob}, {id => 2, name => jane} ]
它自己不是一个类型,可是属性类型能够有,这使得键入检查多个值成为可能,插件检查能够经过在声明参数时指定:list => true
来启用列表检查。.net
例如:插件
path => [ "/var/log/messages", "/var/log/*.log" ] uris => [ "http://elastic.co", "http://example.net" ]
这个示例配置path
,它是一个包含两个字符串而且每一个元素是string
的列表,它还将uris
参数配置为URI列表,若是提供的任何uri都无效,则会失败。
Boolean必须为true
或false
,注意,true
和false
关键字不包含在引号中。
例如:
ssl_enable => true
Bytes字段是表示有效字节单位的字符串字段,在插件选项中声明特定大小是一种方便的方法,SI(k M G T P E Z Y)和二进制(Ki Mi Gi Ti Pi Ei Zi Yi)单位都支持,二进制单位基于1024,SI单位基于1000,该字段不区分大小写而且接受值和单位之间的空格,若是没有指定单位,则整数字符串表示字节数。
例如:
my_bytes => "1113" # 1113 bytes my_bytes => "10MiB" # 10485760 bytes my_bytes => "100kib" # 102400 bytes my_bytes => "180 mb" # 180000000 bytes
Codec是用来表示数据的Logstash编解码器的名称,编解码器可用于输入和输出。
输入编解码器提供了一种方便的方式解码你的数据在输入以前,输出编解码器提供了一种在数据离开输出以前对其进行编码的方便方法,使用输入或输出编解码器消除了在你的Logstash管道中须要单独的过滤器。
可用的编解码器的列表能够在编解码器插件页找到。
例如:
codec => "json"
Hash是一个键值对的集合,格式为“field1” => “value1”
,注意,多个键值条目用空格而不是逗号分隔。
例如:
match => { "field1" => "value1" "field2" => "value2" ... }
Number必须是有效的数值(浮点数或整数)。
例如:
port => 33
密码是一个不记录或打印的单个值的字符串。
例如:
my_password => "password"
URI能够是完整URL(如http://elastic.co/to
)或简单标识符(如foobar)的任何内容,若是URI包含像http://user:pass@example.net
这样的密码,URI的密码部分将不会被记录或打印。
例如:
my_uri => "http://foo:bar@example.net"
Path是表示有效操做系统路径的字符串。
例如:
my_path => "/tmp/logstash"
String必须是单个字符序列,注意,字符串值用引号括起来,能够是双引号,也能够是单引号。
默认状况下,不启用转义序列,若是你但愿在引号中的字符串中使用转义序列,你将须要在你的logstash.yml
中设置config.support_escapes: true
,当为true
时,双引号字符串(双引号和单引号)将有这样的转换:
文本 | 结果 |
---|---|
\r |
回车(ASCII 13) |
\n |
新行(ASCII 10) |
\t |
制表(ASCII 9) |
\\ |
反斜杠(ASCII 92) |
\" |
双引号(ASCII 34) |
\' |
单引号(ASCII 39) |
例如:
name => "Hello world" name => 'It\'s a beautiful day'
注释与perl、ruby和python中的注释相同,注释以#字符开头,不须要在行首,例如:
# this is a comment input { # comments can appear at the end of a line, too # ... }