Linuxのログが急に増えたときの確認方法|journalctl・duで原因を調べる
Linuxサーバーを運用していると、ある日突然ディスク容量が減っていることがあります。
df -hで確認すると、以前より使用率が大きくなっていて、調べてみると/var/logのログファイルが大量に増えていたというケースもあります。
ログはサーバーのトラブルを調べるために重要ですが、エラーが大量に発生したり、設定によって大量のログが保存されたりすると、ディスク容量を圧迫することがあります。
そのため、ログが増えているときはいきなり削除するのではなく、どのログが増えているのか、なぜ増えているのかを順番に確認することが大切です。
Linuxのログが増えたときに確認する順番
ログ容量が急に増えた場合は、次の順番で確認すると原因を見つけやすくなります。
- ディスク全体の使用率を確認する
/var/logの容量を確認する- 大きなログファイルを探す
- journalの使用量を確認する
- ログを大量に出しているサービスを確認する
- logrotateの設定を確認する
- 原因を修正してから必要に応じてログを整理する
重要なのは、ログを削除することよりも、なぜログが増えたのかを確認することです。
まずdf -hでディスク使用率を確認する
最初にサーバー全体のディスク使用率を確認します。
df -h
例えば、
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 50G 45G 5.0G 90% /
のように表示されます。
Use%が90%や95%など高い状態になっている場合は、どのディレクトリが容量を使用しているのかを調べます。
/var/logの容量を確認する
Linuxではログが/var/logに保存されていることがあります。
まず、
sudo du -sh /var/log
でディレクトリ全体の容量を確認します。
さらに、どのディレクトリやファイルが大きいのか確認するには、
sudo du -h /var/log --max-depth=1 | sort -h
が便利です。
例えば、
/var/log/nginx
/var/log/mysql
/var/log/journal
など、特定の場所だけ大きくなっていることがあります。
大きなログファイルを探す
ログファイルを個別に確認する場合は、
sudo find /var/log -type f -size +100M -ls
のようにして、100MB以上のファイルを探せます。
サイズを変更すれば、
sudo find /var/log -type f -size +500M -ls
のように500MB以上のファイルも確認できます。
どのログが容量を使っているのか分からない場合は、まず大きなファイルを探すと効率的です。
journalctlの使用量を確認する
systemdを使用しているLinuxでは、journalのログが大量に保存されている場合があります。
使用量を確認するには、
journalctl --disk-usage
を実行します。
例えば、
Archived and active journals take up 2.5G in the file system.
のように表示されます。
journalが数GB以上使用している場合は、ログの保存設定や、特定のサービスが大量のログを出していないか確認してください。
journalctlでエラーが増えていないか確認する
ログ容量が急に増えた場合、何らかのサービスが大量のエラーを出し続けている可能性があります。
例えばNginxのログを確認するなら、
sudo journalctl -u nginx --since "1 hour ago"
のようにします。
特定のサービスで短時間に大量のエラーが発生していないか確認してください。
エラーが繰り返されている場合は、ログを削除する前に、その原因を調べる必要があります。
ログファイルの中身を確認する
大きなログファイルを見つけたら、最後の部分を確認します。
sudo tail -n 100 /var/log/nginx/error.log
リアルタイムで確認する場合は、
sudo tail -f /var/log/nginx/error.log
を使います。
同じエラーが何度も記録されていないか確認してください。
例えば、
connection refused
や、
upstream timed out
などのエラーが大量に繰り返されている場合、Nginxだけでなくupstream側の問題も調べる必要があります。
特定のサービスがログを大量に出していないか確認する
ログが急激に増えた場合は、サービス側でエラーが繰り返されていないか確認します。
例えば、
- Nginx
- MySQL
- Docker
- PHP-FPM
- アプリケーション
- systemdサービス
などです。
systemdのログであれば、
sudo journalctl --since "1 hour ago"
として最近のログを確認できます。
特定のサービスに絞る場合は、
sudo journalctl -u サービス名 --since "1 hour ago"
とします。
ログが増える速度と、エラーが発生するタイミングを比較すると原因を見つけやすくなります。
logrotateが動いているか確認する
通常のLinuxサーバーでは、ログが無制限に増え続けないようにlogrotateが利用されることがあります。
設定ファイルは、
ls -l /etc/logrotate.conf
や、
ls -l /etc/logrotate.d/
などで確認できます。
logrotateの設定では、ログを一定期間ごとにローテーションしたり、古いログを圧縮したりします。
例えばNginxの設定があるか確認する場合は、
ls -l /etc/logrotate.d/ | grep nginx
のようにします。
logrotateが正常に実行されているか確認する
logrotateの設定があっても、実際に正常に動作しているとは限りません。
systemd timerを使用している環境では、
systemctl status logrotate.timer
などで状態を確認できます。
ログローテーションの実行状況やエラーについては、環境に応じてsystemdのログなども確認してください。
journalのログを整理する場合
journalのログが大量に保存されていて、不要な古いログを整理する必要がある場合は、journalctlのvacuum機能を利用できます。
例えば、一定期間より古いjournalを削除する場合は、
sudo journalctl --vacuum-time=7d
のように指定できます。
容量を基準に整理する方法もあります。
sudo journalctl --vacuum-size=500M
ただし、ログを削除すると過去のトラブルを調査するための情報も失われます。
実行前に、現在必要なログが残っているか確認してください。
ログファイルを直接削除してもいい?
大きなログファイルを見つけると、rmで削除したくなるかもしれません。
しかし、原因を確認せずにログを削除するのはおすすめできません。
例えば、
sudo rm /var/log/example.log
と削除しても、サービスが同じエラーを出し続けていれば、再びログが増えてしまいます。
さらに、実行中のサービスがそのログファイルを開いたままにしている場合は、削除後もディスク容量がすぐに解放されないケースがあります。
削除したのにディスク容量が戻らない場合
ログファイルを削除したのにdf -hの使用量が減らない場合、プロセスが削除済みファイルを開いたままにしている可能性があります。
確認するには、
sudo lsof +L1
を使います。
削除済みなのにプロセスが保持しているファイルが表示されることがあります。
この場合は、該当するプロセスやサービスを確認し、適切な方法で再起動する必要があります。
ただし、重要なサービスを不用意に再起動しないよう注意してください。
Dockerのログが増えている場合
Dockerを使用しているサーバーでは、コンテナのログが大量に増えていることがあります。
コンテナの状態は、
docker ps
で確認できます。
ログを確認する場合は、
docker logs コンテナ名
を使用します。
同じエラーが大量に記録されている場合は、ログを削除する前にコンテナやアプリケーション側の原因を確認してください。
特にコンテナが再起動を繰り返している場合、短時間で大量のログが生成されることがあります。
ログが急増したときの確認コマンド
| 確認内容 | コマンド |
|---|---|
| ディスク使用率 | df -h |
| /var/logの容量 | sudo du -sh /var/log |
| ログディレクトリ別の容量 | sudo du -h /var/log --max-depth=1 | sort -h |
| 大きなログを探す | sudo find /var/log -type f -size +100M -ls |
| journal使用量 | journalctl --disk-usage |
| サービスログ | sudo journalctl -u サービス名 |
| ログ末尾を確認 | sudo tail -n 100 /var/log/ファイル名 |
| logrotate設定 | ls -l /etc/logrotate.d/ |
| 削除済みファイル確認 | sudo lsof +L1 |
ログが増えたときの注意点
いきなりログを全部削除しない
ログには、障害の原因を調べるための重要な情報が含まれています。
削除する前に、どのサービスがログを出しているのか確認してください。
ログが増えた原因を先に調べる
ログが大量に増えている場合、何らかのエラーが繰り返されている可能性があります。
ログを削除するだけでは、同じ問題が再発する可能性があります。
ディスク容量が100%になる前に対応する
ディスク容量が完全になくなると、ログを書き込めなくなるだけでなく、アプリケーションやデータベースなどにも影響する可能性があります。
df -hで定期的に容量を確認し、余裕があるうちに原因を調べることが重要です。
まとめ
Linuxのログが急に増えたときは、まずどの場所・どのサービスが容量を使っているのかを確認しましょう。
最初にdf -hでディスク全体を確認し、その後duで/var/logなどの容量を調べます。
さらにjournalctl --disk-usageでjournalの使用量を確認し、大きなログファイルが見つかった場合は、そのサービスでエラーが繰り返されていないか確認します。
ログを削除することだけを目的にせず、なぜログが急増したのかを先に調べることが大切です。
必要に応じてlogrotateやjournalの保存設定も確認し、今後同じ問題が発生しにくい状態に整えておきましょう。
Linuxのログが急に増える原因は何ですか?
アプリケーションやNginxなどで大量のエラーが発生している、Dockerコンテナが再起動を繰り返している、ログローテーションが正常に動作していないなど、さまざまな原因があります。
Linuxのログ容量を確認するにはどうすればいいですか?
まず、
df -h
でディスク全体を確認し、
sudo du -h /var/log --max-depth=1 | sort -h
でログディレクトリごとの使用量を確認すると分かりやすいです。
journalctlのログが大きい場合は削除できますか?
journalctl --vacuum-timeや--vacuum-sizeを使って古いjournalを整理できます。
ただし、削除すると過去のトラブル調査に必要なログも失われる可能性があるため、必要なログを確認してから実行してください。
ログファイルを削除したのにディスク容量が戻りません
プロセスが削除済みのファイルを開いたままにしている可能性があります。
sudo lsof +L1
で削除済みファイルを保持しているプロセスを確認できます。
Linuxのディスク容量が足りないときの確認方法|df・duで原因を調べる手順
LinuxのディスクI/Oが高いときの確認方法|サーバーが遅い原因を調べる手順
