logstash/docs/static/env-vars.asciidoc
Andres Rodriguez ad3b89a2b4
Clarify Env Variable usage for list-type URI params (#15345)
Clarify Env Variable usage for list-type URI params
2023-09-27 17:24:21 -04:00

143 lines
2.9 KiB
Text

[[environment-variables]]
=== Using environment variables
==== Overview
* You can set environment variable references in the configuration for Logstash plugins by using `${var}`.
* At Logstash startup, each reference is replaced by the value of the environment variable.
* The replacement is case-sensitive.
* References to undefined variables raise a Logstash configuration error.
* You can give a default value by using the form `${var:default value}`. Logstash uses the default value if the
environment variable is undefined.
* You can add environment variable references in any plugin option type: string, number, boolean, array, or hash.
* Environment variables for list-type URI parameters can support lists of space-delimited values. Currently, other non-URI based options do not support lists of values. See <<plugin-concepts>>
* Environment variables are immutable. If you update the environment variable, you'll have to restart Logstash to pick up the updated value.
==== Examples
These examples show you how to use environment variables to set the values of some commonly used
configuration options.
===== Setting the TCP port
Here's an example that uses an environment variable to set the TCP port:
[source,ruby]
----------------------------------
input {
tcp {
port => "${TCP_PORT}"
}
}
----------------------------------
Now let's set the value of `TCP_PORT`:
[source,shell]
----
export TCP_PORT=12345
----
At startup, Logstash uses this configuration:
[source,ruby]
----------------------------------
input {
tcp {
port => 12345
}
}
----------------------------------
If the `TCP_PORT` environment variable is not set, Logstash returns a configuration error.
You can fix this problem by specifying a default value:
[source,ruby]
----
input {
tcp {
port => "${TCP_PORT:54321}"
}
}
----
Now, instead of returning a configuration error if the variable is undefined, Logstash uses the default:
[source,ruby]
----
input {
tcp {
port => 54321
}
}
----
If the environment variable is defined, Logstash uses the value specified for the variable instead of the default.
===== Setting the value of a tag
Here's an example that uses an environment variable to set the value of a tag:
[source,ruby]
----
filter {
mutate {
add_tag => [ "tag1", "${ENV_TAG}" ]
}
}
----
Let's set the value of `ENV_TAG`:
[source,shell]
----
export ENV_TAG="tag2"
----
At startup, Logstash uses this configuration:
[source,ruby]
----
filter {
mutate {
add_tag => [ "tag1", "tag2" ]
}
}
----
===== Setting a file path
Here's an example that uses an environment variable to set the path to a log file:
[source,ruby]
----
filter {
mutate {
add_field => {
"my_path" => "${HOME}/file.log"
}
}
}
----
Let's set the value of `HOME`:
[source,shell]
----
export HOME="/path"
----
At startup, Logstash uses the following configuration:
[source,ruby]
----
filter {
mutate {
add_field => {
"my_path" => "/path/file.log"
}
}
}
----