私はRaspberry Pi 3BにRaspian Buster Liteのフレッシュインストールを行い、 Prometheus と Node Exporter をインストールして、いくつかの簡単な診断、特に利用可能なディスクを削り取りましたスペース。
問題は、使用可能なディスク領域が継続的に減少しているように見えることです。 df -B1
を使用して、使用可能なバイト数を確認できます。これにより、次が返されます(使用されている「16 GB」のSDカードから13.08 GB)。
pi@raspberrypi:/home $ df -B1
Filesystem 1B-blocks Used Available Use% Mounted on
/dev/root 15383740416 1647845376 13078351872 12% /
devtmpfs 480808960 0 480808960 0% /dev
tmpfs 485527552 0 485527552 0% /dev/shm
tmpfs 485527552 6459392 479068160 2% /run
tmpfs 5242880 4096 5238784 1% /run/lock
tmpfs 485527552 0 485527552 0% /sys/fs/cgroup
/dev/mmcblk0p1 264289280 54748672 209540608 21% /boot
tmpfs 97103872 0 97103872 0% /run/user/1000
これを定期的に調べると、減少するだけです。数分後に確認すると、次のようになります。
Filesystem 1B-blocks Used Available Use% Mounted on
/dev/root 15383740416 1648463872 13077733376 12% /
devtmpfs 480808960 0 480808960 0% /dev
tmpfs 485527552 0 485527552 0% /dev/shm
tmpfs 485527552 6459392 479068160 2% /run
tmpfs 5242880 4096 5238784 1% /run/lock
tmpfs 485527552 0 485527552 0% /sys/fs/cgroup
/dev/mmcblk0p1 264289280 54748672 209540608 21% /boot
tmpfs 97103872 0 97103872 0% /run/user/1000
Grafana を使用して、Prometheusデータベースでこのメトリックを調べることができます。
たぶんいくつかのログか何かかもしれませんが、少し良く理解したいと思います。このグラフに基づいて、スペースは1時間あたり約2.9 MBの速度で減少しているように見えます。これは私にはかなり思えます。
理想的には、サイズが変更されたファイルのみを表示する方法を探しているとしましょう。たとえば、ギリギリか何かで。この原因を突き止めるにはどうしたらよいでしょうか?お待ちいただきありがとうございます-私はLinuxを使用するのが初めてです。
誰かが興味を持っている場合は、2.9 MB /時間のほぼすべてがPrometheusの先読みログ(WAL)に起因する可能性があることを発見しました-データの保存方法について読むことができます ここ 。次のコマンドを使用して、WALディレクトリの構築を観察できました
watch -d "Sudo du -s -B1 /home/pi/prometheus/data/*"
変更するファイルを適切に強調表示します。
Richie Frameがほのめかしたように、頻繁に(デフォルトではPrometheusでは2時間ごとであると思われますが、確認する必要があります)データはWALから圧縮され、より永続的なストレージに配置されます。必要なディスク容量の点で効率的です。 Grafanaで圧縮が行われていること(これは、Piがアイドル状態であったときに一晩かかったもの)と、解放されているディスク領域の一部を確認できます。
予想される2時間ではなく、4時間ごとにのみディスク容量が大幅に増加するように見える理由はわかりませんが、それは別の日の仕事です。皆様のご協力ありがとうございます!
私の提案は次のコマンドです:
watch -d "ls -lt /var/log/**/* | head"
watch
は、デフォルトで次のコマンドを2秒ごとに実行します。 -d
フラグは、各実行後の違いを強調表示します。
ls -lt
は、ファイルの最終更新日(最新のものから)に従ってファイルを一覧表示します。**/*
は、すべてのファイルを再帰的に検索するためのグロブです。
最後に、head
は最初の10行のみを出力するために使用されます。
次のようなものを使用して、システムで最近更新されたファイルを見つけることができます
find / -type f -newermt '-5 minutes'`
これをサイズ表示と組み合わせることができます。
find / -type f -newermt '-5 minutes' -exec stat -c '%10s %n' {} + `
ルートとしてcrontab -e
のようにします
30 * * * * * /root/checkmydiskspace.sh
bashスクリプトを実行します/root/checkmydiskspace.sh
、作成する必要がある30分ごと。 crontabを調べて、より頻繁にチェックする必要があるかどうかを判断します。
そのスクリプトは次のようになり、ピンポイントを特定するのに役立つ情報を必ず出力しますwhere時間の経過とともにディスク領域が使い果たされています。
#!/bin/bash
now=$(date '+%Y-%m-%d-%H:%M')
filename=wheremydiskspacegone_$now.log
du -sh /* > /root/$filename
また、chmod 744 /root/checkmydiskspace.sh
作成されたログファイルを見て、何かが起こっている場所を見つけて、du -sh /*
することが du -sh /usr/*
例えば; du
が使用されているほとんどのスペースを示しているサブフォルダーに移動します。
もちろん、du -sh /*
事前に確認し、どのフォルダに最も多くのものがあるかを確認します。これが原因である可能性があります。しかし、すべてのログファイルを使用して、X分ごとなど、具体的に何がどこで起こっているのかを推測するために必要なすべてのものがあります。次に、それを引き起こしているプログラムまたはプロセスを特定することが問題になります。