47 lines
1.3 KiB
Nix
47 lines
1.3 KiB
Nix
|
{ config, pkgs, lib, ... }:
|
||
|
with lib;
|
||
|
with types;
|
||
|
let
|
||
|
cfg = config.components.monitor;
|
||
|
in
|
||
|
{
|
||
|
options.components.monitor = {
|
||
|
influxDBPort = mkOption {
|
||
|
type = int;
|
||
|
default = 8088;
|
||
|
description = "Port to listen on influxDB input";
|
||
|
};
|
||
|
};
|
||
|
|
||
|
config = lib.mkMerge [
|
||
|
(mkIf config.components.monitor.enable {
|
||
|
# opentelemetry wireing
|
||
|
services.opentelemetry-collector.settings = {
|
||
|
receivers.influxdb.endpoint = "127.0.0.1:${toString cfg.influxDBPort}";
|
||
|
service.pipelines.metrics.receivers = [ "influxdb" ];
|
||
|
};
|
||
|
services.telegraf.extraConfig.outputs.influxdb_v2.urls = [ "http://127.0.0.1:${toString cfg.influxDBPort}" ];
|
||
|
})
|
||
|
|
||
|
(mkIf config.components.monitor.enable {
|
||
|
|
||
|
systemd.services.telegraf.path = [ pkgs.inetutils ];
|
||
|
|
||
|
services.telegraf = {
|
||
|
enable = true;
|
||
|
extraConfig = {
|
||
|
# https://github.com/influxdata/telegraf/tree/master/plugins/inputs < all them plugins
|
||
|
inputs = {
|
||
|
cpu = { };
|
||
|
diskio = { };
|
||
|
processes = { };
|
||
|
system = { };
|
||
|
systemd_units = { };
|
||
|
ping = [{ urls = [ "10.100.0.1" ]; }]; # actually important to make machine visible over wireguard
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
})
|
||
|
];
|
||
|
}
|