インフラエンジニアbacchiのわかったことまとめ

bacchi.me

deamontools管理のqmailのロギングが止まった場合の対処

さくらVPSの「VENOM」脆弱性対応のためサーバーを再起動しました。

再起動後の動作確認をしている際にdaemontoolsで管理しているサービスが
ある日を境にきちんとロギングができなくなっていることがわかったのでその対応をメモ。

ログファイルを確認する

qmailのログを確認たところ、2015年1月の分までしかロギングされていなかった。

タイムスタンプは下記の通り。

[root@bacchi ~]# ll /service/qmail/log/main/
合計 2484
-rw-r--r-- 1 qmaill nofiles   33049 12月  6 19:34 2013 @4000000052acbc8109dd797c.u
-rw-r--r-- 1 qmaill nofiles    1157  1月  7 12:35 2014 @4000000052cb76010d46cbcc.u
-rw-r--r-- 1 qmaill nofiles      57  1月  7 12:35 2014 @4000000052cb7898066f3974.u
-rw-rw-rw- 1 qmaill nofiles 2490254  1月 28 12:34 2015 current
-rw------- 1 qmaill nofiles       0  8月  3 17:22 2013 lock
-rw-r--r-- 1 qmaill nofiles       0  1月  7 12:46 2014 state

メールサーバーが起動しているかどうか確認する

メールサーバー止まってる?と思い、確認

[root@bacchi ~]# svstat /service/*
/service/dnscache: up (pid 854) 614 seconds
/service/qmail: up (pid 851) 614 seconds
/service/smtpd: up (pid 856) 614 seconds
[root@bacchi ~]# ps ax |grep qmail
  852 ?        S      0:00 supervise qmail
  858 ?        S      0:00 qmail-send
  862 ?        S      0:00 /usr/local/bin/tcpserver -v -x /var/vpopmail/etc/tcp.smtp.cdb -R -H -l0 -u 61 -g 60 0 25 relay-ctrl-check /var/qmail/bin/qmail-smtpd
  864 ?        S      0:00 qmail-lspawn ./Maildir/
  865 ?        S      0:00 qmail-rspawn
  866 ?        S      0:00 qmail-clean
 2052 pts/0    S+     0:00 grep qmail

問題なく稼働している。

ロギングのプロセスが動いているか確認する

じゃあ、ロギングはどうなのってことで見てみると、見慣れぬエラーが・・

[root@bacchi ~]# ps ax |grep log
  847 ?        S      0:00 readproctitle service errors: ...nied?multilog: fatal: unable to create status: access denied?multilog: fatal: unable to create status: access denied?multilog: fatal: unable to create status: access denied?multilog: fatal: unable to create status: access denied?multilog: fatal: unable to create status: access denied?multilog: fatal: unable to create status: access denied?multilog: fatal: unable to create status: access denied?
  853 ?        S      0:00 supervise log
  855 ?        S      0:00 supervise log
  857 ?        S      0:00 supervise log
  859 ?        S      0:00 multilog t s3145728 n99 ./main
  863 ?        S      0:00 multilog t ./main
 1068 ?        Sl     0:00 /sbin/rsyslogd -i /var/run/syslogd.pid -c 5
 1174 ?        S      0:00 pop3-login
 1175 ?        S      0:00 pop3-login
 1176 ?        S      0:00 pop3-login
 1177 ?        S      0:00 imap-login
 1178 ?        S      0:00 imap-login
 1179 ?        S      0:00 imap-login
 1188 ?        S      0:00 /usr/sbin/cronolog /www/bacchi.me/logs/%Y/%m/access_log.%d
 1189 ?        S      0:00 /usr/sbin/cronolog /www/bacchi.me/logs/%Y/%m/access_log.%d
 1737 ?        Sl     0:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/home/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --log-error=/home/mysql/data/bacchi.me.err --pid-file=/home/mysql/data/bacchi.me.pid --socket=/tmp/mysql.sock --port=3306
 2058 ?        Z      0:00 [multilog] 
 2060 pts/0    S+     0:00 grep log

