Add node-exporter.
This commit is contained in:
parent
da22ed14c6
commit
c9d6f0f5e8
@ -27,6 +27,7 @@
|
||||
})
|
||||
];
|
||||
|
||||
# TODO(zaphar): Move this to a module.
|
||||
launchd.user.agents.ipfs = {
|
||||
serviceConfig = {
|
||||
ProgramArguments = [
|
||||
@ -39,6 +40,9 @@
|
||||
};
|
||||
};
|
||||
|
||||
services.node-exporter.enable = true;
|
||||
services.prometheus.enable = true;
|
||||
|
||||
# TODO launchd.user.agents.prometheus;
|
||||
# Use a custom configuration.nix location.
|
||||
# $ darwin-rebuild switch -I darwin-config=$HOME/.config/nixpkgs/darwin/configuration.nix
|
||||
|
@ -325,6 +325,7 @@ EOF";
|
||||
modules = [
|
||||
(systemModule system)
|
||||
(vimModule system)
|
||||
./modules/darwin-monitor.nix
|
||||
./darwin-configuration.nix
|
||||
];
|
||||
};
|
||||
|
98
nix/base-system/modules/darwin-monitor.nix
Normal file
98
nix/base-system/modules/darwin-monitor.nix
Normal file
@ -0,0 +1,98 @@
|
||||
{ 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;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user