はじめに
Docker内でちょっとSyslogを残しておきたい、ということはなきにしもあらずかと思います。
(たくさんDaemonを動かすのは良くないとされつつも・・・)
Fedora21などで yum でInstallされるデフォルトの rsyslog.conf だとログが出力されないので、その対策メモです。
症状
rsyslog自体はInstallされていて起動しているのに logger などで /var/log/messages に表示されない。
具体的には、
logger hogehoge
としても /var/log/messages
にログが出ません。
対策
http://www.projectatomic.io/blog/2014/09/running-syslog-within-a-docker-container/
に書いてある方法で上手く行きました。
RHEL7やFedoraではjournald などを使う設定になっている(んだけど、大抵Dockerではjournaldは起動していない)のがダメみたいです。
そこで /etc/rsyslogd.conf
を
-
$ModLoad imjournal
を コメントアウト -
$OmitLocalLogging を off
にする -
$IMJournalStateFile imjournal.state
をコメントアウト -
$ModLoad imuxsock
が存在することを再度確認(初期設定では存在しています)
とします。rsyslogd を再起動して、 logger hogehoge
すると今度はちゃんとログに出力されました。
Installメモ
supervisord で起動する場合、こんな感じで入れておけばOKでした。
yum install -y rsyslog
sed 's/$ModLoad imjournal/# $ModLoad imjournal/' -i /etc/rsyslog.conf
sed 's/$OmitLocalLogging on/$OmitLocalLogging off/' -i /etc/rsyslog.conf
sed 's/$IMJournalStateFile imjournal.state/# $IMJournalStateFile imjournal.state/' -i /etc/rsyslog.conf
cat <<EOF > /etc/supervisord.d/rsyslog.conf
[program:rsyslog]
command=/usr/sbin/rsyslogd -n -c5
autostart=true
autorestart=true
redirect_stderr=true
EOF