Type to search.

Using environment variables

Serverless

Elastic Cloud Serverless projects are autoscaled environments, fully managed by Elastic and available on Elastic Cloud.

Availability

  • Generally available

    This functionality is generally available and ready for production usage.

Serverless interfaces and procedures might differ from classic Elastic Stack deployments.

Stack

The Elastic Stack includes Elastic's core products such as Elasticsearch, Kibana, Logstash, and Beats.

Availability

  • Generally available

    This functionality is generally available and ready for production usage.

Unless stated otherwise on the page, this functionality is available when your Elastic Stack is deployed on Elastic Cloud Hosted, Elastic Cloud Enterprise, Elastic Cloud on Kubernetes, and self-managed environments.

This documentation corresponds to the latest patch available for each minor version. If you're not using the latest patch, check the release notes for changes.

  • 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 Cross-plugin concepts and features
  • Environment variables are immutable. If you update the environment variable, you’ll have to restart Logstash to pick up the updated value.
  • References to environment variables in config.string comments are evaluated during configuration parsing, and are therefore discouraged. Remove the $ sign to avoid pipeline loading failures.

These examples show you how to use environment variables to set the values of some commonly used configuration options.

Here’s an example that uses an environment variable to set the TCP port:

Ruby
input {
  tcp {
    port => "${TCP_PORT}"
  }
}

Now let’s set the value of TCP_PORT:

Shell
export TCP_PORT=12345

At startup, Logstash uses this configuration:

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:

Ruby
input {
  tcp {
    port => "${TCP_PORT:54321}"
  }
}

Now, instead of returning a configuration error if the variable is undefined, Logstash uses the default:

Ruby
input {
  tcp {
    port => 54321
  }
}

If the environment variable is defined, Logstash uses the value specified for the variable instead of the default.

Here’s an example that uses an environment variable to set the value of a tag:

Ruby
filter {
  mutate {
    add_tag => [ "tag1", "${ENV_TAG}" ]
  }
}

Let’s set the value of ENV_TAG:

Shell
export ENV_TAG="tag2"

At startup, Logstash uses this configuration:

Ruby
filter {
  mutate {
    add_tag => [ "tag1", "tag2" ]
  }
}

Here’s an example that uses an environment variable to set the path to a log file:

Ruby
filter {
  mutate {
    add_field => {
      "my_path" => "${HOME}/file.log"
    }
  }
}

Let’s set the value of HOME:

Shell
export HOME="/path"

At startup, Logstash uses the following configuration:

Ruby
filter {
  mutate {
    add_field => {
      "my_path" => "/path/file.log"
    }
  }
}