vuls: init at 0.27.0
[NixPkgs.git] / nixos / modules / services / monitoring / prometheus / exporters / json.nix
blob1c8db0ea3e0b10d9bd5183c322f80af055af49bd
1 { config, lib, pkgs, options, ... }:
3 let
4   cfg = config.services.prometheus.exporters.json;
5   inherit (lib)
6     mkOption
7     types
8     escapeShellArg
9     concatStringsSep
10     mkRemovedOptionModule
11     ;
14   port = 7979;
15   extraOpts = {
16     configFile = mkOption {
17       type = types.path;
18       description = ''
19         Path to configuration file.
20       '';
21     };
22   };
23   serviceOpts = {
24     serviceConfig = {
25       ExecStart = ''
26         ${pkgs.prometheus-json-exporter}/bin/json_exporter \
27           --config.file ${escapeShellArg cfg.configFile} \
28           --web.listen-address="${cfg.listenAddress}:${toString cfg.port}" \
29           ${concatStringsSep " \\\n  " cfg.extraFlags}
30       '';
31     };
32   };
33   imports = [
34     (mkRemovedOptionModule [ "url" ] ''
35       This option was removed. The URL of the endpoint serving JSON
36       must now be provided to the exporter by prometheus via the url
37       parameter `target'.
39       In prometheus a scrape URL would look like this:
41         http://some.json-exporter.host:7979/probe?target=https://example.com/some/json/endpoint
43       For more information, take a look at the official documentation
44       (https://github.com/prometheus-community/json_exporter) of the json_exporter.
45     '')
46      ({ options.warnings = options.warnings; options.assertions = options.assertions; })
47   ];