[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模塊