Используйте logstash в качестве драйвера журнала докеров для сбора журналов

Предисловие

Logstash - это сборщик данных унифицированной обработки журналов с открытым исходным кодом, который принадлежит к L в ELK и широко используется в области сбора журналов.

Драйвером журнала docker по умолчанию является json-файл , каждый контейнер будет генерировать файл /var/lib/docker/containers/containerID/containerID-json.log локально, а драйвер журнала поддерживает расширение. В этой главе в основном объясняется использование logstash Collect. журналы докеров.

Docker не имеет драйвера logstash, но журналы, управляемые gelf, можно собирать с помощью подключаемого модуля ввода gelf программы logstash.

предпосылка

  1. докер
  2. Понимание конфигурации logstash
  3. докер-сочинять

Подготовить файл конфигурации

docker-compose.yml

version: '3.7'

x-logging:
  &default-logging
  driver: gelf
  options:
    gelf-address: "udp://localhost:12201"
    mode: non-blocking
    max-buffer-size: 4m
    tag: "kafeidou.{
   
   {.Name}}"  #配置容器的tag,以kafeidou.为前缀,容器名称为后缀,docker-compose会给容器添加副本后缀,>如 logstash_1

services:

  logstash:
    ports:
      - 12201:12201/udp
    image: docker.elastic.co/logstash/logstash:7.5.1
    volumes:
      - ./logstash.yml:/usr/share/logstash/config/logstash.yml
      - /var/log/logstash:/var/log/logstash
      - ./logstash.conf:/usr/share/logstash/pipeline/logstash.conf

  logstash-worker:
    image: docker.elastic.co/logstash/logstash:7.5.1
    depends_on:
      - logstash
    logging:
      driver: "gelf"
      options:
        gelf-address: "udp://localhost:12201"

logstash.yml

http.host: "0.0.0.0"

logstash.conf

input {
 gelf{
  use_udp => true
  port_tcp => 12202
 }
}

 output {
   file {
        path => "/var/log/logstash/%{+yyyy-MM-dd-HH}/%{container_name}.log"
   }
 }

Поскольку logstash должен иметь права на запись в конфигурации каталога, вы должны быть готовы сохранить каталог журнала и дать разрешение.
Создайте каталог

mkdir /var/log/logstash

Дайте разрешение, здесь для экспериментальной демонстрации, напрямую авторизуйте 777

chmod -R 777 /var/log/logstash

Выполните команду в каталоге файлов docker-compose.yml, logstash.conf и logstash.yml:
docker-compose up -d

[root@master logstash]# docker-compose up -d
WARNING: The Docker Engine you're using is running in swarm mode.

Compose does not use swarm mode to deploy services to multiple nodes in a swarm. All containers will be scheduled on the current node.

To deploy your application across the swarm, use `docker stack deploy`.

Starting logstash_logstash_1 ... done
Starting logstash_logstash-worker_1 ... done

Logstash запускается медленно, а эффект от моего эксперимента составляет около 90 секунд, поэтому для сбора журналов рекомендуется использовать fluentd.

Проверьте каталог журнала, там должен быть соответствующий файл журнала контейнера:

[root@master logstash]# ls /var/log/logstash/
2020-02-16
[root@master logstash]# ls /var/log/logstash/2020-02-16/
logstash_logstash-worker_1.log

Вы также можете скачать мой файл напрямую:

  1. docker-compose.yml
  2. logstash.conf
  3. logstash.yml

подводить итоги

Для технического выбора лучше использовать fluentd, почему?

Fluentd более легкий и гибкий, и в настоящее время принадлежит CNCF, его активность и надежность были улучшены.

Зачем также вводить logstash для сбора журналов докеров?

Если вы уже используете стек технологий ELK в компании или бизнесе, возможно, нет необходимости вводить fluentd, но продолжайте использовать logstash для просмотра журнала докеров. Это в основном обмен, чтобы студенты, которые столкнулись с этой ситуацией Может быть еще один выбор.

Рекомендуемая литература:

Используйте fluentd в качестве драйвера журнала докеров для сбора журналов

Произведено в виде четырех кофейных зерен , воспроизведено, просьба указать источник.

Подпишитесь на общедоступный аккаунт -> [Четыре кофейных зерна] Получите последний контент

Четыре кофейных зерна

рекомендация

отblog.csdn.net/lypgcs/article/details/104352611