[[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 <> * 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" } } } ----