sarコマンドでLinuxサーバのシステムモニタリングを行う方法

   2018/03/20

sar

sarコマンドを使うことで、LinuxサーバのCPUやメモリ、DISK IOなどの様々な情報のモニタリングが可能です。

サーバを運用する上で、モニタリングは非常に重要です。

車にはスピードやガソリン残量、モーターの回転数などの情報が見れるようになっているため、スピード違反やガス欠になるのを事前に防ぐことが可能です。

サーバについても、CPUやメモリ、DISK IOなどの情報を取得することで、異常の事前検知や、問題発生時の原因調査などが円滑におこなうことができるようになります。

今回は、sarコマンドを利用して統計情報を取得する方法を紹介します。

sarコマンドとは

sarとは、sysstatパッケージに含まれている、システムの統計情報を取得するコマンドです。名前は、System Admin Reporterの頭文字をとったものになります。

大きな特徴としては、過去にさかのぼって情報が見れることです。topやvmstatでも同様の情報を確認することができますが、リアルタイムでの確認しかできません。sarの場合は、cronにて定期実行することで、過去の情報を保存し、あとから見返すことが可能になります。

sarの導入方法

sysstatのインストール方法

CentOSのデフォルトインストールでは、sarコマンドを利用することはできません。sysstatパッケージに入っているので、インストールを行います。

yum install sysstat

デフォルトでは、保存期間が短いので25日保存に伸ばしておきます。

vi /etc/sysconfig/sysstat
 
# sysstat-9.0.4 configuration file.
 
# How long to keep log files (in days).
# If value is greater than 28, then log files are kept in
# multiple directories, one for each month.
HISTORY=25
 
# Compress (using gzip or bzip2) sa and sar files older than (in days):
COMPRESSAFTER=26
 
# Parameters for the system activity data collector (see sadc manual page)
# which are used for the generation of log files.
SADC_OPTIONS="-S DISK"

取得間隔の変更

デフォルト設定では、10分間隔の情報取得が可能です。

なるべく短い間隔で取得できたほうが良いので、1分間隔で取得できるようにしてみましょう。

sysstatはcrondで定期実行されており、次のような設定になっています。

# cat /etc/cron.d/sysstat
# Run system activity accounting tool every 10 minutes
*/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

「root /usr/lib64/sa/sa1 1 1」の設定を次のように変更することで、1分間隔で取得が可能になります。

*/1 * * * * root /usr/lib64/sa/sa1 1 1

sarコマンドの使い方

ここでは、CentOS6を前提に説明してきます。

sarコマンドの実行方法(過去の情報を見る場合)

当日の情報を見る場合

当日の情報をみるためには次のコマンドを実行します。

sar <確認対象オプション>

確認対象オプションは別途説明します。何も指定が無い場合は、CPUの情報が確認できます。

前日の情報を見る場合

前日以前の情報を見るためには、「-f」オプションを利用します。

sar -f <ログファイル名>

ログファイルは、「/var/log/sa/」へ保存されており、sa01のように、saの後に日付がついたファイル名になっています。

時間を区切ってみる場合

「-s」「-e」:オプションを利用することで、時間を絞って確認することも可能です。

sar -s  -e 

「-s」では、開始時刻を指定します。「-e」では終了時刻を指定します。

当日の11時から12時の時間帯の情報を表示する場合は、次のように指定します。

sar -s 11:00:00 -e 12:00:00

同じ条件で、日付を指定する場合は、「-f」オプションを追加します。

sar -f /var/log/sa/sa02 -s 11:00:00 -e 12:00:00

 

sarコマンドの実行方法(現在の情報を見る場合)

リアルタイムで情報を見たい場合は、確認間隔と繰り返し回数を指定します。

sar <確認間隔> <繰り返し回数>

1秒おきに60回確認したい場合は次のようになります。

sar 1 60

sarコマンドで確認できるもの

主要なオプションは次の通りです。

