2019年7月27日土曜日

RHEL8 の sysstat の採取周期を 1 分毎に変更

RHEL8/CentOS8 では、sysstat のデフォルト採取周期を 10分 から 1分 に変更する方法が変更になっています。RHEL7 以下では cron を利用していたものが、systemd.timer ベースに変更されてしまったためです。RHEL7 以下のように簡単ではないので、備忘録として書いておこうと思います。

sysstat-collect.timer に修正を加えるのですが、sysstat パッケージの更新のことを考えると /var/lib/systemd/system 下のファイルを直接書き換えるのではなくて、systemctl edit を使ったほうが良いものと思います。
[root@hoge ~]# EDITOR=vim systemctl edit sysstat-collect.timer
[Unit]
Description=Run system activity accounting tool every 1 minutes

[Timer]
OnCalendar=  ※必要
OnCalendar=*:*:01
AccuracySec=0
上記のように入力して書き込みます。デフォルトのエディタは vim にしてくれって思いますが、いたしかたない。
[root@hoge ~]# systemctl cat sysstat-collect.timer
# /usr/lib/systemd/system/sysstat-collect.timer
# /usr/lib/systemd/system/sysstat-collect.timer
# (C) 2014 Tomasz Torcz 
#
# sysstat-11.7.3 systemd unit file:
#        Activates activity collector every 10 minutes

[Unit]
Description=Run system activity accounting tool every 10 minutes

[Timer]
OnCalendar=*:00/10

[Install]
WantedBy=sysstat.service

# /etc/systemd/system/sysstat-collect.timer.d/override.conf
[Unit]
Description=Run system activity accounting tool every 1 minutes

[Timer]
OnCalendar=
OnCalendar=*:*:01
AccuracySec=0
[root@hoge ~]# systemctl status sysstat-collect.timer
* sysstat-collect.timer - Run system activity accounting tool every 1 minutes
   Loaded: loaded (/usr/lib/systemd/system/sysstat-collect.timer; enabled; vendor preset: disabled)
  Drop-In: /etc/systemd/system/sysstat-collect.timer.d
           `-override.conf
   Active: active (waiting) since Sat 2019-07-27 21:19:18 JST; 14min ago
  Trigger: Sat 2019-07-27 21:35:00 JST; 41s left

Jul 27 21:19:18 hoge systemd[1]: Started Run system activity accounting tool every 1 minutes.
[root@hoge ~]# sar
Linux 4.18.0-80.el8.x86_64 (hoge)  07/27/19  _x86_64_ (2 CPU)

21:19:18     LINUX RESTART (2 CPU)

21:20:01        CPU     %user     %nice   %system   %iowait    %steal     %idle
21:21:01        all      0.08      0.00      0.14      0.04      0.00     99.73
21:22:01        all      0.03      0.00      0.09      0.02      0.00     99.86
21:23:01        all      0.05      0.00      0.09      0.04      0.00     99.82
21:24:01        all      0.03      0.00      0.12      0.03      0.00     99.82
21:25:01        all      0.21      1.54      0.83      0.35      0.02     97.05
21:26:01        all      0.03      0.00      0.08      0.04      0.00     99.84
21:27:01        all      0.03      0.00      0.08      0.01      0.00     99.87
21:28:01        all      0.03      0.00      0.08      0.00      0.00     99.88
21:29:01        all      0.03      0.00      0.08      0.05      0.00     99.84
21:30:01        all      0.10      0.30      0.18      0.18      0.00     99.24
21:31:01        all      0.03      0.00      0.07      0.01      0.00     99.90
21:32:01        all      0.03      0.00      0.08      0.03      0.01     99.85
21:33:01        all      0.14      0.00      0.17      0.03      0.01     99.65
21:34:01        all      0.03      0.00      0.09      0.03      0.00     99.85
Average:        all      0.06      0.13      0.16      0.06      0.00     99.59
なんだかなあ。cron で ええやんか と思うのですがねえ、messages にも余計なメッセージが大量に出てしまうし。
[root@hoge ~]# less /var/log/messages
...
Jul 27 21:33:01 hoge systemd[1]: Starting system activity accounting tool...
Jul 27 21:33:01 hoge systemd[1]: Started system activity accounting tool.
Jul 27 21:34:01 hoge systemd[1]: Starting system activity accounting tool...
Jul 27 21:34:01 hoge systemd[1]: Started system activity accounting tool.
...
これらが不要(要るっていう人は居るの?)なら、以前書いた記事を応用して rsyslog でフィルタすれば良いものと思いますが、あーめんどくさい。rsyslog なんてやめて journal で運用すればいいって、開発者の人は思ってるのでしょうけれど、世の中そう急には変わらない。/var/log/messages は必要とされているだろうと思います。きっと。

2019-09-18追記
1点間違えていましたので、訂正しました。
override.confの[timer]セクションで、OnCalendar=*:*:01 の前には、もう一つ OnCalendar= が必要でした。そうしないと、デフォルトの OnCalendar=*:00/10 も有効として扱われるようです。風変わりな書き方ですが、実装を想像するとそうなるか、という記法だと思いました。

0 件のコメント:

コメントを投稿

人気ブログランキングへ にほんブログ村 IT技術ブログへ