Logstash配置文件为要添加到事件处理管道的每种插件都有一个单独的部分,例如:
# This is a comment. You should use comments to describe
# parts of your configuration.
input {...
}filter {...
}output {...
}
每个部分都包含一个或多个插件的配置选项,如果指定多个过滤器,它们将按照配置文件中它们的出现顺序应用。
插件配置
插件的配置由插件名称和插件的设置块组成,例如,这个输入部分配置两个文件输入:
input {file {path => "/var/log/messages"type => "syslog"}file {path => "/var/log/apache/access.log"type => "apache"}
}
在本例中,为每个文件输入配置了两个设置:路径和类型。
你可以根据插件类型配置不同的设置,有关每个插件的信息,请参阅输入插件、输出插件、过滤器插件和编解码器插件。
值类型
插件可以要求设置的值是某种类型,例如boolean、list或hash,支持下列值类型。
Array
这种类型现在大多不赞成使用标准类型,比如string
,使用插件定义:list => true
属性,以便更好地进行类型检查,它仍然需要处理不需要类型检查的hash或混合类型列表。
例如:
users => [ {id => 1, name => bob}, {id => 2, name => jane} ]
Lists
它本身不是一个类型,但是属性类型可以有,这使得键入检查多个值成为可能,插件检查可以通过在声明参数时指定:list => true
来启用列表检查。
例如:
path => [ "/var/log/messages", "/var/log/*.log" ]
uris => [ "http://elastic.co", "http://example.net" ]
这个示例配置path
,它是一个包含两个字符串并且每个元素是string
的列表,它还将uris
参数配置为URI列表,如果提供的任何uri都无效,则会失败。
Boolean
Boolean必须为true
或false
,注意,true
和false
关键字不包含在引号中。
例如:
ssl_enable => true
Bytes
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
Codec是用来表示数据的Logstash编解码器的名称,编解码器可用于输入和输出。
输入编解码器提供了一种方便的方式解码你的数据在输入之前,输出编解码器提供了一种在数据离开输出之前对其进行编码的方便方法,使用输入或输出编解码器消除了在你的Logstash管道中需要单独的过滤器。
可用的编解码器的列表可以在编解码器插件页找到。
例如:
codec => "json"
Hash
Hash是一个键值对的集合,格式为“field1” => “value1”
,注意,多个键值条目用空格而不是逗号分隔。
例如:
match => {"field1" => "value1""field2" => "value2"...
}
Number
Number必须是有效的数值(浮点数或整数)。
例如:
port => 33
Password
密码是一个不记录或打印的单个值的字符串。
例如:
my_password => "password"
URI
URI可以是完整URL(如http://elastic.co/to
)或简单标识符(如foobar)的任何内容,如果URI包含像http://user:pass@example.net
这样的密码,URI的密码部分将不会被记录或打印。
例如:
my_uri => "http://foo:bar@example.net"
Path
Path是表示有效操作系统路径的字符串。
例如:
my_path => "/tmp/logstash"
String
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 commentinput { # comments can appear at the end of a line, too# ...
}