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

   2017/06/25

sar

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

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

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

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

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

sarコマンドとは

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

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

sarコマンドの使い方

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

sysstatのインストール方法

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

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

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

当日の情報を見る場合

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

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

前日の情報を見る場合

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

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

時間を区切ってみる場合

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

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

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

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

 

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

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

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

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

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

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

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

sarコマンドの結果の見方

[-u] CPUの結果の見方

オプション 確認項目
%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] ロードアベレージの結果の見方

項目 内容
runq-sz 実行待ちのキューに入っているプロセス数
splist-sz プロセスリスト中のプロセス数とスレッド数
ldavg-1 過去1分間のロードアベレージ
ldavg-5 過去5分間のロードアベレージ
ldavg-15 過去15分間のロードアベレージ

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

項目 内容
kbmemfree 物理メモリの空き容量
kbmemused 使用中の物理メモリ量
%memused 物理メモリの使用率
kbbuffers バッファとして使用されている物理メモリの容量
kbcached キャッシュとして使用されている物理メモリの容量
kbcommit 事前に確保されているメモリ容量
%commit 事前に確保されているメモリ容量の割合

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

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

項目 内容
pswpin/s 1秒あたりスワップインしたページ数
pswpout/s 1秒あたりスワップアウトしたページ数

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

項目 内容
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して確認すると見やすいと思います。

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

項目 内容
tps 1秒あたりのIOリクエスト数
rtps 1秒あたりの読み込みIOリクエスト数
wtps 1秒あたりの書き込みIOリクエスト数
bread/s 1秒あたりの読み込みデータ量
bwrtn/s 1秒あたりの書き込みデータ量

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

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

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

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

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

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

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

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

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

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

まとめ

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

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

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

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

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

コメント一覧

  1. 師子乃 より:

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

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

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

    • naoberry より:

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

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

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

師子乃 にコメントする コメントをキャンセル

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

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