diff -Naurp pcp-5.3.5.orig/src/pmie/GNUmakefile pcp-5.3.5/src/pmie/GNUmakefile --- pcp-5.3.5.orig/src/pmie/GNUmakefile 2021-11-09 10:50:58.000000000 +1100 +++ pcp-5.3.5/src/pmie/GNUmakefile 2021-12-15 16:51:51.306200748 +1100 @@ -84,7 +84,6 @@ pmie.service : pmie.service.in pmie_farm.service : pmie_farm.service.in $(SED) <$< >$@ \ - -e 's;@CRONTAB_PATH@;'$(CRONTAB_PATH)';' \ -e 's;@PCP_SYSCONFIG_DIR@;'$(PCP_SYSCONFIG_DIR)';' \ -e 's;@PCP_BINADM_DIR@;'$(PCP_BINADM_DIR)';' \ -e 's;@PCP_VAR_DIR@;'$(PCP_VAR_DIR)';' \ @@ -95,7 +94,9 @@ pmie_farm.service : pmie_farm.service.in pmie_farm_check.service : pmie_farm_check.service.in $(SED) <$< >$@ \ + -e 's;@CRONTAB_PATH@;'$(CRONTAB_PATH)';' \ -e 's;@PCP_BIN_DIR@;'$(PCP_BIN_DIR)';' \ + -e 's;@PCP_VAR_DIR@;'$(PCP_VAR_DIR)';' \ # END pmie_check.service : pmie_check.service.in diff -Naurp pcp-5.3.5.orig/src/pmie/pmie_farm_check.service.in pcp-5.3.5/src/pmie/pmie_farm_check.service.in --- pcp-5.3.5.orig/src/pmie/pmie_farm_check.service.in 2021-11-09 10:50:58.000000000 +1100 +++ pcp-5.3.5/src/pmie/pmie_farm_check.service.in 2021-12-15 16:51:51.306200748 +1100 @@ -1,7 +1,7 @@ [Unit] -Description=Check and migrate non-primary pmie instances to pmie_farm -Documentation=man:pmie_check(1) -# TODO non-systemd ConditionPathExists=!/etc/cron.d/pcp-pmie +Description=Check and migrate non-primary pmie farm instances +Documentation=man:pmiectl(1) +ConditionPathExists=!@CRONTAB_PATH@ [Service] Type=exec @@ -9,8 +9,7 @@ Restart=no TimeoutStartSec=4h TimeoutStopSec=120 ExecStart=@PCP_BIN_DIR@/pmiectl -m check -WorkingDirectory=/var/lib/pcp - +WorkingDirectory=@PCP_VAR_DIR@ # root so pmiectl can migrate pmie processes to the pmie_farm service Group=root User=root diff -Naurp pcp-5.3.5.orig/src/pmie/pmie_farm_check.timer pcp-5.3.5/src/pmie/pmie_farm_check.timer --- pcp-5.3.5.orig/src/pmie/pmie_farm_check.timer 2021-11-04 08:26:15.000000000 +1100 +++ pcp-5.3.5/src/pmie/pmie_farm_check.timer 2021-12-15 16:51:49.649229430 +1100 @@ -1,10 +1,11 @@ [Unit] -Description=5 minute check of pmie farm instances +Description=Half-hourly check of pmie farm instances [Timer] -# if enabled, runs 1m after boot and every 5 mins +# if enabled, runs 1m after boot and every half hour OnBootSec=1min -OnCalendar=*:00/5 +OnCalendar=*-*-* *:28:10 +OnCalendar=*-*-* *:58:10 [Install] WantedBy=timers.target diff -Naurp pcp-5.3.5.orig/src/pmie/pmie_farm.service.in pcp-5.3.5/src/pmie/pmie_farm.service.in --- pcp-5.3.5.orig/src/pmie/pmie_farm.service.in 2021-11-04 08:26:15.000000000 +1100 +++ pcp-5.3.5/src/pmie/pmie_farm.service.in 2021-12-15 16:51:51.306200748 +1100 @@ -1,9 +1,8 @@ [Unit] Description=pmie farm service -Documentation=man:pmie(1) -After=network-online.target pmcd.service -Before=pmie_check.timer pmie_daily.timer -BindsTo=pmie_farm_check.timer pmie_check.timer pmie_daily.timer +Documentation=man:pmie_check(1) +Before=pmie_farm_check.timer +BindsTo=pmie_farm_check.timer [Service] Type=@SD_SERVICE_TYPE@ @@ -15,13 +14,9 @@ TimeoutStopSec=120 Environment="PMIE_CHECK_PARAMS=--skip-primary" EnvironmentFile=-@PCP_SYSCONFIG_DIR@/pmie_timers ExecStart=@PCP_BINADM_DIR@/pmie_farm $PMIE_CHECK_PARAMS - WorkingDirectory=@PCP_VAR_DIR@ Group=@PCP_GROUP@ User=@PCP_USER@ [Install] -WantedBy=multi-user.target - -# This dependency will be removed in PCPv6. -WantedBy=pmie.service +RequiredBy=pmie.service diff -Naurp pcp-5.3.5.orig/src/pmlogger/GNUmakefile pcp-5.3.5/src/pmlogger/GNUmakefile --- pcp-5.3.5.orig/src/pmlogger/GNUmakefile 2021-11-09 09:08:40.000000000 +1100 +++ pcp-5.3.5/src/pmlogger/GNUmakefile 2021-12-15 16:51:51.306200748 +1100 @@ -99,7 +99,6 @@ pmlogger.service : pmlogger.service.in pmlogger_farm.service : pmlogger_farm.service.in $(SED) <$< >$@ \ - -e 's;@CRONTAB_PATH@;'$(CRONTAB_PATH)';' \ -e 's;@PCP_SYSCONFIG_DIR@;'$(PCP_SYSCONFIG_DIR)';' \ -e 's;@PCP_BINADM_DIR@;'$(PCP_BINADM_DIR)';' \ -e 's;@PCP_VAR_DIR@;'$(PCP_VAR_DIR)';' \ @@ -110,7 +109,9 @@ pmlogger_farm.service : pmlogger_farm.se pmlogger_farm_check.service : pmlogger_farm_check.service.in $(SED) <$< >$@ \ + -e 's;@CRONTAB_PATH@;'$(CRONTAB_PATH)';' \ -e 's;@PCP_BIN_DIR@;'$(PCP_BIN_DIR)';' \ + -e 's;@PCP_VAR_DIR@;'$(PCP_VAR_DIR)';' \ # END pmlogger_daily.service : pmlogger_daily.service.in diff -Naurp pcp-5.3.5.orig/src/pmlogger/pmlogger_farm_check.service.in pcp-5.3.5/src/pmlogger/pmlogger_farm_check.service.in --- pcp-5.3.5.orig/src/pmlogger/pmlogger_farm_check.service.in 2021-11-09 09:08:40.000000000 +1100 +++ pcp-5.3.5/src/pmlogger/pmlogger_farm_check.service.in 2021-12-15 16:51:51.307200731 +1100 @@ -1,7 +1,7 @@ [Unit] -Description=Check and migrate non-primary pmlogger instances to pmlogger_farm -Documentation=man:pmlogger_check(1) -# TODO non-systemd ConditionPathExists=!/etc/cron.d/pcp-pmlogger +Description=Check and migrate non-primary pmlogger farm instances +Documentation=man:pmlogctl(1) +ConditionPathExists=!@CRONTAB_PATH@ [Service] Type=exec @@ -9,9 +9,8 @@ Restart=no TimeoutStartSec=4h TimeoutStopSec=120 ExecStart=@PCP_BIN_DIR@/pmlogctl -m check -WorkingDirectory=/var/lib/pcp - -# root so pmlogctl can migrate pmloggers to the pmlogger_farm service +WorkingDirectory=@PCP_VAR_DIR@ +# root so pmlogctl can migrate pmlogger processes to the pmlogger_farm service Group=root User=root diff -Naurp pcp-5.3.5.orig/src/pmlogger/pmlogger_farm_check.timer pcp-5.3.5/src/pmlogger/pmlogger_farm_check.timer --- pcp-5.3.5.orig/src/pmlogger/pmlogger_farm_check.timer 2021-11-04 08:26:15.000000000 +1100 +++ pcp-5.3.5/src/pmlogger/pmlogger_farm_check.timer 2021-12-15 16:51:49.649229430 +1100 @@ -1,10 +1,11 @@ [Unit] -Description=5 minute check of pmlogger farm instances +Description=Half-hourly check of pmlogger farm instances [Timer] -# if enabled, runs 1m after boot and every 5 mins +# if enabled, runs 1m after boot and every half hour OnBootSec=1min -OnCalendar=*:00/5 +OnCalendar=*-*-* *:25:10 +OnCalendar=*-*-* *:55:10 [Install] WantedBy=timers.target diff -Naurp pcp-5.3.5.orig/src/pmlogger/pmlogger_farm.service.in pcp-5.3.5/src/pmlogger/pmlogger_farm.service.in --- pcp-5.3.5.orig/src/pmlogger/pmlogger_farm.service.in 2021-11-04 08:26:15.000000000 +1100 +++ pcp-5.3.5/src/pmlogger/pmlogger_farm.service.in 2021-12-15 16:51:51.306200748 +1100 @@ -1,9 +1,8 @@ [Unit] Description=pmlogger farm service -Documentation=man:pmlogger(1) -After=network-online.target pmcd.service -Before=pmlogger_check.timer pmlogger_daily.timer -BindsTo=pmlogger_farm_check.timer pmlogger_check.timer pmlogger_daily.timer +Documentation=man:pmlogger_check(1) +Before=pmlogger_farm_check.timer +BindsTo=pmlogger_farm_check.timer [Service] Type=@SD_SERVICE_TYPE@ @@ -15,13 +14,9 @@ TimeoutStopSec=120 Environment="PMLOGGER_CHECK_PARAMS=--skip-primary" EnvironmentFile=-@PCP_SYSCONFIG_DIR@/pmlogger_timers ExecStart=@PCP_BINADM_DIR@/pmlogger_farm $PMLOGGER_CHECK_PARAMS - WorkingDirectory=@PCP_VAR_DIR@ Group=@PCP_GROUP@ User=@PCP_USER@ [Install] -WantedBy=multi-user.target - -# This dependency will be removed in PCPv6. -WantedBy=pmlogger.service +RequiredBy=pmlogger.service commit 7d6e266d0a15ba0fd0894a059257a502f19b7fe9 Author: Nathan Scott Date: Thu Dec 16 17:38:33 2021 +1100 pmlogger/pmie farms: further consistency changes and hard dep fix Several inconsistencies between various pmie/pmlogger systemd units resolved. Most importantly, add BindsTo lines to ensure the farms get started and stopped along with the underlying service, always. diff --git a/src/pmie/pmie.service.in b/src/pmie/pmie.service.in index d234c8a5e5..d659c39c65 100644 --- a/src/pmie/pmie.service.in +++ b/src/pmie/pmie.service.in @@ -2,8 +2,8 @@ Description=Performance Metrics Inference Engine Documentation=man:pmie(1) After=network-online.target pmcd.service -Before=pmie_check.timer pmie_daily.timer -BindsTo=pmie_check.timer pmie_daily.timer +Before=pmie_farm.service pmie_check.timer pmie_daily.timer +BindsTo=pmie_farm.service pmie_check.timer pmie_daily.timer Wants=pmcd.service [Service] diff --git a/src/pmie/pmie_daily.service.in b/src/pmie/pmie_daily.service.in index e93446ce83..ca49945905 100644 --- a/src/pmie/pmie_daily.service.in +++ b/src/pmie/pmie_daily.service.in @@ -2,13 +2,18 @@ Description=Process PMIE logs Documentation=man:pmie_daily(1) ConditionPathExists=!@CRONTAB_PATH@ +PartOf=pmie.service [Service] Type=@SD_SERVICE_TYPE@ Restart=no +TimeoutStartSec=1h Environment="PMIE_DAILY_PARAMS=-X xz -x 3" EnvironmentFile=-@PCP_SYSCONFIG_DIR@/pmie_timers ExecStart=@PCP_BINADM_DIR@/pmie_daily $PMIE_DAILY_PARAMS WorkingDirectory=@PCP_VAR_DIR@ Group=@PCP_GROUP@ User=@PCP_USER@ + +[Install] +RequiredBy=pmie.service diff --git a/src/pmie/pmie_daily.timer b/src/pmie/pmie_daily.timer index 42b86333be..67742a070e 100644 --- a/src/pmie/pmie_daily.timer +++ b/src/pmie/pmie_daily.timer @@ -1,7 +1,9 @@ [Unit] Description=Daily processing of PMIE logs +PartOf=pmie.service [Timer] +Persistent=true OnCalendar=*-*-* 00:08:00 [Install] diff --git a/src/pmie/pmie_farm.service.in b/src/pmie/pmie_farm.service.in index 0f7e7e46b8..e119388b4b 100644 --- a/src/pmie/pmie_farm.service.in +++ b/src/pmie/pmie_farm.service.in @@ -3,6 +3,7 @@ Description=pmie farm service Documentation=man:pmie_check(1) Before=pmie_farm_check.timer BindsTo=pmie_farm_check.timer +PartOf=pmie.service [Service] Type=@SD_SERVICE_TYPE@ diff --git a/src/pmie/pmie_farm.sh b/src/pmie/pmie_farm.sh index f2771ad43b..400e790cae 100644 --- a/src/pmie/pmie_farm.sh +++ b/src/pmie/pmie_farm.sh @@ -12,8 +12,8 @@ # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License # for more details. # -# Administrative script to start the pmlogger_farm service. -# All arguments to pmlogger_check are passed from pmlogger_farm.service. +# Administrative script to start the pmie_farm service. +# All arguments to pmie_check are passed from pmie_farm.service. # . $PCP_DIR/etc/pcp.env diff --git a/src/pmie/pmie_farm_check.service.in b/src/pmie/pmie_farm_check.service.in index 64f822ad53..01d83390a9 100644 --- a/src/pmie/pmie_farm_check.service.in +++ b/src/pmie/pmie_farm_check.service.in @@ -2,6 +2,7 @@ Description=Check and migrate non-primary pmie farm instances Documentation=man:pmiectl(1) ConditionPathExists=!@CRONTAB_PATH@ +PartOf=pmie_farm.service [Service] Type=exec diff --git a/src/pmlogger/pmlogger.service.in b/src/pmlogger/pmlogger.service.in index de0df29db1..b0d706027a 100644 --- a/src/pmlogger/pmlogger.service.in +++ b/src/pmlogger/pmlogger.service.in @@ -2,8 +2,8 @@ Description=Performance Metrics Archive Logger Documentation=man:pmlogger(1) After=network-online.target pmcd.service -Before=pmlogger_check.timer pmlogger_daily.timer -BindsTo=pmlogger_check.timer pmlogger_daily.timer +Before=pmlogger_farm.service pmlogger_check.timer pmlogger_daily.timer +BindsTo=pmlogger_farm.service pmlogger_check.timer pmlogger_daily.timer Wants=pmcd.service [Service] diff --git a/src/pmlogger/pmlogger_check.service.in b/src/pmlogger/pmlogger_check.service.in index 8fcef57e0f..db7edf0b0f 100644 --- a/src/pmlogger/pmlogger_check.service.in +++ b/src/pmlogger/pmlogger_check.service.in @@ -2,6 +2,7 @@ Description=Check pmlogger instances are running Documentation=man:pmlogger_check(1) ConditionPathExists=!@CRONTAB_PATH@ +PartOf=pmlogger.service [Service] Type=@SD_SERVICE_TYPE@ diff --git a/src/pmlogger/pmlogger_check.timer b/src/pmlogger/pmlogger_check.timer index e3f3c4fc40..ddffc7584a 100644 --- a/src/pmlogger/pmlogger_check.timer +++ b/src/pmlogger/pmlogger_check.timer @@ -1,5 +1,6 @@ [Unit] Description=Half-hourly check of pmlogger instances +PartOf=pmlogger.service [Timer] # if enabled, runs 1m after boot and every half hour diff --git a/src/pmlogger/pmlogger_daily.service.in b/src/pmlogger/pmlogger_daily.service.in index 8a07f5caa3..9a3cbf42b1 100644 --- a/src/pmlogger/pmlogger_daily.service.in +++ b/src/pmlogger/pmlogger_daily.service.in @@ -2,6 +2,7 @@ Description=Process archive logs Documentation=man:pmlogger_daily(1) ConditionPathExists=!@CRONTAB_PATH@ +PartOf=pmlogger.service [Service] Type=@SD_SERVICE_TYPE@ @@ -13,3 +14,6 @@ ExecStart=@PCP_BINADM_DIR@/pmlogger_daily $PMLOGGER_DAILY_PARAMS WorkingDirectory=@PCP_VAR_DIR@ Group=@PCP_GROUP@ User=@PCP_USER@ + +[Install] +RequiredBy=pmlogger.service diff --git a/src/pmlogger/pmlogger_farm.service.in b/src/pmlogger/pmlogger_farm.service.in index a194ac39c7..a67e25f312 100644 --- a/src/pmlogger/pmlogger_farm.service.in +++ b/src/pmlogger/pmlogger_farm.service.in @@ -3,6 +3,7 @@ Description=pmlogger farm service Documentation=man:pmlogger_check(1) Before=pmlogger_farm_check.timer BindsTo=pmlogger_farm_check.timer +PartOf=pmlogger.service [Service] Type=@SD_SERVICE_TYPE@ diff --git a/src/pmlogger/pmlogger_farm_check.service.in b/src/pmlogger/pmlogger_farm_check.service.in index 2ec3a5446b..de5e59a7f5 100644 --- a/src/pmlogger/pmlogger_farm_check.service.in +++ b/src/pmlogger/pmlogger_farm_check.service.in @@ -2,6 +2,7 @@ Description=Check and migrate non-primary pmlogger farm instances Documentation=man:pmlogctl(1) ConditionPathExists=!@CRONTAB_PATH@ +PartOf=pmlogger_farm.service [Service] Type=exec