この記事は NTTドコモソリューションズ AdventCalendar 2025 の 4 日目の記事です。
普段は RHEL の問合せサポートやカーネル関連の技術調査をしています。RHEL の問合せサポートは、週に 1 回はリソース情報の解析依頼が担当に来ますので、今回は sar のグラフ化について記載します。
リソース解析といえば…
RHEL のリソース解析といえば sysstat(sar) です。RHEL7 から pcp も使えるようになりましたが、まだまだ sysstat(sar) を利用しているプロジェクトも多いです。
sar は、CPU 使用率、メモリ、ネットワーク、ストレージ、などのシステムリソースを収集してくれるツールです。細かい解析のはじめに、全体をつかむのに利用します。
sar は /var/log/sa 配下にログを生成します。謎のバイナリ形式ファイル(sa01みたいなやつ)と、テキストファイル(sar01みたいなやつ)のアレです。
みなさんは sar の可視化には何を使いますか?テキストを目視確認でしょうか? kSar でしょうか? それとも Excel のマクロでグラフ生成でしょうか?Python に詳しい方なら Pandas でスクリプトを組むでしょうか?これらよりもお手軽に使えるのが sadf です。
sadf でグラフを作る
下記のように実行するだけで、グラフが生成できます。
$ sadf -g -T -- -A /var/log/sa/sa20 > sar.svg
sar のテキストファイルと比べると微妙に用語が異なるところもあります(たとえば kbmemfree じゃなくて MBMemFree になってたりします)が、 sar の情報が一覧できます。テキストファイルよりも目に優しいですし、ファイルのやり取りも楽です。
グラフ化が使えるのは RHEL8 から
sadf は RHEL7 から存在しますが、グラフ化オプション(-g)に対応しているのは RHEL8 同梱版からです。また sar バイナリには互換性がありますので、たとえば、RHEL7 で取得した sar バイナリを RHEL8 や RHEL9 で実行するとエラーになります。
$ sadf -g -T -- -A sa_rhel79 > sar.svg
システム動作情報ファイルの形式が正しくありません: sa_rhel79
sysstat (バージョン 10.1.5) の sar/sadc によって作られたファイル
sysstat の現在のバージョンではこのデータファイル (0x2171) の形式を読み込めません
「RHEL7 EUS を利用している人は対象外か…」と思った方も諦めないでください。RHEL8 からは sadf コマンドにバイナリバージョンの変換オプション(-c)が存在します。これを実行すれば、Hnuu...uuuununu...Hnuu...uuuununu... という苦しい悲鳴とともに変換できます。
$ sadf -c sa_rhel79 > sa_rhel79_new
file_magic: OK
HZ: Using current value: 100
file_header: OK
file_activity: A_CPU A_PCSW A_SWAP A_PAGE A_IO A_MEMORY A_HUGE A_KTABLES A_QUEUE A_NET_DEV A_NET_EDEV A_NET_NFS A_NET_NFSD A_NET_SOCK OK
Statistics:
Hnuu...uuuununu...Hnuu...uuuununu...
File successfully converted to sysstat format version 12.5.4
RHEL7 で取得したバイナリも sadf -c でバージョンを変換すれば、RHEL8 や RHEL9 (-g オプションが存在するバージョン)でも実行できるようになりました。
$ sadf -g -T -- -A sa_rhel79_new > sar.svg
なお変換時の細かいルールは -O オプションで指定できます。
sadf を使ってみよう
みなさんも sadf -g を使って、お手軽にリソース情報をグラフ化しましょう!
記載されている会社名、製品名、サービス名は、各社の商標または登録商標です。
