Назад | Перейти на главную страницу

Fluentd не пишет журнал доступа apache к mongodb

Я следую инструкциям по этой ссылке, чтобы писать журналы доступа apache в mongo db- http://docs.fluentd.org/articles/apache-to-mongodb.

Но в БД mongo ничего не записывается. Я проверяю с помощью db["access"].findOne();.

Содержание моего td-agent.conf файл следующие:

<source>
  type tail
  format apache2
  path /var/log/httpd/access_log
  pos_file /var/log/td-agent/apache2.access_log.pos
  tag mongo.apache.access
</source>

<match mongo.*.*>
  # plugin type
  type mongo

  # mongodb db + collection
  database apache
  collection access

  # mongodb host + port
  host localhost
  port 27017

  # interval
  flush_interval 10s

  # make sure to include the time key
  include_time_key true
</match>

Я знаю, что td-agent просматривает этот файл конфигурации, потому что /etc/init.d/td-agent start не работает, если в файле conf есть ошибки.

Содержимое упомянутого pos_file следующее:

/var/log/httpd/access_log   0000000000000000    00000000

Я ищу помощь, почему это может не работать. Что мне не хватает?

Обновление 1: Если я добавлю совпадение с указанным выше источником (журнал доступа apache), который записывает в stdout, я смогу увидеть события, записываемые в журнал td-agent. Так что, похоже, проблема с записью в mongodb. Я могу подключиться к mongo из командной строки, используя mongo команда.

Обновление 2: Внезапно это начало работать, и я не могу объяснить, почему. Я просто изменил конфигурацию td-agent, чтобы она соответствовала выводам на стандартный вывод и обратно. Теперь я не знаю, что было не так и почему это начало работать. :(

Спасибо,

Оказалось, что это проблема с разрешением. Причина, по которой это сработало позже, заключалась в том, что я изменил сценарий td-agent init.d на запуск процесса от имени пользователя root. По умолчанию он работает как пользовательский td-agent, и в этом случае он жалуется, что у него нет разрешения на доступ к файлу журнала доступа к apache, даже если у файла журнала есть разрешения 666.