【インフラ監視Tips】Disk使用率アラートが頻発する理由とその対処法
日々のインフラ運用で最もよく見かけるアラートの一つが、Disk使用率の閾値超過アラートです。
「またか……」と思いつつも、対応を誤るとシステム停止にもつながる重要な指標です。
本記事では、なぜこのアラートが頻発するのか、そして現場で実践できる対応策をまとめました。
🔍 よくあるDisk使用率アラートの実例
[EC2] ディスク使用率 WARN
system.disk.in_use was >= 0.9 on average during the last 5m
対象: /dev/nvme0n1p1 使用率: 99.8%
調査すると、df -h の結果はこう:
Filesystem Size Used Avail Use% Mounted on
/dev/nvme0n1p1 8.0G 7.7G 312M 97% /
なぜDiskアラートはこんなに頻繁に出るのか?
| 原因 | 詳細 |
|---|---|
| ルートパーティションが小さい | AWSのデフォルト構成では8GBしかないケースも |
| ログやキャッシュの蓄積 |
/var/log, journal, pip cache, 一時ファイル など |
| PythonなどのMWやアプリのアップデート | バージョン間でファイルが残りやすく、二重管理に |
| 仮想環境やビルドキャッシュ |
venv, node_modules, dist/ のような一時的ファイル群 |
| アラート閾値が厳しすぎる | 90%超でWARNにすると“通常動作”でも引っかかる |
実際の原因はPythonだけじゃなくて。。。
🔧 開発環境/言語系ツールによる要因
| 項目 | 内容 |
|---|---|
| Python | venv複数作成、pyenvによるバージョン重複、pipキャッシュ |
| Node.js |
node_modules の爆発的肥大化(特にフルスタック系) |
| Java / Maven |
.m2/repository に大量の依存JARが残存 |
| Go |
go mod cache や vendor ディレクトリの肥大 |
| Rust / Cargo |
.cargo/registry, target/ フォルダの肥大 |
🗃 ログ・キャッシュ・監視エージェントによる要因
| 項目 | 内容 |
|---|---|
/var/log の肥大化 |
OSログ、アプリログ、cronログ、access.log等 |
journalctl |
systemdによるログが最大数・最大容量に達するまで無制限に蓄積 |
auditd |
セキュリティ監査ログが高頻度に出力される |
| Datadog/CloudWatch Agent | 出力ファイルのバッファやトレースログが溜まり続けるケース |
🧪 CI/CD・ビルド関連
| 項目 | 内容 |
|---|---|
| Jenkins/CIランナー |
/var/lib/jenkins/workspace にビルドアーティファクトが蓄積 |
| Docker | 未使用イメージ・中断されたbuildでディスク圧迫(docker system prune で解消) |
/tmp にビルド展開 |
MakefileやCIパイプラインが一時的に膨大なファイルを生成するケース |
🗑 不要なファイル/人為的な操作ミス
| 項目 | 内容 |
|---|---|
| SCP/FTPで送った一時ファイル |
/home/ec2-user/ や /root/ にzip/tarが残っている |
| スナップショット取得用スクリプト等の一時バックアップ |
/backup に古いtar.gzが放置されているケースも |
| ダンプファイル | DBバックアップやログ吐き出し(mysqldump, pg_dump)などの出力残り |
よく使うディスク調査コマンド
# ルート直下のディレクトリごとの容量確認
sudo du -sh /* | sort -hr | head -n 10
# ログディレクトリの中身で大きいものを特定
sudo du -sh /var/log/* | sort -hr | head -n 10
# journalログの使用量
sudo journalctl --disk-usage
✅ 現場での対応方針まとめ
1. アラート閾値の見直し
- WARN: 90% → 92% に緩和
- CRITICAL: 95%以上
2. ログや一時ファイルのクリーンアップ
# 古いログファイルを削除(7日以上)
find /var/log -type f -name "*.log" -mtime +7 -exec rm -f {} \;
# journalログを7日で削除
journalctl --vacuum-time=7d
3. 空いている永続領域(/mnt など)へ移動
# 例: /var/log を /mnt/ebs に退避
sudo mv /var/log /mnt/ebs/var_log
sudo ln -s /mnt/ebs/var_log /var/log
4. ルートボリュームの拡張(EBSの場合)
# growpart + resize2fs(Amazon Linux)
sudo growpart /dev/nvme0n1 1
sudo resize2fs /dev/nvme0n1p1
📌 まとめ
Disk使用率アラートは、
「ただのノイズ」になりがちですが、
適切に管理しなければクリティカルな障害の入り口です。
- しきい値の調整
- クリーンアップ手順の自動化
- ボリューム設計の見直し
を通じて、“鳴らないけど意味ある監視”に育てていきましょう。
🗒 参考
👨💻 著者
檜垣 慶太