はじめに
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