tailコマンドでリアルタイムログを確認するまでの経緯
発生した問題
nginx.conf等諸々設定し、EC2インスタンスのIPv4DNSからアプリ画面へアクセス確認。
→ブラウザで「応答時間が長すぎます。」
と警告が表示された。
問題の切り分け
発生した問題に対して以下の手順で調査を進めました。
1.sshは接続できるがhttpで接続できるか?
2.できないとして、どこまで来てるか?
3.EC2でアクセスがきているか確認する
→netstat -ano | grep :80
(Linuxのポート状況を確認に関しては以下の記事を参考に。)
→/var/log/nginx/access.log
を確認 → きていない。
4.まずAWS側に問題があることが一つ考えられる
→AWS側は修正するとして、EC2自体からローカルアクセスしたときにアクセスできるのか?
→curl 127.0.0.1
叩いてローカルアクセスしてみる
→404で返ってくる → webサーバー(nginx)自体は正常に動いている。
5.アプリケーション側がおかしいかも?
→/var/log/php-fpm/www-error.log
のログを確認
→原因となるエラー出てた。
6.EC2コンソール画面からセキュリティルールのインバウンドルールを確認し、設定に不備があったので修正。その後、ローカルではなくブラウザからアクセス確認。
→最初に出た「応答時間が長すぎます。」は出なくなり、次は404エラーが発生。
→とりあえずサーバは正常に動いた。しかし、何故404エラーが発生するのか?
7.ターミナルからtail -f
でログファイルを開いた状態でブラウザアクセス
→404エラーの原因をリアルタイムで確認。
→DBの設定ができてないことが判明!
[root@ip-??-??-??-?? php-fpm]# tail -f www-error.log
ERROR: SQLSTATE[HY000] [2002] Connection refused ・・・・
経緯はこんな感じです。
最後の箇所でブラウザからアクセスした時にリアルタイムでログを確認しました!
まとめ
ターミナルからtail -f
でログファイルを開いた状態にし、ブラウザからアクセスしてリアルタイムでログを確認。
デバック中はこんな感じでログを流しながら調査する方が分かりやすく、今後多く使っていくことになりそうなので記事にしてみました!