summaryrefslogtreecommitdiffstats
path: root/lass/3modules
diff options
context:
space:
mode:
Diffstat (limited to 'lass/3modules')
-rw-r--r--lass/3modules/kapacitor.nix146
-rw-r--r--lass/3modules/telegraf.nix39
2 files changed, 60 insertions, 125 deletions
diff --git a/lass/3modules/kapacitor.nix b/lass/3modules/kapacitor.nix
index 8524c8198..a1e82b830 100644
--- a/lass/3modules/kapacitor.nix
+++ b/lass/3modules/kapacitor.nix
@@ -21,6 +21,14 @@ let
type = types.str;
default = "kapacitor";
};
+ alarms = mkOption {
+ type = with types; attrsOf str;
+ default = {};
+ };
+ check_db = mkOption {
+ type = types.str;
+ default = "all_data";
+ };
config = mkOption {
type = types.str;
#TODO: find a good default
@@ -74,115 +82,7 @@ let
[logging]
file = "STDERR"
- level = "INFO"
-
- [collectd]
- enabled = false
- bind-address = ":25826"
- database = "collectd"
- retention-policy = ""
- batch-size = 5000
- batch-pending = 10
- batch-timeout = "10s"
- read-buffer = 0
- typesdb = "/usr/share/collectd/types.db"
-
- [opentsdb]
- enabled = false
- bind-address = ":4242"
- database = "opentsdb"
- retention-policy = ""
- consistency-level = "one"
- tls-enabled = false
- certificate = "/etc/ssl/influxdb.pem"
- batch-size = 1000
- batch-pending = 5
- batch-timeout = "1s"
- log-point-errors = true
-
- [smtp]
- enabled = false
- host = "localhost"
- port = 25
- username = ""
- password = ""
- no-verify = false
- global = false
- state-changes-only = false
- from = ""
- idle-timeout = "30s"
-
- [opsgenie]
- enabled = false
- api-key = ""
- url = "https://api.opsgenie.com/v1/json/alert"
- recovery_url = "https://api.opsgenie.com/v1/json/alert/note"
- global = false
-
- [victorops]
- enabled = false
- api-key = ""
- routing-key = ""
- url = "https://alert.victorops.com/integrations/generic/20131114/alert"
- global = false
-
- [pagerduty]
- enabled = false
- url = "https://events.pagerduty.com/generic/2010-04-15/create_event.json"
- service-key = ""
- global = false
-
- [sensu]
- enabled = false
- addr = ""
- source = "Kapacitor"
-
- [slack]
- enabled = false
- url = ""
- channel = ""
- global = false
- state-changes-only = false
-
- [telegram]
- enabled = false
- url = "https://api.telegram.org/bot"
- token = ""
- chat-id = ""
- parse-mode = ""
- disable-web-page-preview = false
- disable-notification = false
- global = false
- state-changes-only = false
-
- [hipchat]
- enabled = false
- url = ""
- token = ""
- room = ""
- global = false
- state-changes-only = false
-
- [alerta]
- enabled = false
- url = ""
- token = ""
- environment = ""
- origin = ""
-
- [reporting]
- enabled = true
- url = "https://usage.influxdata.com"
-
- [stats]
- enabled = true
- stats-interval = "10s"
- database = "_kapacitor"
- retention-policy = "autogen"
- timing-sample-rate = 0.1
- timing-movavg-size = 1000
-
- [udf]
+ level = "DEBUG"
[deadman]
interval = "10s"
@@ -190,11 +90,6 @@ let
id = "{{ .Group }}:NODE_NAME for task '{{ .TaskName }}'"
message = "{{ .ID }} is {{ if eq .Level \"OK\" }}alive{{ else }}dead{{ end }}: {{ index .Fields \"emitted\" | printf \"%0.3f\" }} points/INTERVAL."
global = false
-
- [talk]
- enabled = false
- url = ""
- author_name = ""
'';
description = "configuration kapacitor is started with";
};
@@ -216,6 +111,29 @@ let
ExecStart = "${pkgs.kapacitor}/bin/kapacitord -config ${configFile}";
};
};
+
+ systemd.services.kapacitor-alarms = {
+ description = "kapacitor-alarms";
+ after = [ "kapacitor.service" ];
+ wantedBy = [ "multi-user.target" ];
+
+ restartIfChanged = true;
+
+ serviceConfig = {
+ Type = "oneshot";
+ ExecStart = pkgs.writeDash "add_alarms" ''
+ ${pkgs.kapacitor}/bin/kapacitor delete tasks \*
+ ${concatStrings (mapAttrsToList (name: alarm: ''
+ ${pkgs.kapacitor}/bin/kapacitor define ${name} \
+ -type batch \
+ -tick ${pkgs.writeText "${name}.tick" alarm} \
+ -dbrp ${cfg.check_db}.default
+ ${pkgs.kapacitor}/bin/kapacitor enable ${name}
+ '') cfg.alarms)}
+ '';
+ };
+ };
+
};
in out
diff --git a/lass/3modules/telegraf.nix b/lass/3modules/telegraf.nix
index 64b323460..0b3be2d69 100644
--- a/lass/3modules/telegraf.nix
+++ b/lass/3modules/telegraf.nix
@@ -21,26 +21,43 @@ let
type = types.str;
default = "telegraf";
};
+ outputs = mkOption {
+ type = types.str;
+ default = ''
+ [outputs.influxdb]
+ urls = ["http://localhost:8086"]
+ database = "telegraf_db"
+ user_agent = "telegraf"
+ '';
+ };
+ inputs = mkOption {
+ type = with types; listOf str;
+ default = [
+ ''
+ [cpu]
+ percpu = false
+ totalcpu = true
+ drop = ["cpu_time"]
+ ''
+ ];
+ };
+ interval = mkOption {
+ type = types.str;
+ default = "10s";
+ };
config = mkOption {
type = types.str;
#TODO: find a good default
default = ''
[agent]
- interval = "1s"
+ interval = "${cfg.interval}"
[outputs]
- # Configuration to send data to InfluxDB.
- [outputs.influxdb]
- urls = ["http://localhost:8086"]
- database = "kapacitor_example"
- user_agent = "telegraf"
+ ${cfg.outputs}
+
+ ${concatStringsSep "\n" cfg.inputs}
- # Collect metrics about cpu usage
- [cpu]
- percpu = false
- totalcpu = true
- drop = ["cpu_time"]
'';
description = "configuration telegraf is started with";
};