管道的结构

编辑

Logstash 管道配置文件为要添加到事件处理管道的每种插件类型都有一个单独的部分。例如

# This is a comment. You should use comments to describe
# parts of your configuration.
input {
  ...
}

filter {
  ...
}

output {
  ...
}

每个部分包含一个或多个插件的配置选项。 如果您指定多个过滤器,它们将按照它们在配置文件中出现的顺序应用。 如果您指定多个输出,事件将按照它们在配置文件中出现的顺序依次发送到每个目标。

当您准备好在本地计算机之外部署管道时,请使用 pipeline.id 设置将管道配置文件添加到 logstash.yml 中。当您准备好部署多个管道时,请在 pipelines.yml 文件中设置和配置您的管道。

插件配置

编辑

插件配置由插件名称后跟该插件的设置块组成。例如,此输入部分配置了两个文件输入

input {
  http {
    port => 3333
    tags => gateway
  }
  http {
    port => 4444
    tags => billing
  }
}

在此示例中,为每个文件输入配置了两个设置:端口标签

您可以配置的设置因插件类型而异。有关每个插件的信息,请参阅输入插件输出插件过滤器插件编解码器插件

值类型

编辑

插件可能要求设置的值是某种类型,例如布尔值、列表或哈希。支持以下值类型。

数组

编辑

此类型现在大多已被弃用,转而使用标准类型(如 string),插件定义 :list => true 属性以便更好地进行类型检查。它仍然需要处理哈希列表或不需要类型检查的混合类型。

示例

  users => [ {id => 1, name => bob}, {id => 2, name => jane} ]

列表

编辑

本身不是一种类型,但类型可以拥有属性。这使得可以进行多种值的类型检查。插件作者可以通过在声明参数时指定 :list => true 来启用列表检查。

示例

  path => [ "/var/log/messages", "/var/log/*.log" ]
  uris => [ "https://elastic.ac.cn", "http://example.net" ]

此示例将 path(这是一个 string)配置为列表,其中包含三个字符串的每个元素的列表。它还将配置 uris 参数为 URI 列表,如果提供的任何 URI 无效,则会失败。

布尔值

编辑

布尔值必须是 truefalse。 请注意,truefalse 关键字没有用引号引起来。

示例

  ssl_enable => true

字节

编辑

字节字段是表示有效字节单位的字符串字段。这是一种在插件选项中声明特定大小的便捷方法。支持 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

编解码器

编辑

编解码器是用于表示数据的 Logstash 编解码器的名称。编解码器可以在输入和输出中使用。

输入编解码器提供了一种在数据进入输入之前解码数据的便捷方法。 输出编解码器提供了一种在数据离开输出之前编码数据的便捷方法。 使用输入或输出编解码器消除了在 Logstash 管道中使用单独的过滤器的需要。

可在编解码器插件页面找到可用编解码器的列表。

示例

  codec => "json"

哈希

编辑

哈希是以 "field1" => "value1" 格式指定的键值对的集合。请注意,多个键值条目由空格而不是逗号分隔。

示例

match => {
  "field1" => "value1"
  "field2" => "value2"
  ...
}
# or as a single line. No commas between entries:
match => { "field1" => "value1" "field2" => "value2" }

数字

编辑

数字必须是有效的数值(浮点数或整数)。

示例

  port => 33

密码

编辑

密码是具有单个值的字符串,不会记录或打印。

示例

  my_password => "password"

URI 可以是从 https://elastic.ac.cn/ 这样的完整 URL 到 foobar 这样的简单标识符的任何内容。如果 URI 包含密码(例如 http://user:[email protected]),则 URI 的密码部分将不会被记录或打印。

示例

  my_uri => "http://foo:[email protected]"

路径

编辑

路径是表示有效操作系统路径的字符串。

示例

  my_path => "/tmp/logstash"

字符串

编辑

字符串必须是单个字符序列。 请注意,字符串值用引号(双引号或单引号)引起来。

转义序列

编辑

默认情况下,转义序列未启用。 如果要在带引号的字符串中使用转义序列,则需要在 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'

字段引用

编辑

字段引用是一个特殊的 字符串 值,表示事件中字段的路径,例如 @timestamp[@timestamp] 引用顶层字段,或 [client][ip] 访问嵌套字段。 字段引用深入探讨提供了关于字段引用结构的详细信息。 当作为配置选项提供时,字段引用需要用引号引起来,并且特殊字符必须按照与 字符串 相同的规则进行转义。

注释

编辑

注释与 Perl、Ruby 和 Python 中的注释相同。 注释以 # 字符开头,并且不需要位于行的开头。 例如

# this is a comment

input { # comments can appear at the end of a line, too
  # ...
}