Docker Provideredit

Provides inventory information from Docker. The available keys are:

Key Type Description

docker.id

string

ID of the container

docker.cmd

string

Arg path of container

docker.name

string

Name of the container

docker.image

string

Image of the container

docker.labels

string

Labels of the container

docker.ports

string

Ports of the container

docker.paths

object

Object of paths for the container

docker.paths.log

string

Log path of the container

For example, the Docker provider provides the following inventory:

[
    {
       "id": "1",
       "mapping:": {"id": "1", "paths": {"log": "/var/log/containers/1.log"}},
       "processors": {"add_fields": {"container.name": "my-container"}}
    },
    {
        "id": "2",
        "mapping": {"id": "2", "paths": {"log": "/var/log/containers/2.log"}},
        "processors": {"add_fields": {"container.name": "other-container"}}
    }
]

Elastic Agent automatically prefixes the result with docker:

---
[
    {"docker": {"id": "1", "paths": {"log": "/var/log/containers/1.log"}}},
    {"docker": {"id": "2", "paths": {"log": "/var/log/containers/2.log"}},
]
---

To set the log path dynamically in the configuration, use a variable in the Elastic Agent policy to return path information from the provider:

inputs:
  - id: "logfile-${docker.paths.log}"
    type: logfile
    path: "${docker.paths.log}"

The policy generated by this configuration looks like:

inputs:
  - id: "logfile-/var/log/containers/1.log"
    type: logfile
    path: "/var/log/containers/1.log"
    processors:
      - add_fields:
          container.name: my-container
  - id: "logfile-/var/log/containers/2.log"
    type: logfile
    path: "/var/log/containers/2.log"
    processors:
      - add_fields:
          container.name: other-container