Skip to content

Commit

Permalink
sysstat: Create systemd service for historical sar data
Browse files Browse the repository at this point in the history
Every period, sa1 collects and stores data.
Every 24 hours, sa2 aggregates the previous day's data in to a
report.

Timers and unit configurations were lifted from Fedora's default
units.
  • Loading branch information
grahamc committed Jul 12, 2016
1 parent 9903923 commit d3d7f43
Showing 1 changed file with 80 additions and 0 deletions.
80 changes: 80 additions & 0 deletions nixos/modules/services/monitoring/sysstat.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.sysstat;
in {
options = {
services.sysstat = {
enable = mkOption {
type = types.bool;
default = false;
description = ''
Whether to enable sar system activity collection.
'';
};

collect-frequency = mkOption {
default = "*:00/10";
description = ''
OnCalendar specification for sysstat-collect
'';
};

collect-args = mkOption {
default = "1 1";
description = ''
Arguments to pass sa1 when collecting statistics
'';
};
};
};

config = mkIf cfg.enable {
systemd.services.sysstat = {
description = "Resets System Activity Logs";
wantedBy = [ "multi-user.target" ];
preStart = "test -d /var/log/sa || mkdir -p /var/log/sa";

serviceConfig = {
User = "root";
RemainAfterExit = true;
Type = "oneshot";
ExecStart = "${pkgs.sysstat}/lib/sa/sa1 --boot";
};
};

systemd.services.sysstat-collect = {
description = "system activity accounting tool";
unitConfig.Documentation = "man:sa1(8)";

serviceConfig = {
Type = "oneshot";
User = "root";
ExecStart = "${pkgs.sysstat}/lib/sa/sa1 ${cfg.collect-args}";
};
};

systemd.timers.sysstat-collect = {
description = "Run system activity accounting tool on a regular basis";
wantedBy = [ "timers.target" ];
timerConfig.OnCalendar = cfg.collect-frequency;
};

systemd.services.sysstat-summary = {
description = "Generate a daily summary of process accounting";
unitConfig.Documentation = "man:sa2(8)";

serviceConfig = {
Type = "oneshot";
User = "root";
ExecStart = "${pkgs.sysstat}/lib/sa/sa2 -A";
};
};

systemd.timers.sysstat-summary = {
description = "Generate summary of yesterday's process accounting";
wantedBy = [ "timers.target" ];
timerConfig.OnCalendar = "00:07:00";
};
};
}

0 comments on commit d3d7f43

Please sign in to comment.