コマンド$ usermod -a -G adm logstash
を使用して、ユーザーlogstash
をグループadm
に追加しました。
Logstashエージェントが読み取ろうとしているファイルの1つは/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
(initスクリプトはlogstash
ユーザーとして実行されます)になると、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::---
オフにしてからもう一度オンにしてみました。
Upstartのこのバグに関連していることが判明しました:
https://bugs.launchpad.net/upstart/+bug/81287
adm
はセカンダリグループであるため、プロセスに適用されていませんでした。これはf ** kとして壊れており、今後のバージョンでは明らかに修正されています。
私の解決策は、setguid adm
をinitファイルに追加することでした。
回避策は次のとおりです。
Sudo vi /etc/init.d/logstash
修正
LS_GROUP=logstash
沿って
LS_GROUP=adm
その後
Sudo /etc/init.d/logstash start