System Activity Reporter (SAR) を設定し、SAR コマンドを使用して Amazon Elastic Compute Cloud (Amazon EC2) Linux インスタンスのパフォーマンスメトリクスをモニタリングしたいと考えています。どうすればよいですか?
簡単な説明
SAR モニタリングツールを使用すると、CPU、メモリ、および I/O の使用状況に応じて、パフォーマンスデータを収集できます。履歴メトリクスを収集するように SAR を設定できます。
解決方法
SAR をインストールする
sysstat パッケージの一部である SAR は、新しい Linux ディストリビューションではデフォルトで利用できない場合があります。詳細なインストール手順については、Amazon Linux、RHEL、CentOS、または Ubuntu を実行している自分の EC2 インスタンスに対して、ATOP および SAR モニタリングツールを設定する方法を教えてくださいをご参照ください。
設定の概要
インストール後に、設定ファイル
/etc/sysconfig/sysstat を表示および編集できます。設定ファイルには、次のデフォルト値が含まれています。
- HISTORY=28 - このパラメータは、SAR がパフォーマンスログファイルを保持する期間を決定します。デフォルト値は 28 日間です。
- COMPRESSAFTER=31 - このパラメータは、SAR がファイルを圧縮する日数を決定します。デフォルト値は 31 日間です。
注: ログファイルを 28 日間を超えて保持するように設定ファイルを設定した場合、SAR は各月のファイルを別のディレクトリに保持します。
- SA_DIR=/var/log/sa - SAR はこの場所にログファイルを保存します。
- ZIP="bzip2" - 圧縮されたログファイルを含むデフォルトの zip ファイルです。ファイルを 31 日間を超えて保持する場合は、圧縮を有効にしてください。圧縮ファイルは、可能な限り最小限のディスク領域を占有します。
sadc (システムアクティビティデータコレクタ) オペレーションは、データ収集を実行します。収集されたデータはテキスト形式で書き込まれ、/var/log/sa/ ディレクトリ内の sar## ファイルに格納されます。
sadc オペレーションは、次の 2 つのコンポーネントに分類されます。
- sa1 - バイナリデータを収集し、システムアクティビティの日次データファイルに保存します。
- sa2 - /var/log/sa ディレクトリに日次レポートを書き込みます。
/var/log/sa/ ディレクトリには、次の 2 つのファイルセットが含まれています。
- sa# - システムアクティビティバイナリデータファイル。
- sar## - システムアクティビティレポートファイル。
注: ## は該当月に属する日を表します。
パーティションの統計情報やファイルシステムの統計情報など、ディスク統計以外のデータを収集できます*。*収集するデータを変更するには、次の操作を実行します。
1. vi エディタなどのテキストエディタを使用して、/etc/sysconfig/sysstat ファイルにアクセスします。
vi /etc/sysconfig/sysstat
2. SADC_OPTIONS を -S Disk から -S XALL に変更します。
SADC_OPTIONS=" -S XALL"
データ収集間隔を設定する
次のコマンドを実行して、データを生成するために、SAR ユーティリティが crontab で現在実行しているスクリプトを表示します。
cat /etc/cron.d/sysstat
デフォルトでは、SAR は 10 分ごとにデータを生成します。これは、10 分ごとに実行される cron によるものです。この時間を編集して、SAR がより短い間隔またはより長い間隔でデータを生成できるようにすることができます。以下では、データが 10 分ごとに生成されるように設定されている crontab ファイルの例を示しています。
*/10 * * * * root /usr/lib64/sa/sa1 1 1
cron を 5 分または 1 分間隔で実行するように変更するのがベストプラクティスです。より短い間隔に変更することで、スパイクが観察された場合や毎分モニタリングが必要な場合に対応できます。
間隔を変更するには、次の操作を実行します。
1. /etc/cron.d/sysstat ファイルにアクセスします。
vim /etc/cron.d/sysstat
実行時間を 10 から 5 に変更します。
@reboot /usr/lib64/sa/sa1 --boot
*/5 * * * * root /usr/lib64/sa/sa1 1 1
注: 前の例では、@reboot 行は、OS が再起動したときにカウンターをリセットします。これは任意ですが、ベストプラクティスです。
必要に応じてパフォーマンスレポートを生成するためのコマンドの例
CPU 使用状況レポート
CPU 使用状況のデータレポートを生成するには、sar コマンドを使用します。次のコマンド例では、2 秒ごとに 5 回、使用状況のデータレポートを生成します。次のコマンドでは、-P は個々の CPU またはコアを示します。0、1、2、3 などを使用して統計情報を生成する CPU またはコアを指定します。または、-P ALL コマンドを使用して、すべての CPU の統計を表示できます。
sar 2 5 -P 0
メモリの統計情報レポート
メモリの統計情報レポートを生成するには、-r オプションを使用します。以下では、2 秒ごとに 5 回、メモリの統計情報を生成するサンプルコマンドを示しています。
sar -r 2 5
ブロックデバイスの統計情報レポート
ブロックデバイスの統計情報レポートを生成するには、-d オプションを使用します。以下では、2 秒ごとに 5 回、ブロックデバイスの統計情報を生成するサンプルコマンドを示しています。次の例では、-p オプションは、/dev に表示されるデバイス名を表示します。
sar -d -p 2 5
ネットワーク統計レポート
ネットワークの統計情報レポートを生成するには、-n オプションを使用します。次の例に示すように、TCP、UDP、NFS などの特定のエンティティまたは ALL に関する統計を生成できます。
sar -n TCP 2 5
sar -n UDP 2 5
sar -n ALL 2 5
最新のログファイルを読み取る
sar コマンドを実行すると、/var/log にある最新のログファイルから詳細が抽出されます。ファイル全体を読み取るには、次の例に示すように -f オプションを使用します。
sar -f /var/log/sa
特定の日のログの詳細を抽出する
ログファイルは日ごとに保存されます。特定の日の詳細を抽出する場合は、その日付に関連する sa ファイルに対して -f オプションを使用します。例えば、次のコマンドは、現在の月の 12 日目のデータを含むログファイルのすべてのデータを表示します。
sar -f /var/log/sa/sa12
ログファイルから特定の統計情報を読み取る
メモリの統計情報
すべてのメモリの統計情報を読み取るには、-r オプションを使用します。次のサンプルコマンドは、該当月の 12 日目に生成されたログファイルのすべてのメモリの統計情報を表示します。
sar -f /var/log/sa/sa12 -r
I/O アクティビティ
結合されたすべての I/O アクティビティを表示するには、-b オプションを使用します。次のサンプルコマンドは、該当月の 12 日目に生成されたログファイルのすべての I/O アクティビティを表示します。
sar -f /var/log/sa/sa12 -b
ブロックデバイスの統計情報
ブロックデバイスの統計情報を表示するには、-dp オプションを使用します。次のサンプルコマンドは、該当月の 12 日目に生成されたログファイルのすべてのブロックデバイスの統計情報を表示します。
sar -f /var/log/sa/sa12 -dp
ネットワークの統計情報
ネットワークの統計情報を表示するには、-n オプションを使用します。次のサンプルコマンドは、該当月の 12 日目に生成されたログファイルのすべてのネットワークの統計情報を表示します。
sar -f /var/log/sa/sa12 -n ALL
CPU の統計情報
CPU の統計情報を表示するには、-P オプションを使用します。次のサンプルコマンドは、CPU 0 の CPU の統計情報を表示します。
sar -f /var/log/sa/sa12 -P 0
特定の期間の統計情報を表示する
-s オプションと -e オプションを使用して、開始時刻と終了時刻を指定します。入力する時刻は 24 時間形式である必要があります。デフォルトの終了時間は 18:00 です。次のサンプルコマンドは、該当月の 30 日目の 2:00~5:00 の間に生成されたログファイルのすべてのブロックデバイスの統計情報を表示します。
sar -f /var/log/sa/sa30 -dp -s 02:00:00 -e 05:00:00
関連情報
sar(1) -Linux man page