daemontoolsからロギングプロセスの立ち上げができていないっぽい。

daemontoolsに頼らず手動で立ち上げてみる

daemontoolsでログプロセス立ちあげられないなら
手動でスクリプト叩けばどうだ!

[root@bacchi ~]# sh /service/qmail/log/run
multilog: fatal: unable to switch to current directory: access denied

動かない。

うん、わかってる。

ディレクトリのパーミッション見てみるけど、問題なさげ。
今まで、動いてたんだから当たり前だわな。

[root@bacchi ~]# ll /service/qmail/log
合計 20
drwxr-sr-x 2 qmaill nofiles 4096  1月  7 12:47 2014 alert
drwxr-sr-x 2 qmaill nofiles 4096  1月  7 12:46 2014 main
-rwxr-xr-x 1 root   root     564  1月  7 12:47 2014 run
drwx--S--- 2 root   root    4096  6月  7 18:07 2015 supervise

再度ログが吐かれるディレクトリを見てみる

もう一度、/service/qmail/log/main/以下を見てみると、やったら古いlockファイルが。

[root@bacchi ~]# ll /service/qmail/log/main/
合計 2484
-rw-r--r-- 1 qmaill nofiles   33049 12月  6 19:34 2013 @4000000052acbc8109dd797c.u
-rw-r--r-- 1 qmaill nofiles    1157  1月  7 12:35 2014 @4000000052cb76010d46cbcc.u
-rw-r--r-- 1 qmaill nofiles      57  1月  7 12:35 2014 @4000000052cb7898066f3974.u
-rw-rw-rw- 1 qmaill nofiles 2490254  1月 28 12:34 2015 current
-rw------- 1 qmaill nofiles       0  8月  3 17:22 2013 lock
-rw-r--r-- 1 qmaill nofiles       0  1月  7 12:46 2014 state

あやふやな記憶を頼りにlockファイルを削除&runスクリプトを叩く

そういえば、svscanはlockファイルがあると
新しくプロセス立てれなかったなーと思い、lockファイルを消してみた。
そしてそのあとで手動でrunスクリプトを叩いてみる。

[root@bacchi service]# rm /service/qmail/log/main/lock
rm: remove 通常の空ファイル `qmail/log/main/lock\'? y
[root@bacchi service]# cd /service/qmail/log
[root@bacchi service]# sh run &

エラーが出ない・・!

プロセスを見てみると立ち上がっている!

[root@bacchi ~]# ps ax |grep log
  846 ?        S      0:00 supervise log
  852 ?        S      0:00 multilog t s3145728 n99 ./main

タイムスタンプも確認すると、ロギングされている!

[root@bacchi ~]# ll /service/qmail/log/main/
合計 2496
-rw-r--r-- 1 qmaill nofiles   33049 12月  6 19:34 2013 @4000000052acbc8109dd797c.u
-rw-r--r-- 1 qmaill nofiles    1157  1月  7 12:35 2014 @4000000052cb76010d46cbcc.u
-rw-r--r-- 1 qmaill nofiles      57  1月  7 12:35 2014 @4000000052cb7898066f3974.u
-rw-rw-rw- 1 qmaill nofiles 2490254  1月 28 12:34 2015 @400000005577ff2a140eaa9c.u
-rw-r--r-- 1 qmaill nofiles    2238  6月 7 18:18 2015 current
-rw------- 1 qmaill nofiles       0  6月 7 18:16 2015 lock
-rw-r--r-- 1 qmaill nofiles       0  6月 7 18:17 2015 state

今思うとdaemontools動いているし、手動でrunスクリプト叩く必要なかった気が・・

smtpdとtinydnsにも同様のオペレーションをして、サーバー再起動。

  • B!