grafana+prometheus でロードアベレージを監視してもいいんだけど
ちょっとログを集めたいのに、あまりにもヘビィだと思うの。
sysstat / sar を使う
古のパッケージ sar コマンドで、CPU利用率を集計する
sar / sysstat で cpu 利用率を詳しく調査する
インストール
apt でインストールが可能
sudo apt install sysstat
楽ちん
起動 と設定とタイマー
マニュアル起動(ログ書いて終了する)
sudo systemctl start sysstat-collect.service
タイマー開始
sudo systemctl start sysstat-collect.timer
タイマー間隔(取得間隔)を調整
sudo systemctl edit sysstat-collect.timer
例えば、15分に1回(初期値は10分に一回)
[Timer] OnCalendar=*:00/15
設定(ログ保存期間)
sudo vim /etc/sysstat/sysstat
/etc/sysstat/sysstat
# How long to keep log files (in days). HISTORY=30 # Compression program to use. ZIP="pixz" # Parameters for the system activity data collector (see sadc(8) manual page) SADC_OPTIONS=""
設定したポイント - 初期設定は1週間ほどなので、1ヶ月間位残しておく - xz は pixz を使うようにする。 - CPU統計がほしいだけなのでディスク統計は要らない。足りなくなったら買うだけだし
統計の確認
ログが溜まったら、取得期間全体で統計(平均)が見れられる
sudo sar
直接ログの確認(日毎ファイルになってる)
sar -f /var/log/sysstat/sa$(date +"%Y%m%d")
cat したいところだけど、バイナリなのでsar
コマンドで読む
実行例
sar -f /var/log/sysstat/sa$(date +"%Y%m%d") Linux 5.10.0-13-amd64 (acid) 2022年04月28日 _x86_64_ (8 CPU) 13時41分00秒 LINUX RESTART (8 CPU) 13時41分42秒 CPU %user %nice %system %iowait %steal %idle 13時44分30秒 all 4.80 0.50 1.17 0.36 0.00 93.17 平均値: all 4.80 0.50 1.17 0.36 0.00 93.17
指定した範囲のログの確認
takuya@:~$ sudo sar -s 13:00 -e 13:59 Linux 5.10.0-13-amd64 (acid) 2022年04月28日 _x86_64_ (8 CPU) 13時41分00秒 LINUX RESTART (8 CPU) 13時41分42秒 CPU %user %nice %system %iowait %steal %idle 13時44分30秒 all 4.80 0.50 1.17 0.36 0.00 93.17 13時50分00秒 all 4.66 0.47 1.17 0.69 0.00 93.02 平均値: all 4.71 0.48 1.17 0.57 0.00 93.07
リアルタイムモニタリング
ターミナルで表示し続けるする場合。マニュアル起動で今の状態を監視ができる。 ただし、この目的なら s-tui や htop を使ったほうがいい
1秒ごとに状態を取得する
sudo sar 1
1秒ごとに状態を取得する(最大10回,1s x 10=10sで終了)
sudo sar 1 10
マルチCPUを個別に見る
sudo sar -u -P 0,1 1 10 sudo sar -u -P 0,1,2,3 1 10 sudo sar -u -P ALL 1 10
sudo sar -q 1 10
ネットワークの状態
sudo sar -n DEV 1 10
指定したIFの状態
sudo sar -n DEV --iface=br0 1 10
リプレース・買い替えの目安に
CPUパワーが3倍に上がったとして、どこまでそのメリットを享受できるのか
金銭コストに対し、十分な時間的なリターン得られるのか。
電気代はどの程度になりそうなのか(CPUロードアベレージから概算)
など、CPU利用率を測定して計測値を集めるといろいろ見えてきそうですよね。