Reference variables

edit

Beats settings can reference other settings splicing multiple optionally custom named settings into new values. References use the same syntax as Environment variables do. Only fully collapsed setting names can be referenced to.

For example the filebeat registry file defaults to:

filebeat.registry: ${path.data}/registry

With path.data being an implicit config setting, that is overridable from command line, as well as in the configuration file.

Example referencing es.host in output.elasticsearch.hosts:

es.host: '${ES_HOST:localhost}'

output.elasticsearch:
  hosts: ['http://${es.host}:9200']

Introducing es.host, the host can be overwritten from command line using -E es.host=another-host.

Plain references, having no default value and are not spliced with other references or strings can reference complete namespaces.

These setting with duplicate content:

namespace1:
  subnamespace:
    host: localhost
    sleep: 1s

namespace2:
  subnamespace:
    host: localhost
    sleep: 1s

can be rewritten to

namespace1: ${shared}
namespace2: ${shared}

shared:
  subnamespace:
    host: localhost
    sleep: 1s

when using plain references.