Fluentdでsyslogを取り込むための権限設定(CentOS 5&6両対応)
syslog経由で出力される次のようなログファイルを、Fluentdに取り込む場合に便利なTIPSを紹介します。
- /var/log/messages
- /var/log/secure
今回はこれらのsyslogを一般ユーザでも読み込みは出来るよう、権限を少し緩める設定を紹介したいと思います。
設定例
素の状態でsyslogをtd-agent(fluentd)から取り込もうとすると、権限エラーが発生します。
Fluentdから読み出せるよう、rsyslog(syslog)の設定を変更していきます。
# サンプルのためsourceブロックのみ記述します $ cat /etc/td-agent/td-agent.conf <source> type tail path /var/log/messages format syslog tag td.syslog.messages pos_file /var/log/td-agent/syslog_messages.pos </source> # td-agentを起動します $ sudo /etc/init.d/td-agent start # 権限エラーが出続けますね $ sudo tailf /var/log/td-agent/td-agent.log 2013-03-16 23:07:34 +0900: Permission denied - /var/log/messages # 確かにこのパーミッションでは読み込めません $ ls -l /var/log/messages -rw-r----- 1 root root 40779 Mar 16 17:23 /var/log/messages
syslog (CentOS-5.x)
/etc/sysconfig/syslog のUMASKを以下のように077から022に変更します。
その後、 /etc/init.d/syslog restart
を行います。
$ diff -u syslog_before syslog_after --- syslog_before 2013-03-16 23:08:24.000000000 +0900 +++ syslog_after 2013-03-16 23:08:34.000000000 +0900 @@ -11,6 +11,6 @@ # See klogd(8) for more details KLOGD_OPTIONS="-x" # -SYSLOG_UMASK=077 +SYSLOG_UMASK=022 # set this to a umask value to use for all log files as in umask(1). # By default, all permissions are removed for "group" and "other".
参考 http://linux-network.cocolog-nifty.com/blog/2009/03/umask-dec9.html
rsyslog (CentOS-6.x)
/etc/rsyslog.conf の行末に以下のように2行追加します。
その後、 /etc/init.d/rsyslog restart
を行います。
$ diff -u rsyslog_before rsyslog_after --- rsyslog_before 2013-03-16 23:11:51.000000000 +0900 +++ rsyslog_after 2013-03-16 23:11:55.000000000 +0900 @@ -77,3 +77,5 @@ #*.* @@remote-host:514 # ### end of the forwarding rule ### +$FileCreateMode 0644 +$DirCreateMode 0755
参考 http://baalzephon.dyndns.org/tech/index.php?rsyslogd
最後に
初回の設定時にはchmodも行います。
# Fluentdの起動ユーザ(例えばtd-agent)がapacheグループに入っている場合 $ sudo chmod g+rx /var/log/messages $ sudo chmod g+rx /var/log/secure # それ以外の場合 $ sudo chmod o+rx /var/log/messages $ sudo chmod o+rx /var/log/secure
Apacheのaccess_logも基本的に同様に対処すれば良いでしょう。
これで次にログがローテートした際も、Permission deniedとならずにログ収集できます。