|
Surface Go 2 on Ubuntu Serverでストレージを管理する
Surface Go 2 on Ubuntu Serverでストレージを管理する
概要
更新履歴
目次
はじめに
- このドキュメントでは,ログファイルのサイズ制限と,ディスクの空き容量が減った時に警告メールを送信する仕組みを導入する.
現状のストレージ情報を把握する
ujpadmin@okachimachi:~$ df -h🆑
Filesystem
Size
Used
Avail
Use% Mounted on
tmpfs
379M
2.1M
377M
1% /run
efivarfs
164K
74K
86K
47%
/sys/firmware/efi/efivars
/dev/mapper/ubuntu--vg-ubuntu--lv 27G 14G 13G 52% /🈁
tmpfs
1.9G
12K
1.9G
1% /dev/shm
tmpfs
5.0M
8.0K
5.0M
1% /run/lock
/dev/mmcblk0p2
2.0G
300M
1.5G
17% /boot
/dev/mmcblk0p1
1.1G
6.2M
1.1G
1% /boot/efi
tmpfs
379M
92K
379M
1% /run/user/1000
ujpadmin@okachimachi:~$
- 残り13GB程度.
- 元々Surface Go 2 4GB RAM 64GB eMMCなのでそんなもんでしょう.
systemd-journald のログサイズを調べる
ujpadmin@okachimachi:~$ journalctl --disk-usage🆑
Archived and active journals take up 581.8M in the file system.
ujpadmin@okachimachi:~$
- 582MBほどある模様.
- 一部権限不足なのでsudoで確認している.
ujpadmin@okachimachi:~$ cd /var/log/journal/🆑
ujpadmin@okachimachi:/var/log/journal$ ls -la🆑
total 32
drwxr-sr-x+ 3 root systemd-journal 4096 May 3 23:39 .
drwxrwxr-x 11 root syslog 4096 May 18 13:09 ..
drwxr-sr-x+ 2 root systemd-journal 20480 May 18 13:09 ec697cb9074c4aa6a1c8b9696e863ccc🈁
ujpadmin@okachimachi:/var/log/journal$ cd ec697cb9074c4aa6a1c8b9696e863ccc🆑
ujpadmin@okachimachi:/var/log/journal/ec697cb9074c4aa6a1c8b9696e863ccc
ujpadmin@okachimachi:/var/log/journal/ec697cb9074c4aa6a1c8b9696e863ccc$ ls -lat|head -n 10🆑
total 595808
-rw-r-----+ 1 root systemd-journal 16777216 May 18 15:09 system.journal
-rw-r-----+ 1 root systemd-journal 8388608 May 18 15:05 user-1000.journal
-rw-r-----+ 1 root systemd-journal 8388608 May 18 13:09
user-1000@2029b5e8a9554854860e852af8b6de59-000000000011b6ce-0006520d78dce2e4.journal
drwxr-sr-x+ 2 root systemd-journal 20480 May 18 13:09 .
-rw-r-----+ 1 root systemd-journal 8388608 May 18 13:09
system@5dae244f7363483996e6ab772a1f749a-000000000011f722-0006520fbb78cd8b.journal
-rw-r-----+ 1 root systemd-journal 16777216 May 18 13:09
system@2029b5e8a9554854860e852af8b6de59-000000000011b6cf-0006520d78de5769.journal
-rw-r-----+ 1 root systemd-journal 8388608 May 18 10:27
user-1000@888f6e43bd0a4a5fbd7dfffaffda42be-000000000011a1aa-00065205f4d622c4.journal
-rw-r-----+ 1 root systemd-journal 8388608 May 18 10:27
system@2029b5e8a9554854860e852af8b6de59-000000000011b121-0006520d783a4b0f.journal
-rw-r-----+ 1 root systemd-journal 8388608 May 18 10:27
system@888f6e43bd0a4a5fbd7dfffaffda42be-000000000011a081-00065205e8d9b947.journal
ujpadmin@okachimachi:/var/log/journal/ec697cb9074c4aa6a1c8b9696e863ccc$
- ここには,次の様なものが保存されている.
- system.journal(システムログ)
- journalctl -u systemd-journald -fで確認可能
- OSの根幹(システム全体)や、管理者権限(root)で動いているサービスのログ.
- ネットワーク(NetworkManager)の接続ログ
- Surface Go 2の温度管理(thermald)の警告やエラー
- SSHで外部からログインした際の接続記録
- OSの起動・シャットダウンのプロセス
- user-1000.journal(ユーザーログ)
- journalctl --user -fで確認可能
- UID 1000(一般ユーザー)の権限下で動いているアプリやプロセスのログ.
- 自動起動設定(.desktop)で立ち上がっている Chromium(ブラウザ)が出したエラーや警告,Webサイトの読み込みエラー
- LXQt(デスクトップ環境)のシステムが出したエラー
- ユーザー権限(ujpadminユーザーなど)で定期実行している自作スクリプトの出力結果
journaldのログファイルの保存ルールを設定
- ログファイルは次のルールで保存されている.
- デフォルトのローテーションタイミング(条件)
- システムの総容量制限に達したとき(最優先)
- ログが保存されているハードディスク(SSD)の総容量の10% 、または上限4GB のどちらか小さい方に達したタイミング。
- ストレージの空き容量が少なくなったとき
- SSDの空き容量が残り15% を下回りそうになったタイミング(ログがこれ以上増えるとシステムが危険と判断し、古いものから消していきます)。
- 個別のログファイルが大きくなったとき
- 現在書き込んでいる1つのログファイルが約8M〜512MB(設定による最大値の1/8)に達したタイミング。
- この時、ファイルが「過去ログ」として切り離され(ローテーション)、新しいファイルが作られます。
- 保存期間を過ぎたとき
- 設定されていれば、指定日数(例:30日など)が経過したタイミングで古いログが消えます(Ubuntuのデフォルトは期間無制限 )。
- 今回は200MBか7日間を過ぎた時と設定する.
ujpadmin@okachimachi:~$ sudo mkdir -p /etc/systemd/journald.conf.d/🆑
[sudo] password for server:🔑
ujpadmin@okachimachi:~$ echo -e "[Journal]\nSystemMaxUse=200M" | sudo tee /etc/systemd/journald.conf.d/maxuse.conf🆑
[Journal]
SystemMaxUse=200M
ujpadmin@okachimachi:~$ echo "MaxRetentionSec=7day" | sudo tee -a /etc/systemd/journald.conf.d/maxuse.conf🆑
MaxRetentionSec=7day
ujpadmin@okachimachi:~$ sudo cat /etc/systemd/journald.conf.d/maxuse.conf🆑
[Journal]
SystemMaxUse=200M
MaxRetentionSec=7day
ujpadmin@okachimachi:~$
ujpadmin@okachimachi:~$ sudo systemctl restart systemd-journald🆑
ujpadmin@okachimachi:~$
ujpadmin@okachimachi:~$ journalctl --disk-usage🆑
Archived and active journals take up 199.9M in the file system.
ujpadmin@okachimachi:~$
- 580MBあったけど200MB以下に減った.すぐ実行された模様.
ディスク容量のモニタリングを行う
- ディスク容量不足になったら,メールを送信する仕組み.
- サイネージは基本ディスク容量は増えないが,念のため.
ujpadmin@okachimachi:~$ cd ~/scripts/🆑
ujpadmin@okachimachi:~/scripts$
ujpadmin@okachimachi:~/scripts$ cat disk_monitor.sh🆑
#!/bin/bash
# --- 【設定項目】環境に合わせて書き換えてください ---
ALERT_PERCENT=15
# 空き容量が「残り何%」以下になったらアラートを出すか
TO_EMAIL="admin@example.com" # 通知先のメールアドレス
FROM_EMAIL="ujpadmin@okachimachi" # 送信元のメールアドレス
# --------------------------------------------------
# 現在のルートディレクトリ(/)の「空き容量の%」を数値で取得
CURRENT_FREE=$(df / | awk 'NR==2 {print $5}' | sed 's/%//')
# 使用率から空き容量(%)を計算
FREE_PERCENT=$((100 - CURRENT_FREE))
# 設定した空き容量(%)を下回ったらメールを送信
if [ "$FREE_PERCENT" -le "$ALERT_PERCENT" ]; then
HOSTNAME=$(hostname)
SUBJECT="[警告] ${HOSTNAME} のディスク空き容量が低下しています"
# メールの本文を作成
BODY="サイネージ端末 (${HOSTNAME}) のディスク空き容量が残り ${FREE_PERCENT}% になりました。\n\n現在のディスク使用状況:\n$(df -h /)"
# Postfixを使ってメールを送信
echo -e "Subject: ${SUBJECT}\nFrom: ${FROM_EMAIL}\nTo: ${TO_EMAIL}\n\n${BODY}" | /usr/sbin/sendmail -t
fi
ujpadmin@okachimachi:~/scripts$ chmod +x disk_monitor.sh🆑
ujpadmin@okachimachi:~/scripts$
-
メールアドレスと,残りの容量部分を調整.
- crontabで設定する.
ujpadmin@okachimachi:~$ crontab -l|grep -v ^#🆑
@reboot sleep 30 && echo "サイネージ稼働開始okachimachi" | mail -s "【通知】 サイネージ" xxxx@xxxxx.jp
0 * * * * /bin/bash /home/server/scripts/disk_monitor.sh
ujpadmin@okachimachi:~$
|
|