インフラエンジニアXの備忘

とある企業のシステム部門のインフラエンジニアです。忘れっぽい自分のメモ書きとしてこのブログを使用します。

sarコマンドの使用方法

あるシステムの負荷を確認したいとき、cactiなどがあれば視覚的に負荷を確認できて
1週間くらいであれば、遡っての確認が可能なので便利です。


がッしかし、外部のVPSにのせているようなサービスの場合は、
負荷ツールなどを用意するのがめんどくさい場合がある。
でそれをコマンドレベルで確認することもできるのがsarコマンド


無論、現在の負荷をロードアベレージ、CPU、MEM、スワップなどに分けて確認することもできるし
便利だわー。今回はさくらのVPS上で動作しているCentOS6で確認。


どうやらさくらインターネットVPSイメージにはデフォルトで入っていた。
ない場合はyumコマンドでインストールすればOK。

# yum install -y sysstat


で基本的な利用方法は

sar -オプション 監視間隔 監視回数

# sar -q 1 3600  →ロードアベレージを1秒間おきに1時間監視する。
Linux 2.6.32-279.19.1.el6.i686          04/20/15        _i686_  (3 CPU)

20:00:24      runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15
20:00:25            0       170      0.00      0.00      0.00
20:00:26            0       170      0.00      0.00      0.00
20:00:27            0       170      0.00      0.00      0.00
20:00:28            0       170      0.00      0.00      0.00
20:00:29            0       170      0.00      0.00      0.00
20:00:30            0       170      0.00      0.00      0.00
20:00:31            0       170      0.00      0.00      0.00
20:00:32            0       170      0.00      0.00      0.00
20:00:33            0       170      0.00      0.00      0.00
20:00:34            0       170      0.00      0.00      0.00
20:00:35            0       170      0.00      0.00      0.00


となる。

オプション 説明 メモ
-u CPU状況の表示 userが利用しているCPUや、iowait中のCPUを表示
-q ロードアベレージを表示 プロセス数やスレッド数、LAを表示
-r メモリ状況を表示 メモリの利用率なども表示
-W スワップ状況を表示 スワップインとスワップアウトを表示
-f /var/log/sa/saファイルを読み込んで表示 cronでファイルローテされているので、何日か前の状態を確認可能


ということで、お目当ての、遡っての確認方法はこうなります。

# sar -q -f /var/log/sa/sa14 →14日のロードアベレージを確認する。
Linux 2.6.32-279.19.1.el6.i686         04/14/15        _i686_  (3 CPU)

00:00:01      runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15
00:10:01            1       181      0.00      0.00      0.00
00:20:01            1       181      0.00      0.00      0.00
00:30:01            2       184      0.16      0.05      0.01
00:40:01            1       181      0.00      0.01      0.00
00:50:01            1       181      0.00      0.00      0.00
01:00:02            1       182      0.00      0.00      0.00
  |
  |


sオプションとeオプションで指定した時間の抜き出しも可能とか便利すぎ。

# sar -f sa14 -q -s 12:00:00 -e 13:00:00 →14日の12時ー13時のロードアベレージを確認する。
Linux 2.6.32-279.19.1.el6.i686         04/14/15        _i686_  (3 CPU)

12:00:01      runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15
12:10:01            1       183      0.00      0.00      0.00
12:20:01            1       181      0.00      0.00      0.00
12:30:01            1       178      0.00      0.00      0.00
12:40:01            1       181      0.00      0.00      0.00
12:50:01            1       179      0.00      0.00      0.00
Average:            1       180      0.00      0.00      0.00


なお、saファイルで確認できるログの間隔は10分毎になっています。
これ5分間隔にした場合については

# vi /etc/cron.d/sysstat
*/10 * * * * root /usr/lib/sa/sa1 1 1
  ↓
*/5 * * * * root /usr/lib/sa/sa1 1 1


これでOK。


vmstatで1秒間の確認とかも、ものすごく便利なんですが
時間が記載されていないので、あとから確認する時とかはsarは便利かなと思います。


sysconfig配下のsysstatを変更することで保存期間を延ばしたりできるようです。


すごく参考にさせていただきました。ありがとうございました!!
sarコマンドでLinuxサーバのシステムモニタリングを行う方法


複数ターミナルたてれば、一気に主要項目の確認ができて
ボトルネックとかの確認に役立てるし、本当に便利ですね。


[24時間365日] サーバ/インフラを支える技術 ?スケーラビリティ、ハイパフォーマンス、省力運用 (WEB+DB PRESS plusシリーズ)

[24時間365日] サーバ/インフラを支える技術 ?スケーラビリティ、ハイパフォーマンス、省力運用 (WEB+DB PRESS plusシリーズ)


楽天 surface pro3