AWS Marketprice の CentOS 6 HVM の AMI でも cloud-init を使ってみようとしたのですが、/var/log/cloud-init.log
にログがまったく出力されません。
# cat /var/log/cloud-init.log
/var/log/messages
に次のようなログが記録されていました。
# cat /var/log/messages
Dec 21 14:03:58 ip-10-0-1-96 [CLOUDINIT] stages.py[INFO]: Loaded datasource DataSourceEc2 - DataSourceEc2
Dec 21 14:03:58 ip-10-0-1-96 rsyslogd-2177: imuxsock begins to drop messages from pid 823 due to rate-limiting
これは rsyslog の rate-limiting のという機能で /var/log/messages
に短時間に大量のログを送るプロセスがあったときにログが捨てられてしまうからのようです。
rsyslog の rate-limiting を無効にすれば解決しますが、そもそも cloud-init のログは /var/log/cloud-init.log
に出力して欲しいです。
見た感じ /var/log/cloud-init.log
に出力しようとしているっぽいのですが、この設定が効いていないようです。
# cat /etc/rsyslog.d/21-cloudinit.conf
# Log cloudinit generated log messages to file
:programname, isequal, "cloud-init" /var/log/cloud-init.log
# comment out the following line to allow CLOUDINIT messages through.
# Doing so means you'll also get CLOUDINIT messages in /var/log/syslog
& ~
/etc/rsyslog.d/21-cloudinit.conf
を以下のように修正すると /var/log/cloud-init.log
にログが出力されるようになります。
:syslogtag, startswith, "[CLOUDINIT]" /var/log/cloud-init.log
& ~
あるいは /etc/cloud/cloud.cfg.d/05_logging.cfg
の下記の行をコメントアウトすると syslog 経由ではなく直接ファイルに書き込まれるようになります。
# - [ *log_base, *log_syslog ]