[TOC]
### 概览
+ 你可以在配置中使用`${var}`为Logstash插件设置环境变量引用.
+ 在Logstash启动的时候,每个引用都会被替换为环境变量的值.
+ 替换是区分大小写的
+ 引用一个未定义的变量将触发一个Logstash配置错误(不知道这里说的未定义是变量未定义还是变量值未定义,但参考下一条,大概率是变量值未定义.根据后面的示例看,应该是变量值未定义).原文:References to undefined variables raise a Logstash configuration error.
+ 你可以使用`${var:default value}`这种格式来定义一个变量的默认值.Logstash将在环境变量未定义的情况下使用默认值.原文:You can give a default value by using the form ${var:default value}. Logstash uses the default value if the environment variable is undefined.
+ 你可以添加环境变量引用在任何插件选项类型中:string, number, boolean, array, or hash.
+ 环境变量是不可变的(非动态生效).如果你更新了环境变量的值,你需要重启Logstash来让新的变量值生效.
### 示例
下面的示例为你展示如何使用环境变量来设置一些常用的配置选项的值.
#### 设置TCP端口
这是一个使用环境变量设置TCP端口的示例:
```ruby
input {
tcp {
port => "${TCP_PORT}"
}
}
```
现在让我们设置`TCP_PORT`的值:
```ruby
export TCP_PORT=12345
```
Logstash在启动的时候使用下面的配置:
```ruby
input {
tcp {
port => 12345
}
}
```
如果`TCP_PORT`环境变量没有设置,Logstash会返回一个配置错误.
你可以通过指定一个默认值来解决这个问题:
```ruby
input {
tcp {
port => "${TCP_PORT:54321}"
}
}
```
现在,如果变量值未定义Logstash会使用默认值来而不是返回一个配置错误:
```ruby
input {
tcp {
port => 54321
}
}
```
如果定义了环境变量,Logstash会使用指定的值而非默认值.
#### 设置标签的值
这是一个使用变量设置标签值的示例:
```ruby
filter {
mutate {
add_tag => [ "tag1", "${ENV_TAG}" ]
}
}
```
让我们设置`ENV_TAG`的值:
```shell
export ENV_TAG="tag2"
```
Logstash在启动的时候将会使用下面的配置:
```ruby
filter {
mutate {
add_tag => [ "tag1", "tag2" ]
}
}
```
#### 设置文件路径
下面是用环境变量设置日志文件路径的一个示例:
```ruby
filter {
mutate {
add_field => {
"my_path" => "${HOME}/file.log"
}
}
}
```
让我们设置`HOME`的值:
```shell
export HOME="/path"
```
Logstash在启动的时候会使用下面的配置:
```ruby
filter {
mutate {
add_field => {
"my_path" => "/path/file.log"
}
}
}
```
- Emmm
- Logstash简介
- 开始使用Logstash
- 安装Logstash
- 储存你的第一个事件
- 通过Logstash解析日志
- 多个输入和输出插件的混合使用
- Logstash是如何工作的
- 执行模型Execution Model
- 设置并运行Logstash
- Logstash目录布局
- Logstash配置文件
- logstash.yml
- Secrets keystore for secure settings
- 从命令行运行Logstash
- 以服务的方式运行Logstash
- 在Docker中运行Logstash
- 配置容器版Logstash
- Logging
- 关闭Logstash
- 安装X-Pack
- 设置X-Pack
- 升级Logstash
- 使用包管理升级
- 直接下载进行升级
- 升级至6.0
- Upgrading with the Persistent Queue Enabled
- 配置Logstash
- 管道配置文件的结构
- 访问配置中的事件数据和字段
- 在配置中使用环境变量
- Logstash配置示例
- 多管道
- 管道间通信(beta)
- 重载配置文件
- 管理多行事件
- Glob Pattern Support
- Converting Ingest Node Pipelines
- Logstash间通信
- 配置集中式管道管理
- X-Pack Monitoring
- X-Pack Security
- X-Pack Settings
- Field References Deep Dive(深入字段引用)
- 管理Logstash
- 集中式管道管理
- 使用Logstash模块
- 使用Elastic Cloud
- Logstash ArcSight模块