Я следую инструкциям по этой ссылке, чтобы писать журналы доступа 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.