У меня есть приложение rails, работающее через докер. Я запускаю приложение с помощью docker-compose (конфигурация ниже). Все приложение охватывает mysql, redis, rails (включая рабочих sidekiq), nginx (с реагирующим внешним интерфейсом) и сервер rsyslog, который перенаправляет все журналы в Loggly.
Моя проблема связана с частью ведения журнала. Журналы со всех сервисов в основном пересылаются, кроме моих журналов от sidekiq. Когда я запускаю sidekiq с bundler exec sidekiq
, журналы выводятся на консоль (stdout), но я не вижу их, когда захожу в /var/log/messages на сервере rsyslog.
Я следовал этому руководству при настройке ведения журнала в докере:
https://medium.com/@yoanis_gil/logging-with-docker-part-1-b23ef1443aac
Я думаю, что все, что отправляется на стандартный вывод в контейнере докеров, должно регистрироваться в механизме журнала докеров, и с моей настройкой это означает, что оно должно отправляться на сервер системного журнала...
Файл docker-compose:
version: '3'
services:
nginx:
image: nginx
depends_on:
- api
- syslog
ports:
- "80:8080"
logging:
driver: syslog
options:
syslog-facility: "daemon"
tag: "nginx"
syslog-address: "tcp://localhost:5514"
networks:
- phototankswarm
env_file: .env.dev
volumes:
- ./frontend/nginx/conf.d:/etc/nginx/conf.d
- ./frontend/public:/www
db:
image: mysql
env_file: .env.dev
depends_on:
- syslog
networks:
- phototankswarm
ports:
- "3306:3306"
volumes:
- ./backend/sql/data:/var/lib/mysql
logging:
driver: syslog
options:
syslog-facility: "daemon"
tag: "mysql"
syslog-address: "tcp://localhost:5514"
redis:
image: redis
depends_on:
- syslog
networks:
- phototankswarm
logging:
driver: syslog
options:
syslog-facility: "daemon"
tag: "redis"
syslog-address: "tcp://localhost:5514"
api:
image: pt-rails
env_file: .env.dev
networks:
- phototankswarm
command: >
sh -c '
rails s -p 3000 -b 0.0.0.0;
'
volumes:
- /Users/martinhinge/Pictures/docker/phototank:/media/phototank
- ./backend:/usr/src/app
ports:
- "3000:3000"
depends_on:
- db
- redis
- syslog
logging:
driver: syslog
options:
syslog-facility: "daemon"
tag: "rails"
syslog-address: "tcp://localhost:5514"
syslog:
image: syslog
ports:
- "localhost:5514:514"
networks:
- phototankswarm
volumes:
- /tmp:/var/log/syslog
networks:
phototankswarm:
rails s -p 3000 -b 0.0.0.0
- person Robert   schedule 07.06.2017docker exec -it 8d092f6b4d55 bundle exec sidekiq
- person martin   schedule 07.06.2017bundle
перенаправляется на ваш терминал вместо стандартного вывода контейнера. Вам нужно будет запустить пакет внутри вашей команды или точки входа. Так что я думаю, вам нужно запустить оба рельса и связки там. - person Robert   schedule 07.06.2017