オプション 確認項目
-u CPU
-u -P ALL CPUを各コアごとに
-q ロードアベレージ
-r メモリ
-W スワップ
-n DEV ネットワーク
-b ディスクIO

2日の12時から13時の間の、メモリ状態を確認したい場合は次のようなコマンドになります。

sar -r -f /var/log/sa/sa02 -s 12:00:00 -e 13:00:00

sarコマンドの結果の見方

[-u] CPUの結果の見方

sar -u

00時00分01秒 CPU %user %nice %system %iowait %steal %idle
00時01分01秒 all 0.69 0.00 1.11 0.00 0.00 98.21
00時02分01秒 all 0.22 0.00 0.20 0.07 0.00 99.52
オプション 確認項目
%user ユーザが利用しているCPU使用率
%nice nice値を変更しているプロセスのCPU使用率
%system システムが利用しているCPU使用率
%iowait IO待ちしているCPU使用率
%steal ゲストOSが割り当て要求をしたが、割り当ててもらえなかったCPU使用率
%idle 待機中のCPU使用率

%userが上昇している場合
httpdやmysqlなどの特定アプリケーションでCPUが消費されている可能性があります。psコマンド等で対象のアプリケーションを確認しましょう。

%systemが上昇している場合
コンテキストスイッチが頻発している可能性があります。httpdへのアクセス集中が発生していないか等を確認します。

%iowaitが上昇している場合
メモリ不足でswapアウトしているか、コピー処理などの大きなディスクIOが発生している可能性があります。プロセスの確認や、メモリ状況を調べます。

[-q] ロードアベレージの結果の見方

sar -q

01時25分01秒 runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15
01時26分01秒 0 119 0.12 0.07 0.03
01時27分01秒 0 117 0.04 0.05 0.03
項目 内容
runq-sz 実行待ちのキューに入っているプロセス数
splist-sz プロセスリスト中のプロセス数とスレッド数
ldavg-1 過去1分間のロードアベレージ
ldavg-5 過去5分間のロードアベレージ
ldavg-15 過去15分間のロードアベレージ

[-r] メモリの結果の見方

sar -r

01時25分01秒 kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit
01時26分01秒 3580532 262448 6.83 13756 115812 1203780 20.27
01時27分01秒 3580828 262152 6.82 13796 115816 1203756 20.26
項目 内容
kbmemfree 物理メモリの空き容量
kbmemused 使用中の物理メモリ量
%memused 物理メモリの使用率
kbbuffers バッファとして使用されている物理メモリの容量
kbcached キャッシュとして使用されている物理メモリの容量
kbcommit 事前に確保されているメモリ容量
%commit 事前に確保されているメモリ容量の割合

バッファとキャッシュはカーネルが自動で確保するメモリ量です。実際のアプリケーションにて、利用されているメモリ量を調べる場合は、使用中の物理メモリからバッファとキャッシュ分を引く必要があります。

kbmemused-(kbbuffers+kbcached)

[-W] スワップの結果の見方

sar -W

01時25分01秒 pswpin/s pswpout/s
01時26分01秒 0.00 0.00
01時27分01秒 0.00 0.00
項目 内容
pswpin/s 1秒あたりスワップインしたページ数
pswpout/s 1秒あたりスワップアウトしたページ数

[-n DEV] ネットワークの結果の見方

sar -n DEV

01時25分01秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
01時26分01秒 eth0 0.22 0.22 0.02 0.02 0.00 0.00 0.00
01時26分01秒 lo 0.10 0.10 0.01 0.01 0.00 0.00 0.00
項目 内容
IFACE インターフェース名
rxpck/s 1秒あたりの受信パケット数
txpck/s 1秒あたりの送信パケット数
rxkB/s 1秒あたりの受信データサイズ(KByte)
txkB/s 1秒あたりの送信データサイズ(KByte)
rxcmp/s 1秒あたりの圧縮受信パケット数
txcmp/s 1秒あたりの圧縮送信パケット数
rxmcst/s 1秒あたりのマルチキャスト受信パケット数

