Получение логов из Laravel Horizon, запущенного в докере в супервизоре

Я использую Laravel Horizon для обработки заданий в моем приложении Laravel с помощью Supervisor. Вся установка выполняется на докере в ECS. На хост-узле ECS (управляемом Fargate) у меня работают агенты datadog, которые захватывают stdout / stderr контейнера и помещают его в datadog (так что я могу получить доступ к журналам централизованно).

Я заметил, что я не получаю журналы из обрабатываемых заданий. Даже простой print("test"); в коде задания не попадает в стандартный вывод.

Вот моя установка:

Dockerfile

FROM alpine:3.11

RUN apk add \
        --no-cache \
        --update \
        ...snipped...
        py-pip \
    && pip install supervisor \
    && pip install supervisor-stdout

WORKDIR /app

...snipped...

Определение этого сервиса в yaml выглядит так:

version: '2'

    services:

      my-app-horizon:
        container_name: my-app-horizon
        image: ${DOCKER_IMAGE}
        mem_limit: 1024M
        command: "supervisord -c /etc/supervisor/conf.d/horizon.conf"
        ...snipped...

А вот содержание моего horizon.conf:

[supervisord]
nodaemon=true

[program:horizon]
priority = 100
process_name=%(program_name)s
command=php /app/artisan horizon
autostart=true
autorestart=true
user=apache
stopwaitsecs=3600
stdout_events_enabled=true
stderr_events_enabled=true

[eventlistener:stdout]
priority = 1
command = supervisor_stdout
buffer_size = 100
events = PROCESS_LOG
result_handler = supervisor_stdout:event_handler

Есть идеи, что мне может не хватать? Что я не могу получить логи из заданий, обработанных горизонт в докере через супервизор?


person Latheesan    schedule 18.05.2020    source источник


Ответы (1)


Мой коллега сообщил мне, что, поскольку мы используем докер, мы можем обойти супервизор и просто запустить команду мастера горизонта непосредственно в качестве точки входа в контейнер.

Итак, я удалил все, что связано с супервизором, и мой служебный yaml упрощен до следующего, и журналы поступают в datadog:

version: '2'

    services:

      my-app-horizon:
        container_name: my-app-horizon
        image: ${DOCKER_IMAGE}
        mem_limit: 1024M
        command: "/app/artisan horizon"
        ...snipped...
person Latheesan    schedule 18.05.2020