CentOS 6 サーバーのリソース状態を sysstat で監視しよう

投稿者 : OSCA

[PR] "出川哲朗の充電させてもらえませんか?"で登場したロケ地を紹介するファンサイト「あの場所へ行こう!」はこちら。

 サーバーを運用していると「果たして現在リソースは足りているのか?」「一日のうちで最もリソースを使っているのはいつか?」など、サーバーの状態について知りたくなります。 一番アクセスが多い時間帯にリクエストを捌けているのでしょうか? このような悩み/疑問を解決してくれるリソース状況取得ツールは数多くありますが、本稿では sysstat について解説します。

sysstat とは?

 sysstat は、CPUやメモリの使用率やディスクI/Oの状態など監視・記録してくれるパッケージです。 このような機能を持つパッケージやコマンドは他にも数多くありますが、sysstat の優れている点はリソース状態を定期的に保存し、過去にさかのぼってリソース状態を表示できる点です。CentOS 6 に sysstat をインストールした場合、デフォルトの設定だと10分間隔でリソース状態を28日間分記録してくれます。

インストール

 sysstat は CentOS の yum リポジトリでも提供されていますので、yum install コマンドで簡単にインストールすることができます。 インストールするためのコマンドは次の通りです。(root権限でインストールします)

# yum install -y sysstat

主なコマンド

Sysstat パッケージのインストールにより新たにコマンドが利用できるようになりますが、抑えておくべき重要なコマンドは次の3つです。 (次の節から具体的に説明します)

コマンド説明
sa1 リソース状態を定期的に取得して保存するのに利用するコマンド
sa2 sa1 コマンドで保存した情報をレポート形式に整形するコマンド
sar 保存されたリソース情報を閲覧するためのコマンド
またリアルタイムでリソース状態を閲覧したい場合に利用する

設定

 上記の通り sysstat は定期的にリソース状態を保存してくれますので、「何分おきに?」「どのくらいの期間の分だけ?」を設定することができます。 これらの設定を変更する方法について解説します。

 まずはリソース状態の保存間隔の設定ですが、実は単純に Crontab の設定でコマンドを実行する設定がインストールされただけです。 /etc/cron.d/sysstat に sysstat の Crontab 設定が作成されていますので、それを編集します。

# vi /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

 上の記述のように10分間隔 (*/10) に sa1 コマンドが実行されるように設定されているので、これを自分の好きな間隔に変更すれば良いです。
 また、23時53分になるとレポートを作成する sa2 コマンドも実行されるように設定されています。 もしリソース状態の保存間隔を5分などにした場合は23時58分などに変更した方がよいかもしれません。

 次に取得したリソース状態の保存期間の設定です。 保存期間は /etc/sysconfig/sysstat という設定ファイルで決定します。 設定ファイル内の HISTORY という変数で保存期間(日数)を設定します。 但し設定できる保存期間の最大は1ヶ月分ですので注意してください。

# vi /etc/sysconfig/sysstat
# How long to keep log files (days), maximum is a month
HISTORY=7

ログファイル

 上記までの作業により定期的にリソース状態が保存されるようになりました。 情報はどこに保存されるのでしょうか? 情報は /var/log/sa フォルダに保存されます。 フォルダを覗いてみると2種類のファイルがあることが分かります。 saXX というファイルと sarXX というファイルです。 ファイル名の「XX」は日付を表しています。 ある月の1日なら「01」、23日なら「23」となります。
 定期的に取得した情報を保存するファイルが saXX で、 saXX の集計情報を日別に整理した情報が sarXX というファイルになります。 saXX はバイナリファイルですのでテキストエディタで開くことができませんが、sarXX はテキストファイルなのでテキストエディタで閲覧することができます。

ファイル名形式概要
saXX バイナリ 定期的に取得したリソース情報が保存されるファイル
sarXX テキスト saXX の情報を元に作成されるレポートファイル

ログを確認しよう

 それではログを確認してみましょう。 上記の通り sarXX ファイルは1日分を整理してレポートにしたファイルですので、それをそのまま less などで開いて確認しても良いです。 CPUの使用率の項目から始まり、様々な情報取得結果が保存されているのがわかります。

# less /var/log/sa/sar08
00:00:01 CPU %usr %nice %sys %iowait %steal %irq %soft %guest %idle
00:10:01 all  1.10 0.00 0.10    0.03   0.12 0.00  0.00   0.00 98.66
00:10:01   0  1.86 0.00 0.12    0.07   0.09 0.00  0.00   0.00 97.86
00:10:01   1  0.77 0.00 0.11    0.00   0.09 0.00  0.00   0.00 99.03
...(略)

 sar コマンドを利用すると必要な項目だけを確認したりすることができます。 sar -f でログを確認できます。 例えばある月の8日のログを確認したい場合は次のようにコマンドを実行します。 (大量に情報が表示されてしまうので、less にパイプします)

# sar -f /var/log/sa/sa08 | less

 sar コマンドはファイル名を指定しただけだと CPU の使用率を表示するようになっています。 違う情報を表示したい場合はオプションを指定します。

オプション 説明
-r メモリとスワップ
-u CPU
-b I/O
-d ブロックデバイス
-q ロードアベレージ

例えばメモリとスワップの情報を表示したい場合は -r オプションを付与して、次のようにコマンドを実行します。

# sar -r -f /var/log/sa/sa08 | less

また、特定の時間帯のログだけを確認したい場合 -s-e オプションが利用できます。 例えば 10:00~12:00 の CPU 使用率が見たければ、次のようにコマンドを実行します。

# sar -u -s 10:00:00 -e 12:00:00 -f /var/log/sa/sa08

おわりに

本稿では CentOS 6 のリソース状態を監視するためのツールとして sysstat を紹介しました。 サーバーの負荷やボトルネックを分析するために是非活用したいものです。

CentOS 6 入門へ戻る

CentOS 6のトップへ戻る

著者 : OSCA

OSCA

Java, PHP 系のWEBエンジニア。 WEBエンジニア向けコミュニティ「WEBエンジニア勉強会」を主催。 個人として何か一つでも世の中の多くの人に使ってもらえるものを作ろうと日々奮闘中。
@engineer_osca