0
0
Fork 0
mirror of https://github.com/NixOS/nixpkgs.git synced 2025-07-20 09:00:41 +03:00
nixpkgs/nixos/modules/services/monitoring/prometheus/exporters/nginxlog.nix

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

82 lines
2.2 KiB
Nix
Raw Normal View History

{
config,
lib,
pkgs,
options,
...
}:
let
cfg = config.services.prometheus.exporters.nginxlog;
inherit (lib) mkOption types;
in
{
port = 9117;
extraOpts = {
settings = mkOption {
type = types.submodule {
options = {
consul = mkOption {
default = null;
type = types.nullOr (types.attrsOf types.anything);
description = ''
Consul integration options. For more information see the [example config](https://github.com/martin-helmich/prometheus-nginxlog-exporter#configuration-file).
This is disabled by default.
'';
};
namespaces = mkOption {
default = [ ];
type = types.listOf (types.attrsOf types.anything);
description = ''
Namespaces to collect the metrics for. For more information see the [example config](https://github.com/martin-helmich/prometheus-nginxlog-exporter#configuration-file).
'';
};
};
};
default = { };
description = ''
All settings of nginxlog expressed as an Nix attrset.
Check the official documentation for the corresponding YAML
settings that can all be used here: https://github.com/martin-helmich/prometheus-nginxlog-exporter
The `listen` object is already generated by `port`, `listenAddress` and `metricsEndpoint` and
2022-12-17 19:31:14 -05:00
will be merged with the value of `settings` before writing it as JSON.
'';
};
metricsEndpoint = mkOption {
type = types.str;
default = "/metrics";
description = ''
Path under which to expose metrics.
'';
};
};
serviceOpts =
let
listenConfig = {
listen = {
port = cfg.port;
address = cfg.listenAddress;
metrics_endpoint = cfg.metricsEndpoint;
};
};
completeConfig = pkgs.writeText "nginxlog-exporter.yaml" (
builtins.toJSON (lib.recursiveUpdate listenConfig cfg.settings)
);
in
{
serviceConfig = {
ExecStart = ''
${pkgs.prometheus-nginxlog-exporter}/bin/prometheus-nginxlog-exporter -config-file ${completeConfig}
'';
Restart = "always";
ProtectSystem = "full";
};
};
}