2024-07-24 19:05:26 +10:00
|
|
|
{
|
2024-12-23 13:10:36 +10:00
|
|
|
config,
|
2024-07-24 19:05:26 +10:00
|
|
|
inputs,
|
|
|
|
lib,
|
|
|
|
pkgs,
|
|
|
|
...
|
|
|
|
}:
|
2024-05-04 18:49:57 +10:00
|
|
|
let
|
2024-09-28 10:59:07 +10:00
|
|
|
hostInfo = pkgs.writeShellApplication {
|
|
|
|
name = "host-info";
|
|
|
|
runtimeInputs = [
|
2024-12-23 13:10:36 +10:00
|
|
|
config.nix.package
|
2024-09-28 10:59:07 +10:00
|
|
|
pkgs.gnused
|
|
|
|
pkgs.jq
|
|
|
|
];
|
|
|
|
text = builtins.readFile ./host-info.bash;
|
|
|
|
};
|
2024-05-04 18:49:57 +10:00
|
|
|
in
|
2024-05-04 18:51:58 +10:00
|
|
|
{
|
2024-05-04 18:54:17 +10:00
|
|
|
environment.etc =
|
|
|
|
let
|
|
|
|
inputsWithDate = lib.filterAttrs (_: input: input ? lastModified) inputs.self.inputs;
|
2024-07-24 19:05:26 +10:00
|
|
|
flakeAttrs =
|
|
|
|
input:
|
|
|
|
(lib.mapAttrsToList (n: v: ''${n}="${v}"'') (
|
|
|
|
lib.filterAttrs (_: v: (builtins.typeOf v) == "string") input
|
|
|
|
));
|
|
|
|
lastModified =
|
|
|
|
name: input:
|
|
|
|
''flake_input_last_modified{input="${name}",${lib.concatStringsSep "," (flakeAttrs input)}} ${toString input.lastModified}'';
|
2024-05-04 18:54:17 +10:00
|
|
|
in
|
|
|
|
{
|
|
|
|
"flake-inputs.prom" = {
|
|
|
|
text = builtins.unsafeDiscardStringContext ''
|
|
|
|
# HELP flake_registry_last_modified Last modification date of flake input in unixtime
|
|
|
|
# TYPE flake_input_last_modified gauge
|
|
|
|
${lib.concatStringsSep "\n" (lib.mapAttrsToList lastModified inputsWithDate)}
|
|
|
|
'';
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
2024-05-04 18:51:58 +10:00
|
|
|
services.telegraf.extraConfig.inputs = {
|
2024-05-04 18:49:57 +10:00
|
|
|
exec = [
|
|
|
|
{
|
2024-09-28 10:59:07 +10:00
|
|
|
commands = [ (lib.getExe hostInfo) ];
|
2024-05-04 18:49:57 +10:00
|
|
|
data_format = "influx";
|
|
|
|
}
|
|
|
|
];
|
2024-05-04 18:54:17 +10:00
|
|
|
file = [
|
|
|
|
{
|
|
|
|
data_format = "prometheus";
|
|
|
|
files = [ "/etc/flake-inputs.prom" ];
|
|
|
|
}
|
|
|
|
];
|
2024-05-04 18:51:58 +10:00
|
|
|
prometheus = {
|
|
|
|
metric_version = 2;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
}
|