lol

nixiso/opentelemetry-collector: init

+75
+1
nixos/modules/module-list.nix
··· 733 733 ./services/monitoring/munin.nix 734 734 ./services/monitoring/nagios.nix 735 735 ./services/monitoring/netdata.nix 736 + ./services/monitoring/opentelemetry-collector.nix 736 737 ./services/monitoring/parsedmarc.nix 737 738 ./services/monitoring/prometheus/alertmanager.nix 738 739 ./services/monitoring/prometheus/default.nix
+73
nixos/modules/services/monitoring/opentelemetry-collector.nix
··· 1 + { config, lib, pkgs, ... }: 2 + 3 + let 4 + inherit (lib) mkEnableOption mkIf mkOption types getExe; 5 + 6 + cfg = config.services.opentelemetry-collector; 7 + opentelemetry-collector = cfg.package; 8 + 9 + settingsFormat = pkgs.formats.yaml {}; 10 + in { 11 + options.services.opentelemetry-collector = { 12 + enable = mkEnableOption (lib.mdDoc "Opentelemetry Collector"); 13 + 14 + package = mkOption { 15 + type = types.package; 16 + default = pkgs.opentelemetry-collector; 17 + defaultText = lib.literalExpression "pkgs.opentelemetry-collector"; 18 + description = lib.mdDoc "The opentelemetry-collector package to use."; 19 + }; 20 + 21 + settings = mkOption { 22 + type = settingsFormat.type; 23 + default = {}; 24 + description = lib.mdDoc '' 25 + Specify the configuration for Opentelemetry Collector in Nix. 26 + 27 + See https://opentelemetry.io/docs/collector/configuration/ for available options. 28 + ''; 29 + }; 30 + 31 + configFile = mkOption { 32 + type = types.nullOr types.path; 33 + default = null; 34 + description = lib.mdDoc '' 35 + Specify a path to a configuration file that Opentelemetry Collector should use. 36 + ''; 37 + }; 38 + }; 39 + 40 + config = mkIf cfg.enable { 41 + assertions = [{ 42 + assertion = ( 43 + (cfg.settings == {}) != (cfg.configFile == null) 44 + ); 45 + message = '' 46 + Please specify a configuration for Opentelemetry Collector with either 47 + 'services.opentelemetry-collector.settings' or 48 + 'services.opentelemetry-collector.configFile'. 49 + ''; 50 + }]; 51 + 52 + systemd.services.opentelemetry-collector = { 53 + description = "Opentelemetry Collector Service Daemon"; 54 + wantedBy = [ "multi-user.target" ]; 55 + 56 + serviceConfig = let 57 + conf = if cfg.configFile == null 58 + then settingsFormat.generate "config.yaml" cfg.settings 59 + else cfg.configFile; 60 + in 61 + { 62 + ExecStart = "${getExe opentelemetry-collector} --config=file:${conf}"; 63 + DynamicUser = true; 64 + Restart = "always"; 65 + ProtectSystem = "full"; 66 + DevicePolicy = "closed"; 67 + NoNewPrivileges = true; 68 + WorkingDirectory = "/var/lib/opentelemetry-collector"; 69 + StateDirectory = "opentelemetry-collector"; 70 + }; 71 + }; 72 + }; 73 + }
+1
pkgs/tools/misc/opentelemetry-collector/default.nix
··· 48 48 ''; 49 49 license = licenses.asl20; 50 50 maintainers = with maintainers; [ uri-canva jk ]; 51 + mainProgram = "otelcorecol"; 51 52 }; 52 53 }