2016年8月17日水曜日

apache httpd serverがバージョンアップで起動しなくなった

apacheのhttpd serverがバージョンアップしたら起動しなくなったので調べました。
バージョンアップは意図して行ったのではなく、AWSのautoscaleで起動したインスタンスが
セキュリティアップデートでhttpd serverがバージョンアップしてしまった感じです。

バージョンアップ前のバージョン : 2.4.16-1.63.amzn1
バージョンアップ後のバージョン : 2.4.23-1.66.amzn1

バージョンアップ後、apacheが起動しないのでerror_logには以下の内容が残っていました。
[Tue Aug 16 19:16:23.815996 2016] [suexec:notice] [pid 3157] AH01232: suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[Tue Aug 16 19:16:23.816582 2016] [proxy_hcheck:crit] [pid 3157] AH03262: mod_watchdog is required
AH00016: Configuration Failed

いろいろ調べてみたところ、mod_watchdog.soをloadする必要がありそうです。
元々の設定では読み込んでませんでした。
$ grep watchdog /etc/httpd/conf.modules.d/00-base.conf
#LoadModule watchdog_module modules/mod_watchdog.so

rpmに含まれているるconfでは読み込まれているようです。
$ grep watchdog /etc/httpd/conf.modules.d/00-base.conf.rpmnew 
LoadModule watchdog_module modules/mod_watchdog.so

mod_watchdog.soをloadするようにすると、無事に起動しました。


参考URL
http://forums.fedoraforum.org/showthread.php?t=310826

2016年8月10日水曜日

nginxのせいでDisk Fullになってアクセス不能になった件

正直恥ずかしい話ですし、Disk監視ちゃんと入れておけば防げる話です。

AWSのEC2でnginx動かしていたら、Disk使用率が100%になってレスポンスが返せなくなりました。
原因はnginxが巨大なログファイルを出力していたためなのですが、
dfだとdiskが喰われているのに、/に移動してdu -sh *でディレクトリごとの使用量を見てみても、
どこがdiskを喰っているのかわかりませんでした。

そこで何かのプロセスがファイルをつかんでいるだろうと調べたところ、nginxが巨大なログファイルをつかんでいました。
なぜそれがduでわからなかったかというと、実際のファイルは存在していなかったからです。
nginxの起動ユーザーはec2-userになっていたのですが、nginxはyumでインストールしたものなので、
log出力先のディレクトリのオーナーがnginxユーザーになっており、
ログがローテーとするタイミングで実ファイルへの書き込みができなくなっていて、
その存在しないファイルにずっと出力が続けられていて、ディスクを喰っていた感じです。

まずnginxのプロセスを調べました。
$ps -ef|grep nginx
root      2258     1  0  2015 ?        00:00:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
ec2-user  2259  2258  0  2015 ?        01:06:48 nginx: worker process
ec2-user  2260  2258  0  2015 ?        01:06:14 nginx: worker process
ec2-user  4949  4810  0 22:31 pts/0    00:00:00 grep nginx

プロセスIDが2259が開いているファイルを調べたところ、deletedな巨大なaccess.logが見つかりました。
$sudo lsof -p 2259
COMMAND  PID     USER   FD   TYPE             DEVICE   SIZE/OFF   NODE NAME
nginx   2259 ec2-user    2w   REG              202,1     175662 275456 /var/log/nginx/error.log-20150528 (deleted)
nginx   2259 ec2-user    4w   REG              202,1     175662 275456 /var/log/nginx/error.log-20150528 (deleted)
nginx   2259 ec2-user    5w   REG              202,1 5977988117 275453 /var/log/nginx/access.log-20150528 (deleted)
nginxを再起動すると、diskの空きが増えて、またレスポンスが返せるようになりました。