2015-11-09 5 views
1

Теперь я использую приложение для рельсов. В моем файле конфигурации приложения, я добавил следующее:Как настроить fluentd с докером?

конфигурации/application.rb

logger = Fluent::Logger::FluentLogger.new(nil, host: '127.0.0.1', port: '24224') 

Затем загрузки приложения в докер, видел эти журналы ошибок: IP

$ docker-compose up 

... 
sidekiq_1 | E, [2015-11-09T02:45:44.857664 #1] ERROR -- : Failed to connect fluentd: Connection refused - connect(2) for "127.0.0.1" port 24224 
sidekiq_1 | E, [2015-11-09T02:45:44.860403 #1] ERROR -- : Connection will be retried. 
sidekiq_1 | E, [2015-11-09T02:45:44.862926 #1] ERROR -- : Failed to connect fluentd: Connection refused - connect(2) for "127.0.0.1" port 24224 
sidekiq_1 | E, [2015-11-09T02:45:44.864514 #1] ERROR -- : Connection will be retried. 
web_1  | E, [2015-11-09T02:45:48.512481 #1] ERROR -- : Failed to connect fluentd: Connection refused - connect(2) for "127.0.0.1" port 24224 
web_1  | E, [2015-11-09T02:45:48.512785 #1] ERROR -- : Connection will be retried. 
web_1  | E, [2015-11-09T02:45:48.515245 #1] ERROR -- : Failed to connect fluentd: Connection refused - connect(2) for "127.0.0.1" port 24224 
web_1  | E, [2015-11-09T02:45:48.515571 #1] ERROR -- : Connection will be retried. 
... 

Мой Docker машины:

$ docker-machine ip myapp 
=> 192.168.99.100 

Мой докер пс:

$ docker ps 
CONTAINER ID  IMAGE    COMMAND     CREATED    STATUS    PORTS     NAMES 
b5e980e1aa61  myapp_web   "bundle exec rails s " About an hour ago Up 6 minutes  0.0.0.0:3000->3000/tcp myapp_web_1 
43365dfb403f  myapp_sidekiq  "bundle exec sidekiq " About an hour ago Up 6 minutes         myapp_sidekiq_1 
9570ee727f04  mysql    "/entrypoint.sh mysql" About an hour ago Up 6 minutes  0.0.0.0:3306->3306/tcp myapp_db_1 
e24495920c58  redis    "/entrypoint.sh redis" 2 days ago   Up 6 minutes  0.0.0.0:6379->6379/tcp myapp_redis_1 

Почему не удалось подключить fluctd о sidekiq и веб-изображениях?


Редактировать

Добавьте к этому Dockerfile:

RUN mkdir -p /fluentd/etc 

Добавьте к этому docker-compose.yml:

fluentd: 
    image: fluent/fluentd:latest 
    ports: 
    - "24224:24224" 

При загрузки приложения, журнал показывает:

fluentd_1 | 2015-11-09 09:51:07 +0000 [info]: reading config file path="/fluentd/etc/fluent.conf" 
fluentd_1 | 2015-11-09 09:51:07 +0000 [info]: starting fluentd-0.12.16 
fluentd_1 | 2015-11-09 09:51:07 +0000 [info]: gem 'fluentd' version '0.12.16' 
fluentd_1 | 2015-11-09 09:51:07 +0000 [info]: adding match in @mainstream pattern="docker.**" type="file" 
fluentd_1 | 2015-11-09 09:51:07 +0000 [info]: adding match in @mainstream pattern="**" type="file" 
fluentd_1 | 2015-11-09 09:51:07 +0000 [info]: adding filter pattern="**" type="stdout" 
fluentd_1 | 2015-11-09 09:51:07 +0000 [info]: adding source type="forward" 
fluentd_1 | 2015-11-09 09:51:07 +0000 [info]: using configuration file: <ROOT> 
fluentd_1 | <source> 
fluentd_1 |  @type forward 
fluentd_1 |  @id input1 
fluentd_1 |  @label @mainstream 
fluentd_1 |  port 24224 
fluentd_1 | </source> 
fluentd_1 | <filter **> 
fluentd_1 |  @type stdout 
fluentd_1 | </filter> 
fluentd_1 | <label @mainstream> 
fluentd_1 |  <match docker.**> 
fluentd_1 |  @type file 
fluentd_1 |  @id output_docker1 
fluentd_1 |  path /fluentd/log/docker.*.log 
fluentd_1 |  symlink_path /fluentd/log/docker.log 
fluentd_1 |  append true 
fluentd_1 |  time_slice_format %Y%m%d 
fluentd_1 |  time_slice_wait 1m 
fluentd_1 |  time_format %Y%m%dT%H%M%S%z 
fluentd_1 |  buffer_path /fluentd/log/docker.*.log 
fluentd_1 |  </match> 
fluentd_1 |  <match **> 
fluentd_1 |  @type file 
fluentd_1 |  @id output1 
fluentd_1 |  path /fluentd/log/data.*.log 
fluentd_1 |  symlink_path /fluentd/log/data.log 
fluentd_1 |  append true 
fluentd_1 |  time_slice_format %Y%m%d 
fluentd_1 |  time_slice_wait 10m 
fluentd_1 |  time_format %Y%m%dT%H%M%S%z 
fluentd_1 |  buffer_path /fluentd/log/data.*.log 
fluentd_1 |  </match> 
fluentd_1 | </label> 
fluentd_1 | </ROOT> 
fluentd_1 | 2015-11-09 09:51:07 +0000 [info]: listening fluent socket on 0.0.0.0:24224 
sidekiq_1 | E, [2015-11-09T09:51:11.887833 #1] ERROR -- : Failed to connect fluentd: Connection refused - connect(2) for "127.0.0.1" port 24224 
sidekiq_1 | E, [2015-11-09T09:51:11.888508 #1] ERROR -- : Connection will be retried. 
sidekiq_1 | E, [2015-11-09T09:51:11.893544 #1] ERROR -- : Failed to connect fluentd: Connection refused - connect(2) for "127.0.0.1" port 24224 
sidekiq_1 | E, [2015-11-09T09:51:11.893926 #1] ERROR -- : Connection will be retried. 

Кажется, что ip 127.0.0.1 не работает. Теперь я использую докер-машину.

ответ

2

Убедитесь, что docker-compose.yml имеет fluentd раздел (as this one), по крайней мере, порт 24224 воздействию (вы не имеете верхнюю карту его, если вы хотите получить к нему доступ непосредственно с хоста)

Тогда ваш рельс docker-compose.ymlsidekiq раздел должен иметь раздел ссылки:

links: 
    - fluentd 
+0

Спасибо за хороший ответ. Я сделал это, следуя вашим советам. Но когда я загружаю свое приложение, он показывает: 'Нет такого файла или каталога @ rb_sysopen - /fluentd/etc/fluent.conf (Errno :: ENOENT)'. – scho

+0

@scho, который выглядит как том, который не был установлен (http://docs.docker.com/compose/compose-file/#volumes-from) – VonC

+0

@scho, кстати, используете ли вы https: // github .com/GoCarrot/свободно-плагин-sidekiq? – VonC