使用环境变量编辑

概述编辑

  • 您可以通过使用 ${var} 在 Logstash 插件的配置中设置环境变量引用。
  • 在 Logstash 启动时,每个引用都会被环境变量的值替换。
  • 替换区分大小写。
  • 对未定义变量的引用会引发 Logstash 配置错误。
  • 您可以使用 ${var:default value} 的形式提供默认值。如果环境变量未定义,Logstash 将使用默认值。
  • 您可以在任何插件选项类型中添加环境变量引用:字符串、数字、布尔值、数组或哈希。
  • 用于列表类型 URI 参数的环境变量可以支持以空格分隔的值列表。目前,其他非基于 URI 的选项不支持值列表。请参阅 跨插件概念和功能
  • 环境变量是不可变的。如果您更新了环境变量,则需要重新启动 Logstash 才能获取更新后的值。

示例编辑

这些示例展示了如何使用环境变量来设置一些常用配置选项的值。

设置 TCP 端口编辑

以下示例使用环境变量来设置 TCP 端口

input {
  tcp {
    port => "${TCP_PORT}"
  }
}

现在让我们设置 TCP_PORT 的值

export TCP_PORT=12345

在启动时,Logstash 将使用以下配置

input {
  tcp {
    port => 12345
  }
}

如果未设置 TCP_PORT 环境变量,Logstash 将返回配置错误。

您可以通过指定默认值来解决此问题

input {
  tcp {
    port => "${TCP_PORT:54321}"
  }
}

现在,如果变量未定义,Logstash 将使用默认值,而不是返回配置错误

input {
  tcp {
    port => 54321
  }
}

如果定义了环境变量,Logstash 将使用为变量指定的值,而不是默认值。

设置标签的值编辑

以下示例使用环境变量来设置标签的值

filter {
  mutate {
    add_tag => [ "tag1", "${ENV_TAG}" ]
  }
}

让我们设置 ENV_TAG 的值

export ENV_TAG="tag2"

在启动时,Logstash 将使用以下配置

filter {
  mutate {
    add_tag => [ "tag1", "tag2" ]
  }
}

设置文件路径编辑

以下示例使用环境变量来设置日志文件的路径

filter {
  mutate {
    add_field => {
      "my_path" => "${HOME}/file.log"
    }
  }
}

让我们设置 HOME 的值

export HOME="/path"

在启动时,Logstash 将使用以下配置

filter {
  mutate {
    add_field => {
      "my_path" => "/path/file.log"
    }
  }
}