使用环境变量

编辑

概述

编辑
  • 您可以通过使用 ${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"
    }
  }
}