こんにちは。サイオステクノロジー OSS サポート担当 山本 です。
今回は sysstat についてあれこれです。RHEL8 / CentOS8 で新しくなった要素も含めて、いろいろと見ていきます。
■sar について
定期的なシステムリソースの監視情報を記録してくれる sar は、sysstat パッケージの主たる機能です。
デフォルトでは /var/log/sa/ 配下に sar のファイルが配置されており、CPU、メモリ、I/O、ネットワークの通信状況など様々な情報が記録されています。
このディレクトリ内には “saXX” と “sarXX” の 2種類のファイルが作成されているかと思いますが、“sa” は定期的に監視情報を記録していくバイナリファイルで、“sar” は “sa” の記録を人間の読める形に変換してあるテキストファイルです。
記録される情報の詳細については過去の記事で紹介していますので、そちらを参照してください。
sar ファイルの各項目について、改めて調査してみました
・RHEL8 / CentOS8 での変更について
“sa” ファイルは sar コマンドを使用することで、人間でも読める形で標準出力に表示することができます。(もとい、”sar” ファイルはこの sar コマンドの結果をファイルに出力したものです。)
sar コマンドには様々なオプションがあるとは言え、基本的には “sar” ファイルを見れば事足りることが多く、RHEL7 / CentOS7 では sar コマンドの出番は精々当日の “sa” ファイルを確認したい場合くらいだったかと思います。
ところが、RHEL8 / CentOS8 ではこのコマンドを使ってみようかな、と思える (かもしれない) 変更が加えられています。
実際に見てみましょう。
# sar -A -f <"sa" ファイル>
ご覧のとおり、データをその数値に応じて色分けして出力してくれるようになりました。
これによって平常時と大きく違う値がある箇所を見分けやすくなる可能性がある他、”0″ の箇所が目立たない色合いになっていることで余計なデータが目につきにくくなるなど、かなり見やすくなっているかと思います。
(RHEL7 / CentOS7 では以下のようにコンソールの標準色のみでの表示でした)
sa のデータをそのまま見る機会はあまりないかもしれませんが、もし RHEL8 / CentOS8 で sa のデータを直接確認するような状況になった場合、「sar コマンドで “sa” ファイルを見る」という選択肢を覚えておくと少しだけ確認がラクになる…かもしれません。
(なお、”sar” ファイルは RHEL8 / CentOS8 でも普通のテキストファイルなので、色分けして表示される機能はありません)
■sa、sar の記録間隔変更
sysstat パッケージの初期値では、sa は 10分間隔で記録されており、sar は毎日 0時前後に作成されるようになっています。
“sa” ファイルへの記録は /usr/lib64/sa/sa1 で行なわれています。
直接このファイルを手動実行することで、実行時点での sa を記録することができたりします。
このプログラム sa1 は sysstat パッケージの導入時に自動実行するための設定が追加されますが、RHEL7 / CentOS7 と RHEL8 / CentOS8 では設定方法が違います。
それぞれの設定ファイルと、”sa” の記録間隔を変更したい場合に変更する箇所は以下になります。
・RHEL7 / CentOS7
cron で設定されています。
/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
例えば、5分間隔で記録するように変更したい場合、sa1 の行を以下のように変更します。
*/10 * * * * root /usr/lib64/sa/sa1 1 1 ↓↓↓ */5 * * * * root /usr/lib64/sa/sa1 1 1
上記ファイルの変更後、変更を反映するには以下のコマンドを実行する必要があります。
# systemctl restart crond
・RHEL8 / CentOS8
systemd の timer で設定されています。
/usr/lib/systemd/system/sysstat-collect.service
[Unit] Description=system activity accounting tool Documentation=man:sa1(8) After=sysstat.service [Service] Type=oneshot User=root ExecStart=/usr/lib64/sa/sa1 1 1
/usr/lib/systemd/system/sysstat-collect.timer
[Unit] Description=Run system activity accounting tool every 10 minutes [Timer] OnCalendar=*:00/10 [Install] WantedBy=sysstat.service
例えば、5分毎に sa を記録するように変更する場合、/usr/lib/systemd/system/sysstat-collect.timer の以下の行を変更します。
[Timer] OnCalendar=*:00/10 ↓↓↓ [Timer] OnCalendar=*:00/5
上記ファイルの変更後、変更を反映するには以下のコマンドを実行する必要があります。
# systemctl daemon-reload
■sar の設定ファイル
sa の記録間隔の変更方法は先述のとおりですが、その他の要素については設定ファイル /etc/sysconfig/sysstat で調整します。
設定ファイル内や man にも詳細な説明はありますが、以下のような項目が設定できます。
・HISTORY
“sa” ファイル、”sar” ファイルの保存日数を設定します。
28 を超える値を設定した場合、/var/log/sa/ 配下に YYYYMM (201912, 202001 など) ディレクトリが作成され、それらのディレクトリ配下に “sa”, “sar” ファイルが保存されるようになります。
(“sa”、”sar” ファイルのファイル名は日付のみ付与されるので、28 日を超えて保存する場合、ファイル名の重複が発生する可能性があるため)
・COMPRESSAFTER
・ZIP
COMPRESSAFTER で指定した日数以前の “sa” ファイル、”sar” ファイルを、ZIP で指定したプログラムで圧縮するようにします。
・SADC_OPTIONS
sa1 内で呼び出されている、 sa の記録を実際に行うプログラム sadc に渡すオプションを指定します。
sadc のオプションについては、”man sadc” などを参照してください。
・SA_DIR (RHEL8 / CentOS8 のみ)
“sa” ファイル、”sar” ファイルの保存先ディレクトリを設定します。
デフォルトは RHEL7 / CentOS7 と同じディレクトリ /var/log/sa/ です。
・REPORTS (RHEL8 / CentOS8 のみ)
“sar” ファイルを自動で作成するかどうかを設定します。
自動で “sar” ファイルを作成しないようにする場合は、”REPORTS=false” を設定します。
・YESTERDAY (RHEL8 / CentOS8 のみ)
“sar” ファイルを自動作成する際、先日・当日どちらのものを作成するかを設定します。
“sar” ファイルを自動作成するプログラム /usr/lib64/sa/sa2 の実行時刻を変更する場合、合わせて変更を検討するとよいでしょう。
RHEL8 / CentOS8 のデフォルトでは sa2 は 0:07 に実行され、前日分の “sa” ファイルから “sar” ファイルを自動作成しています。
/usr/lib/systemd/system/sysstat-summary.timer
# /usr/lib/systemd/system/sysstat-summary.timer : [Unit] Description=Generate summary of yesterday's process accounting [Timer] OnCalendar=00:07:00 [Install] WantedBy=sysstat.service
なお、RHEL7 / CentOS7 では sa2 は当日の “sar” ファイルしか作成できず、デフォルトでは 23:53 に “sar” ファイルが作成されます。
■sa の記録をグラフ表示する (RHEL8 / CentOS8 のみ)
sysstat には “sa” ファイルを様々な形式に変換する sadf コマンドが存在していますが、
RHEL8 / CentOS8 ではこのコマンドで “sa” ファイルを SVG という形式に変換できるようになりました。
例えば、”sa” ファイルの全ての情報を SVG ファイルに出力したい場合、以下のコマンドを実行します。
# sadf -g <"sa" ファイル> -- -A > sa_graph.svg
このコマンドで出力されたファイル sa_graph.svg を適当なブラウザ等で表示すると…
このように、“sa” ファイルの情報をそのままグラフで表示することができます。
なお、sadf コマンドは SVG 形式 (-g) 以外にも XML (-x)、JSON (-j)、TSV (-p) 形式などでデータを出力することができます。
RHEL7 / CentOS7 でも SVG 形式以外なら使用可能なので、”sa” のデータを何らかの形で活用したい場合、この sadf コマンドを思い出すとよいでしょう。
■最後に
今回は sysstat のちょっとしたあれこれや、RHEL8 / CentOS8 同梱版での変更点などを紹介してみました。
グラフ表示ができるようになったり、sar コマンドの色分けなど、RHEL8 / CentOS8 では sar の「見やすさ」がかなり強化されているように思えます。
sar は障害発生時のリソース状況の確認には勿論、リソースに起因する障害を未然に防ぐための確認などにも役立ちます。
「もしも」の時は来ないに越したことはありませんが、これを機に「もしも」に備えてこの sysstat を見直してみてはいかがでしょう。