Logstash не может читать файлы, к которым он должен иметь доступ
Я добавил пользователя logstash
в группу adm
используя команду $ usermod -a -G adm logstash
,
Один из файлов, который пытается прочитать агент logstash: /var/log/nginx/foo-access.log
, который имеет следующие разрешения:
-rw-r----- 1 www-data adm 0 Jul 25 07:52 /var/log/nginx/foo-access.log
Когда я sudo su logstash
Я могу прочитать файл, НО, когда я $ sudo service logstash_agent restart
(который скрипт инициализации запускается как logstash
user) заполняет логи logstash:
{:timestamp=>"2013-07-31T17:05:17.287000+0000", :message=>"failed to open /var/log/nginx/foo-access.log: Permission denied - /var/log/nginx/foo-access.log", :level=>:warn}
Я могу подтвердить, что пользователь logstash находится в группе adm:
$ groups logstash
logstash : logstash adm
Этот файл определенно имеет право доступа к файлу:
$ getfacl /var/log/nginx/foo-access.log
getfacl: Removing leading '/' from absolute path names
# file: var/log/nginx/foo-access.log
# owner: www-data
# group: adm
user::rw-
group::r--
other::---
Я пытался выключить и снова включить.
2 ответа
It turned out to be related to this bug in upstart:
https://bugs.launchpad.net/upstart/+bug/812870
Так как adm
was a secondary group it was not being applied to the process, which is broken as f**k and is apparently fixed in a later version.
Мое решение было добавить setguid adm
to the init file.
Вот рабочий способ:
sudo vi /etc/init.d/logstash
модифицировать
LS_GROUP=logstash
от
LS_GROUP=adm
затем
sudo /etc/init.d/logstash start