1{
2 config,
3 lib,
4 pkgs,
5 options,
6 ...
7}:
8
9let
10 cfg = config.services.prometheus.exporters.artifactory;
11 inherit (lib) mkOption types concatStringsSep;
12in
13{
14 port = 9531;
15 extraOpts = {
16 scrapeUri = mkOption {
17 type = types.str;
18 default = "http://localhost:8081/artifactory";
19 description = ''
20 URI on which to scrape JFrog Artifactory.
21 '';
22 };
23
24 artiUsername = mkOption {
25 type = types.str;
26 description = ''
27 Username for authentication against JFrog Artifactory API.
28 '';
29 };
30
31 artiPassword = mkOption {
32 type = types.str;
33 default = "";
34 description = ''
35 Password for authentication against JFrog Artifactory API.
36 One of the password or access token needs to be set.
37 '';
38 };
39
40 artiAccessToken = mkOption {
41 type = types.str;
42 default = "";
43 description = ''
44 Access token for authentication against JFrog Artifactory API.
45 One of the password or access token needs to be set.
46 '';
47 };
48 };
49 serviceOpts = {
50 serviceConfig = {
51 ExecStart = ''
52 ${pkgs.prometheus-artifactory-exporter}/bin/artifactory_exporter \
53 --web.listen-address ${cfg.listenAddress}:${toString cfg.port} \
54 --artifactory.scrape-uri ${cfg.scrapeUri} \
55 ${concatStringsSep " \\\n " cfg.extraFlags}
56 '';
57 Environment = [
58 "ARTI_USERNAME=${cfg.artiUsername}"
59 "ARTI_PASSWORD=${cfg.artiPassword}"
60 "ARTI_ACCESS_TOKEN=${cfg.artiAccessToken}"
61 ];
62 };
63 };
64}