tangled
alpha
login
or
join now
pyrox.dev
/
nixpkgs
0
fork
atom
lol
0
fork
atom
overview
issues
pulls
pipelines
nixiso/opentelemetry-collector: init
Bouke van der Bijl
3 years ago
cf90db8b
a12204ed
+75
3 changed files
expand all
collapse all
unified
split
nixos
modules
module-list.nix
services
monitoring
opentelemetry-collector.nix
pkgs
tools
misc
opentelemetry-collector
default.nix
+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
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
1
+
{ config, lib, pkgs, ... }:
2
2
+
3
3
+
let
4
4
+
inherit (lib) mkEnableOption mkIf mkOption types getExe;
5
5
+
6
6
+
cfg = config.services.opentelemetry-collector;
7
7
+
opentelemetry-collector = cfg.package;
8
8
+
9
9
+
settingsFormat = pkgs.formats.yaml {};
10
10
+
in {
11
11
+
options.services.opentelemetry-collector = {
12
12
+
enable = mkEnableOption (lib.mdDoc "Opentelemetry Collector");
13
13
+
14
14
+
package = mkOption {
15
15
+
type = types.package;
16
16
+
default = pkgs.opentelemetry-collector;
17
17
+
defaultText = lib.literalExpression "pkgs.opentelemetry-collector";
18
18
+
description = lib.mdDoc "The opentelemetry-collector package to use.";
19
19
+
};
20
20
+
21
21
+
settings = mkOption {
22
22
+
type = settingsFormat.type;
23
23
+
default = {};
24
24
+
description = lib.mdDoc ''
25
25
+
Specify the configuration for Opentelemetry Collector in Nix.
26
26
+
27
27
+
See https://opentelemetry.io/docs/collector/configuration/ for available options.
28
28
+
'';
29
29
+
};
30
30
+
31
31
+
configFile = mkOption {
32
32
+
type = types.nullOr types.path;
33
33
+
default = null;
34
34
+
description = lib.mdDoc ''
35
35
+
Specify a path to a configuration file that Opentelemetry Collector should use.
36
36
+
'';
37
37
+
};
38
38
+
};
39
39
+
40
40
+
config = mkIf cfg.enable {
41
41
+
assertions = [{
42
42
+
assertion = (
43
43
+
(cfg.settings == {}) != (cfg.configFile == null)
44
44
+
);
45
45
+
message = ''
46
46
+
Please specify a configuration for Opentelemetry Collector with either
47
47
+
'services.opentelemetry-collector.settings' or
48
48
+
'services.opentelemetry-collector.configFile'.
49
49
+
'';
50
50
+
}];
51
51
+
52
52
+
systemd.services.opentelemetry-collector = {
53
53
+
description = "Opentelemetry Collector Service Daemon";
54
54
+
wantedBy = [ "multi-user.target" ];
55
55
+
56
56
+
serviceConfig = let
57
57
+
conf = if cfg.configFile == null
58
58
+
then settingsFormat.generate "config.yaml" cfg.settings
59
59
+
else cfg.configFile;
60
60
+
in
61
61
+
{
62
62
+
ExecStart = "${getExe opentelemetry-collector} --config=file:${conf}";
63
63
+
DynamicUser = true;
64
64
+
Restart = "always";
65
65
+
ProtectSystem = "full";
66
66
+
DevicePolicy = "closed";
67
67
+
NoNewPrivileges = true;
68
68
+
WorkingDirectory = "/var/lib/opentelemetry-collector";
69
69
+
StateDirectory = "opentelemetry-collector";
70
70
+
};
71
71
+
};
72
72
+
};
73
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
51
+
mainProgram = "otelcorecol";
51
52
};
52
53
}