# Сбор логов кластера Elasticsearch и audit logging из контейнеров

**URL:** <https://discuss.elastic.co/t/elasticsearch-audit-logging/253296>\
**Category:** Вопросы на русском языке\
**Created:** [October 26, 2020, 11:24am UTC](https://discuss.elastic.co/t/elasticsearch-audit-logging/253296 "2020-10-26T11:24:43Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Sergei\_Frolov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/sergei_frolov/32/47922_2.png) [@Sergei\_Frolov](https://discuss.elastic.co/u/Sergei_Frolov)\
**Post date:** [October 26, 2020, 11:24am UTC](https://discuss.elastic.co/t/elasticsearch-audit-logging/253296/1 "2020-10-26T11:24:43Z")

</div>

Добрый день! Кластер Elasticsearch запущен из docker-compose. Посоветуйте, возможно ли собирать логи кластера и логи audit logging из контейнеров с помощью Filebeat? Или стоит пробрасывать логи наружу и собирать традиционным способом?

---

<div class="post-metadata">

**Author:** ![Slavik\_Fursov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/slavik_fursov/32/48975_2.png) [@Slavik\_Fursov](https://discuss.elastic.co/u/Slavik_Fursov)\
**Post date:** [November 16, 2020, 6:11am UTC](https://discuss.elastic.co/t/elasticsearch-audit-logging/253296/2 "2020-11-16T06:11:46Z")

</div>

У меня немного похожая конфигурация.  
Только логи собираю не с кластера ElasticSearch, а с контейнеров web-apps (часть контейнеров - apache, часть - nginx).

Вот так запущен filebeat на каждом хосте:

```auto
version: '3.4'

services:
  webserver:
    image: docker.elastic.co/beats/filebeat:7.10.0
    container_name: filebeat 
    volumes:
      - /etc/filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml:ro
      - /var/lib/docker/containers:/var/lib/docker/containers:ro
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - /var/lib/filebeat:/usr/share/filebeat/data:rw
    restart: unless-stopped
    user: root
    command: filebeat -e -strict.perms=false
    network_mode: bridge

```

`/var/lib/filebeat:/usr/share/filebeat/data` - это чтобы не терялись файлы registry

А вот такой конфиг `filebeat.yml`:

```auto

filebeat.autodiscover:
  providers:
  - type: docker
    templates:
      - condition:
          contains:
            docker.container.name: "nginx-"
        config:
          - module: nginx
            access:
              input:
                type: container
                paths:
                  - /var/lib/docker/containers/${data.docker.container.id}/*.log
                stream: stdout
                fields.host.name: ub20azure
                fields_under_root: true
            error:
              input:
                type: container
                paths:
                  - /var/lib/docker/containers/${data.docker.container.id}/*.log
                stream: stderr
                fields.host.name: ub20azure
                fields_under_root: true

      - condition:
          contains:
            docker.container.name: "apache-"
        config:
          - module: apache
            access:
              input:
                type: container
                paths:
                  - /var/lib/docker/containers/${data.docker.container.id}/*.log
                stream: stdout
                fields.host.name: ub20azure
                fields_under_root: true
            error:
              input:
                type: container
                paths:
                  - /var/lib/docker/containers/${data.docker.container.id}/*.log
                stream: stderr
                fields.host.name: ub20azure
                fields_under_root: true

      - condition:
          equals:
            docker.container.name: "nginx-proxy"
        config:
          - type: container
            include_lines: ['.*\[error\].*']
            exclude_lines: ['.*xmlrpc.php.*']
            paths:
              - /var/lib/docker/containers/${data.docker.container.id}/*.log
            fields.host.name: ub20azure
            fields_under_root: true

#============================= Elastic Cloud ==================================
cloud.id: ******
cloud.auth: ******

#================================ Processors =====================================

# Configure processors to enhance or manipulate events generated by the beat.

processors:
  - add_locale: ~

```

`host.name` приходится устанавливать "вручную" в конфиге, потому что без этой строчки, host.name будет некое эфемерное ID докер-контейнера, которое будет изменяться каждый при пересоздании контейнера. Поэтому:  
`fields.host.name: ub20azure`

---

<div class="post-metadata">

**Author:** ![Slavik\_Fursov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/slavik_fursov/32/48975_2.png) [@Slavik\_Fursov](https://discuss.elastic.co/u/Slavik_Fursov)\
**Post date:** [November 18, 2020, 7:55pm UTC](https://discuss.elastic.co/t/elasticsearch-audit-logging/253296/3 "2020-11-18T19:55:49Z")

</div>

Сегодня наткнулся подсказку в Github:

> <https://github.com/elastic/beats/issues/13777#issuecomment-535112503>
>
> I'm very confused about how host.name, agent.hostname, observer.hostname etc. are supposed to work.
> I have a fairly simple setup where my apps...

Если контейнер с filebeat запускать с `network_mode: host` (или `--net=host` в коммандной строке),  
то host.name будет приходить с хостовой системы, и тогда `fields.host.name` и `fields_under_root` не нужны.

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [December 16, 2020, 7:55pm UTC](https://discuss.elastic.co/t/elasticsearch-audit-logging/253296/4 "2020-12-16T19:55:50Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
