接上篇《centos7.4安装测试logstash6.5.0》继续向下介绍,本篇记录logstash6.5.0启动时指定的.conf配置文件结构说明。
一、配置文件结构
对于要添加到事件处理管道的每种类型的插件,Logstash配置文件都有一个单独的部分。例如:
1 2 3 4 5 6 7 8 9 10 11 |
input { ... } filter { ... } output { ... } |
每个部分都包含一个或多个插件的配置选项。如果指定多个过滤器,则按照它们在配置文件中的上下顺序来依次应用它们。
1.1 插件配置
插件的配置包括插件名称,后跟该插件的设置块。例如,此输入节配置两个文件输入:
1 2 3 4 5 6 7 8 9 10 11 |
input { file { path => "/var/log/messages" type => "syslog" } file { path => "/var/log/apache/access.log" type => "apache" } } |
在此示例中,为每个文件输入配置了两个设置:路径和类型。可以配置的设置因插件类型而异。有关每个插件的信息,请参阅后续文章。
二、值类型
插件可以要求设置的值为特定类型,例如布尔值,列表或散列。支持以下值类型:
1) 数组
2) 列表
3) 布尔值
4) 字节
5) 编解码器
6) 哈希
7) 编号
8) 密码
9) URL
10)路径
11)字符串
2.1 数组
现在,这种类型大多不赞成使用标准类型,例如string定义:list => true属性的插件以便更好地进行类型检查。仍然需要处理不需要类型检查的散列或混合类型的列表。
示例:
1 |
users => [ {id => 1, name => bob}, {id => 2, name => jane} ] |
2.2 列表
不是类型本身,但属性类型可以有。这使得可以键入检查多个值。插件作者可以通过指定:list => true何时声明参数来启用列表检查。
示例:
1 2 |
path => [ "/var/log/messages", "/var/log/*.log" ] uris => [ "http://elastic.co", "http://example.net" ] |
此示例配置path,这是一个string包含三个字符串中每个字符串的元素的列表。它还将uris参数配置为URI列表,如果提供的任何URI无效,则失败。
2.3 布尔
布尔值必须是true或false。请注意,true和false关键字不包含在引号中。
示例:
1 |
ssl_enable => true |
2.4 字节
字节字段是字符串字段,表示有效的字节单位。这是在插件选项中声明特定大小的便捷方式。支持SI(k MGTPEZY)和Binary(Ki Mi Gi Ti Pi Ei Zi Yi)单位。二进制单位基数为1024,SI单位基数为1000。此字段不区分大小写,并接受值和单位之间的空格。如果未指定单位,则整数字符串表示字节数。
示例:
1 2 3 4 |
my_bytes => "1113" # 1113 bytes my_bytes => "10MiB" # 10485760 bytes my_bytes => "100kib" # 102400 bytes my_bytes => "180 mb" # 180000000 bytes |
2.5 编码器
编解码器是用于表示数据的Logstash编解码器的名称。编解码器可用于输入和输出。
输入编解码器提供了一种在数据进入输入之前对其进行解码的便捷方式。输出编解码器提供了一种在数据离开输出之前对数据进行编码的便捷方式。使用输入或输出编解码器无需在Logstash管道中使用单独的过滤器。
示例:
1 |
codec => "json" |
2.6 哈希
哈希是格式中指定的键值对的集合"field1" => "value1"。请注意,多个键值条目由空格而不是逗号分隔。
示例:
1 2 3 4 5 |
match => { "field1" => "value1" "field2" => "value2" ... } |
2.7 编号
数字必须是有效的数值(浮点或整数)。
示例:
1 |
port => 33 |
2.8 密码
密码是具有单个值但未记录或打印的字符串。
示例:
1 |
my_password => "password" |
2.9 URL
URI可以是完整的URL,如http://elastic.co/,也可以是像foobar这样的简单标识符。如果URI包含密码,例如http:// user:pass@example.net,则不会记录或打印URI的密码部分。
示例:
1 |
my_uri => "http://foo:bar@example.net" |
2.10 路径
路径是表示有效操作系统路径的字符串。
示例:
1 |
my_path => "/tmp/logstash" |
2.11 字符串
字符串必须是单个字符序列。请注意,字符串值用引号括起来,可以是double或single。
三、转义序列
默认情况下,不启用转义序列。如果您希望在带引号的字符串中使用转义序列,则需要config.support_escapes: true在您的字符串中设置 logstash.yml。何时true,引用的字符串(double和single)将进行此转换:
文本 | 结果 |
---|---|
\r | 回车(ASCII 13) |
\n | 换行(ASCII 10) |
\t | tab(ASCII 9) |
\\ | 反斜杠(ASCII 92) |
\" | 双引号(ASCII 34) |
\' | 单引号(ASCII 39) |
示例:
1 2 |
name => "Hello world" name => 'It\'s a beautiful day' |
四、注释
注释与perl,ruby和python中的注释相同。注释以#字符开头,不需要位于一行的开头。例如:
1 2 3 4 5 |
# this is a comment input { # comments can appear at the end of a line, too # ... } |
参考相关文档:
1 2 3 4 5 |
logstash文档首页: https://www.elastic.co/guide/en/logstash/current/index.html logstash配置文件结构: https://www.elastic.co/guide/en/logstash/current/configuration-file-structure.html |