tvl-depot/users/flokli/nixos/archeology-ec2/configuration.nix
Florian Klink e4adca0880 feat(users/flokli/nixos/archeology-ec2): automate bucket log parsing
This adds a `parse-bucket-logs.{service,timer}`, running once every
night at 3AM UTC, figuring out the last time it was run and parsing
bucket logs for all previous days.

It invokes the `archeology-parse-bucket-logs` script to produce
a .parquet file with the bucket logs in `s3://nix-cache-log/log/` for
that day (inside a temporary directory), then on success uploads the
produced parquet file to
`s3://nix-archeologist/nix-cache-bucket-logs/yyyy-mm-dd.parquet`.

Change-Id: Ia75ca8c43f8074fbaa34537ffdba68350c504e52
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10011
Reviewed-by: edef <edef@edef.eu>
Tested-by: BuildkiteCI
2023-11-12 16:46:06 +00:00

35 lines
901 B
Nix

{ depot, pkgs, modulesPath, ... }:
{
imports = [
"${modulesPath}/virtualisation/amazon-image.nix"
../profiles/archeology.nix
];
systemd.timers.parse-bucket-logs = {
wantedBy = [ "multi-user.target" ];
timerConfig.OnCalendar = "*-*-* 03:00:00 UTC";
};
systemd.services.parse-bucket-logs = {
path = [ depot.users.flokli.archeology.parse-bucket-logs ];
serviceConfig = {
Type = "oneshot";
ExecStart = (pkgs.writers.writePython3 "parse-bucket-logs-continuously"
{
libraries = [ pkgs.python3Packages.boto3 ];
} ./parse-bucket-logs-continuously.py);
DynamicUser = "yes";
StateDirectory = "parse-bucket-logs";
};
};
environment.systemPackages = [
depot.users.flokli.archeology.parse-bucket-logs
];
networking.hostName = "archeology-ec2";
system.stateVersion = "23.05"; # Did you read the comment?
}