全てのインターフェースの情報がでてくるので、grepして確認すると見やすいと思います。

sar -n DEV|grep eht0

[-b] ディスクIOの結果の見方

sar -b

01時25分01秒 tps rtps wtps bread/s bwrtn/s
01時26分01秒 2.47 0.05 2.42 0.40 80.89
01時27分01秒 0.38 0.00 0.38 0.00 4.40
項目 内容
tps 1秒あたりのIOリクエスト数
rtps 1秒あたりの読み込みIOリクエスト数
wtps 1秒あたりの書き込みIOリクエスト数
bread/s 1秒あたりの読み込みデータ量
bwrtn/s 1秒あたりの書き込みデータ量

バイナリファイル出力の仕方

通常saファイルは、cronで自動で出力されます。これを手動で出力したい場合は、-0オプションを利用します。

下のコマンドは全情報を「/tmp/sa_dummy」ファイルへ出力する例です。

sar -A -o /tmp/sa_dummy

クラウド環境で利用する場合の注意点

クラウド環境で利用する場合は、スケールアップに注意する必要があります。コア数が変更になると、sarのログ情報が壊れてしまいます。スケールアップ前には必ずログ情報を退避するようにしましょう。

sar -f sa01
システム動作情報ファイルの形式が正しくありません: sa01

ログファイルが無いとcronの定期実行の際に自動で作成されてしまうので、スケールアップ後も、必ずログが正常に読み込めることを確認するようにしてください。

sarファイルが読み込めない場合は

別の環境で取得したデータファイル(saXX)を-fオプションで読もうとした場合に、次のようなエラーで読み込めない場合があります。

sar -f sa05
システム動作情報ファイルの形式が正しくありません: sa05
sysstat バージョン 9.0.4 の sar/sadc を使って作られたファイル
sysstat の現在のバージョンではこのデータファイル (0x2170) の形式を読み込めなくなっています
Format of this file had been changed in sysstat-9.0.4-20.el6
due to incompatibility of the certain data types with the current kernel.
For more information, please refer to the description of the "--legacy"
option in the sar(1) manual page.

データファイルsaXXを作ったサーバと、実際に読み込もうとしているサーバのsysstatのバージョンが異なると正常に読み込むことができません。

その場合は、「–legacy」オプションを試してみましょう。古いバージョンで作成されたデータファイルを読むことができます。

sar -f sa05 --legacy

まとめ

sarコマンドを利用することで、Linuxサーバの様々な情報を確認することができるようになりました。ログを残しておくことは、何かあったときに役立つ情報なので、必ず取得するようにしましょう。

sarコマンドの特徴をまとめると次の通りです。

  • プラットフォームはLinux
  • CPU、メモリ、DISK IOなどの情報が確認できる
  • リアルタイムだけでなく、過去の情報を確認できる
  • 過去情報の収集はcrontabにて実施
  • クラウド環境でスケールアップをするときは要注意

追伸.文字だけじゃイヤだ!俺は、グラフィカルにsarの結果を見たいんだっ!という人は、ksarを使って、sarの結果をグラフ化する方法をご覧ください。

  • このエントリーをはてなブックマークに追加
  • Pocket

コメント一覧

  1. 師子乃 より:

    はじめまして、情報処理の勉強をしている者です。

    モニタリングについて色々学ばせていただきます!

    よろしくお願いいたします!

    • naoberry より:

      師子乃さん
      コメントありがとうございます!

      文中にも少し書いてますが、実践してみることが習得の一番の近道だと思います。

      情報処理の勉強頑張ってくださいね!

この記事へのコメントはこちら

メールアドレスは公開されませんのでご安心ください。
また、* が付いている欄は必須項目となりますので、必ずご記入をお願いします。

内容に問題なければ、下記の「コメント送信」ボタンを押してください。