近年インターネット上のサーバーを個人が運営することはそれほど難しいことではなくなりました。
しかしサーバーリソースは有限で、無制限にCPUやディスクを使用することはできません。サーバーの運営会社から警告を与えられたり、膨大な利用料金を請求されることがないようにするためには、サーバーにどのような負荷がかかっているかを常に把握していることが重要となります。
本日紹介する「sar」コマンドは、そのようなサーバー監視に役立てることができるモニタリングツールの一つです。導入が容易で、過去の情報を遡って調べることができるので、サーバーが重かったときの状態を後から調査することも可能です。
以下使用方法を説明します。
sarコマンドのインストール
sarコマンドは「sysstat」パッケージに含まれていて(sarパッケージではありません)、Linuxでは以下のコマンドでインストールすることができます。
# apt-get install sysstat # yum install sysstat
sysstatをインストールすると、cron経由で情報が自動的に保存されていきますが、sarコマンドを利用してリアルタイムの情報を確認することもできます。例えば「sar 1 10」と入力すると1秒間隔で10回情報を表示します。
表示の意味は以下の通りです。
- %user: ユーザーレベル(アプリ)のCPU使用率
- %nice: nice値を指定したユーザーレベルのCPU使用率
- %system: システムレベルのCPU使用率
- %iowait: CPUがアイドル時に未処理のディスクI/O要求があった時間の割合
- %steal: 仮想CPUが不本意に待機した割合
オプションを指定していないときはCPUの情報が表示されますが「sar -b」でディスクIOの状態が「sar -n DEV」でネットワークの状態が確認できます。
cronの設定
sysstatをインストールすると/etc/cron.dに「sysstat」という名前のcron設定ファイルが作られます。以下のような内容です。
*/10 * * * * root /usr/lib64/sa/sa1 1 1 # 0 * * * * root /usr/lib64/sa/sa1 600 6 & # Generate a daily summary of process accounting at 23:53 53 23 * * * root /usr/lib64/sa/sa2 -A
10分に1回「/usr/lib64/sa/sa1」コマンドが呼び出されて情報が保存され、1日に1回23時53分に「/usr/lib64/sa/sa2 -A」が呼び出されてサマリ情報が保存されることが分かります。
これらコマンドによって作られるログファイルは/var/log/sa以下に保存されます。「saXX」(XXは2桁の日付に対応した数字)がsa1コマンドで保存されるバイナリ形式のログファイル、「sarXX」がsa2コマンドで作られるテキスト形式のファイルとなります。
過去の情報を参照したい場合、sarコマンドでこのバイナリログファイルを参照します。例えば、今月の25日の情報を確認したい場合、以下のように実行します。
# sar -f /var/log/sa/sa25
この場合も表示する情報や、時間などさまざまなオプションが指定可能です。詳しくは「man sar」でご確認ください。
まとめ
sysstatをインストールすると、システムの状態を過去に遡って調査することができます。表示される情報は生のデータで直感的に分かりづらい部分もありますが、Linuxサーバーにインストールしておけばトラブル発生時、問題解決に役立ててることができそうです。