58
hosts/common/configs/user/console/telegraf/default.nix
Normal file
58
hosts/common/configs/user/console/telegraf/default.nix
Normal file
@@ -0,0 +1,58 @@
|
||||
{
|
||||
user ? throw "user argument is required",
|
||||
home ? throw "home argument is required",
|
||||
}:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
port = 9273 + config.users.users.${user}.uid;
|
||||
hmConfig = config.home-manager.users.${user};
|
||||
in
|
||||
{
|
||||
home-manager.users.${user}.systemd.user.services.telegraf =
|
||||
let
|
||||
telegrafConfig = (pkgs.formats.toml { }).generate "config.toml" {
|
||||
agent.quiet = true;
|
||||
|
||||
outputs.prometheus_client = [ { listen = ":${builtins.toString port}"; } ];
|
||||
|
||||
inputs =
|
||||
{
|
||||
systemd_units = [
|
||||
{ scope = "user"; }
|
||||
];
|
||||
}
|
||||
// lib.attrsets.optionalAttrs hmConfig.services.podman.enable {
|
||||
docker = [
|
||||
{
|
||||
endpoint =
|
||||
let
|
||||
uid = builtins.toString config.users.users.${user}.uid;
|
||||
in
|
||||
"unix:///var/run/user/${uid}/podman/podman.sock";
|
||||
perdevice = false;
|
||||
perdevice_include = [
|
||||
"cpu"
|
||||
"blkio"
|
||||
"network"
|
||||
];
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
in
|
||||
{
|
||||
Unit.Description = "Telegraf Agent";
|
||||
|
||||
Install.WantedBy = [ "default.target" ];
|
||||
|
||||
Service = {
|
||||
ExecStart = "${config.services.telegraf.package}/bin/telegraf -config ${telegrafConfig}";
|
||||
ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
|
||||
};
|
||||
};
|
||||
}
|
Reference in New Issue
Block a user