@BSH_EYES
Начинающей одмен

Почему Docker контейнер не отправляет логи?

Доброго времени суток, возникла такая проблема. Поднимаю на сервере контейнер, который должен отправлять логи в Graylog. Последний отлично видит подключение, но на него не поступают логи, что с этим можно сделать?
docker_container:
    name: "{{ container_name }}"
    image: "{{ container_image }}"
    state: "{{ container_state | default('started') }}"
    log_driver: "{{ logdriver_type }}"
    log_options: "{{ options_on_logdriver }}"

  vars:
    container_name: nginx
    container_image: nginx:1.17.8
    list_of_deployment_configuration_paths:
       - ./:/etc/nginx/conf.d/
    logdriver_type: syslog
    options_on_logdriver:
      syslog-address: "tcp://ip:port"
      tag: myservice

Так выглядит кусок роли ansible, которым разворачиваю его.
  • Вопрос задан
  • 380 просмотров
Решения вопроса 1
gecube
@gecube
системный администратор, программист... все дела..
1. если у вас грейлог - можете использовать GELF драйвер
2. чтобы грейлог принимал логи - надо настроить т.н. INPUT с соответствующими параметрами - раз, два - разрешить подключения к ним снаружи файрволлом или, если грейлог в контейнере, добавить соответствующие порты к пробросам
3. при прочих равных я рекомендую пользоваться journald драйвером, т.к. он не ломает docker logs команду - можно будет логи смотреть локально + в нем есть еще куча штуковин вроде rate limit, ротации и прочего, что позволяет обеспечить минимальное влияние логов на хостовую систему. А уж из journald можно настроить пересылку в грейлог - как бонус получите сообщение с самой хост машины (будто ее логи никому не интересны)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы