管道结构

编辑

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 可以是完整的 URL(如 https://elastic.ac.cn/)或简单的标识符(如 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
  # ...
}