Configure Elasticsearch index template loading

edit

Configure Elasticsearch index template loading

edit

The setup.template section of the metricbeat.yml config file specifies the index template to use for setting mappings in Elasticsearch. If template loading is enabled (the default), Metricbeat loads the index template automatically after successfully connecting to Elasticsearch.

A connection to Elasticsearch is required to load the index template. If the configured output is not Elasticsearch (or Elasticsearch Service), you must load the template manually.

You can adjust the following settings to load your own template or overwrite an existing one.

setup.template.enabled
Set to false to disable template loading. If this is set to false, you must load the template manually.
setup.template.name
The name of the template. The default is metricbeat. The Metricbeat version is always appended to the given name, so the final name is metricbeat-%{[agent.version]}.
setup.template.pattern

The template pattern to apply to the default index settings. The default pattern is metricbeat. The Metricbeat version is always included in the pattern, so the final pattern is metricbeat-%{[agent.version]}.

Example:

setup.template.name: "metricbeat"
setup.template.pattern: "metricbeat"
setup.template.fields
The path to the YAML file describing the fields. The default is fields.yml. If a relative path is set, it is considered relative to the config path. See the Directory layout section for details.
setup.template.overwrite
A boolean that specifies whether to overwrite the existing template. The default is false. Do not enable this option if you start more than one instance of Metricbeat at the same time. It can overload Elasticsearch by sending too many template update requests.
setup.template.settings

A dictionary of settings to place into the settings.index dictionary of the Elasticsearch template. For more details about the available Elasticsearch mapping options, please see the Elasticsearch mapping reference.

Example:

setup.template.name: "metricbeat"
setup.template.fields: "fields.yml"
setup.template.overwrite: false
setup.template.settings:
  index.number_of_shards: 1
  index.number_of_replicas: 1
setup.template.settings._source

A dictionary of settings for the _source field. For the available settings, please see the Elasticsearch reference.

Example:

setup.template.name: "metricbeat"
setup.template.fields: "fields.yml"
setup.template.overwrite: false
setup.template.settings:
  _source.enabled: false
setup.template.append_fields

A list of fields to be added to the template and Kibana index pattern. This setting adds new fields. It does not overwrite or change existing fields.

This setting is useful when your data contains fields that Metricbeat doesn’t know about in advance. For example, you might want to append fields to the template when you’re using a metricset, such as the HTTP json metricset, and the full data structure is not known in advance.

If append_fields is specified along with overwrite: true, Metricbeat overwrites the existing template and applies the new template when creating new indices. Existing indices are not affected. If you’re running multiple instances of Metricbeat with different append_fields settings, the last one writing the template takes precedence.

Any changes to this setting also affect the Kibana index pattern.

Example config:

setup.template.overwrite: true
setup.template.append_fields:
- name: test.name
  type: keyword
- name: test.hostname
  type: long
setup.template.json.enabled

Set to true to load a JSON-based template file. Specify the path to your Elasticsearch index template file and set the name of the template.

setup.template.json.enabled: true
setup.template.json.path: "template.json"
setup.template.json.name: "template-name
setup.template.json.data_stream: false

If the JSON template is used, the fields.yml is skipped for the template generation.

If the JSON template is a data stream, set setup.template.json.data_stream.