Docker - filebeat autodiscovery

Przy pomocy beatów od elasticka i opcji autodiscovery mamy możliwość monitorowania kontenerów z poziomu hosta bez niepotrzebnej ingerencji do środka samych kontenerów. Autodoscoverer podczas startu beat'a skanuje odpalone kontenery i przypisuje im odpowiedni config.

Konfiguracja filebeata

Do głównej konfiguracji filebeat.yml dodajemy wpis (w tym przypadku dla nginx'a):

filebeat.autodiscover:
  providers:
    - type: docker
      templates:
        - condition.contains:
            docker.container.image: nginx
          config:
            - module: nginx
              access:
                input:
                  type: container
                  paths:
                    - "/var/lib/docker/containers/${data.docker.container.id}/*.log"
              error:
                input:
                  type: container
                  paths:
                    - "/var/lib/docker/containers/${data.docker.container.id}/*.log"

Filebeat będzie wyszukiwał logów do każdego kontenera zbudowanego z obrazu nginxa i podpinał do niego moduł "nginx".

Parametry, po których możemy wyszukiwać konkretne kontenery, jest oczywiście więcej, oto kilka przykładowych:

host
port
docker.container.id
docker.container.name
docker.container.labels

Jeżeli używamy docker-compose musimy dodać jeszcze wpis o logging'u do configu:

nginx:
    image: nginx:alpine
    ports:
      - 80:80
    .
    .some config
    .
    logging:
      driver: "json-file"
      options:
        max-size: 10m
        max-file: "3"
        labels: "production_status"
        env: "os"

Linki

Autodiscoveredit,
Docker-compose logging.

michal

Read more posts by this author.

/dev/null