困っていた内容
Ubuntu22.04のEC2インスタンスにsysstatをインストールしましたが、リソース情報の取得間隔を1分で設定したところ、均等な時間間隔で取得することができません。どうしたら良いですか?
どう対応すれば良いの?
Ubuntu20 までは、AWSナレッジセンターにあるインストール手順を実行することで sysstat のインストールが行えました。
Amazon Linux、RHEL、CentOS、または Ubuntu を実行している自分の EC2 インスタンスに対して、ATOP および SAR モニタリングツールを設定する方法を教えてください。
Ubuntu22のインスタンスで上記の手順を実行すると、デフォルトの10分間隔でなら情報を取得することができますが、デフォルト以外の時間間隔を設定しようとすると取得することができません。Ubuntu20以前では設定に cron.d が使用されていましたが、Ubuntu22 では systemd が使用されている様です。
そのため、デフォルトの間隔以外でリソース情報を取得したい場合は、systemd の sysstat-collect.timer にて設定を変更する必要があります。
下記方法を実行することで Ubuntu22 へ sysstat のインストール および 均等な時間間隔(今回の場合は1分ごと)でリソース情報を取得することができました。
$ sudo apt install sysstat
$ sudo systemctl enable --now sysstat
$ sudo vi /usr/lib/systemd/system/sysstat-collect.timer
[Unit]
Description=Run system activity accounting tool every 1 minutes
[Timer]
OnCalendar=
OnCalendar=*:00/1
AccuracySec=0
$ sudo systemctl daemon-reload
sarの実行結果です。
23:13:00 CPU %user %nice %system %iowait %steal %idle
23:14:00 all 0.02 0.00 0.02 0.00 0.00 99.97
23:15:00 all 0.02 0.00 0.00 0.02 0.02 99.95
23:16:00 all 0.03 0.00 0.02 0.02 0.00 99.93
23:17:00 all 0.00 0.00 0.02 0.02 0.00 99.97
23:18:00 all 0.03 0.00 0.02 0.02 0.02 99.92
sysstat-collect.timer を設定するときに、AccuracySec=0 を記載するのを忘れない様にご注意ください。AccuracySec はタイマーが経過する精度を指定しています。この設定がないと、リソース情報を取得する間隔がずれてしまい、均等な時間間隔で値が取得できません。
※ AccuracySec=0 を指定しなかった場合の実行結果
23:13:11 CPU %user %nice %system %iowait %steal %idle
23:14:12 all 0.00 0.00 0.02 0.02 0.02 99.95
23:15:01 all 0.04 0.00 0.04 0.00 0.00 99.92
23:16:12 all 0.00 0.00 0.03 0.03 0.00 99.94
23:17:12 all 0.02 0.00 0.02 0.02 0.00 99.95
23:18:12 all 0.02 0.00 0.03 0.02 0.02 99.92
sysstat-collect.timer についての詳細は、参照情報のUbuntu22.04の公式ドキュメントをご参考ください。