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
		
	
			
		
			
				
	
	
		
			35 lines
		
	
	
	
		
			901 B
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			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?
 | 
						|
}
 | 
						|
 |