99 lines
3.5 KiB
Nix
99 lines
3.5 KiB
Nix
{ pkgs, lib, config, ...}:
|
|
with lib;
|
|
{
|
|
|
|
options.services.node-exporter = {
|
|
enable = mkEnableOption "Enable the prometheus node_exporter";
|
|
listen = mkOption {
|
|
description = "[host]:port to listen on for the node_exporter";
|
|
default = "localhost:9100";
|
|
defaultText = "localhost:9100";
|
|
};
|
|
};
|
|
|
|
options.services.prometheus = {
|
|
enable = lib.mkEnableOption "Enable the prometheus server";
|
|
listen = mkOption {
|
|
description = "[host]:port to listen on for the prometheus server";
|
|
default = "localhost:9000";
|
|
defaultText = "localhost:9000";
|
|
};
|
|
settings = mkOption {
|
|
description = "The yaml configuration file settings for prometheus";
|
|
default = {
|
|
scrape_configs = [
|
|
{
|
|
job_name = "node_exporter";
|
|
scrape_interval = "30s";
|
|
metrics_path = "/metrics";
|
|
static_configs = [
|
|
{
|
|
targets = [
|
|
"${config.services.node-exporter.listen}"
|
|
];
|
|
}
|
|
];
|
|
}
|
|
];
|
|
};
|
|
defaultText = ''{
|
|
scrape_configs = [
|
|
{
|
|
job_name = "node_exporter";
|
|
scrape_interval = "30s";
|
|
metrics_path = "/metrics";
|
|
static_configs = [
|
|
{
|
|
targets = [
|
|
"${config.services.node-exporter.listen}"
|
|
];
|
|
}
|
|
];
|
|
}
|
|
];
|
|
}'';
|
|
};
|
|
dataPath = mkOption {
|
|
description = "Storage path for the tsdb";
|
|
default = "/Users/zaphar/opt/prometheus";
|
|
defaultText = "~/opt/prometheus";
|
|
};
|
|
};
|
|
|
|
|
|
config = {
|
|
launchd.user.agents.node-exporter = mkIf config.services.node-exporter.enable {
|
|
serviceConfig = {
|
|
ProgramArguments = [
|
|
"${pkgs.prometheus-node-exporter}/bin/node_exporter"
|
|
"--web.listen-address=${config.services.node-exporter.listen}"
|
|
];
|
|
KeepAlive = true;
|
|
RunAtLoad = true;
|
|
};
|
|
};
|
|
|
|
environment.etc."prometheus.yaml" = mkIf config.services.prometheus.enable {
|
|
text = (generators.toYAML {} config.services.prometheus.settings);
|
|
};
|
|
|
|
launchd.user.agents.prometheus = mkIf config.services.prometheus.enable {
|
|
serviceConfig = {
|
|
ProgramArguments = [
|
|
"${pkgs.prometheus}/bin/prometheus"
|
|
"--web.listen-address=${config.services.prometheus.listen}"
|
|
"--config.file=/etc/${config.environment.etc."prometheus.yaml".target}"
|
|
#"--storage.tsdb.path=${config.services.prometheus.dataPath}"
|
|
];
|
|
StandardOutPath = "${config.services.prometheus.dataPath}/prometheus-out.log";
|
|
StandardErrorPath = "${config.services.prometheus.dataPath}/prometheus-err.log";
|
|
WorkingDirectory=config.services.prometheus.dataPath;
|
|
KeepAlive = true;
|
|
RunAtLoad = true;
|
|
};
|
|
};
|
|
};
|
|
|
|
}
|
|
|