{ config, lib, pkgs, ... }: let helpers = import { inherit config lib pkgs; }; cfg = config.exporters; in { options.exporters = { sqlExporterPort = lib.mkOption { type = lib.types.int; }; }; imports = [ ]; config = { services.prometheus-sql-exporter = { enable = true; port = cfg.sqlExporterPort; config = { target = { # This URL should be postgresql:///postgres?host=/run/postgresql # but sql_exporter uses xo/dburl which isn't spec-compliant: https://github.com/xo/dburl/issues/46 data_source_name = "postgresql:/run/postgresql:/postgres"; collectors = helpers.collectorNames; }; collectors = helpers.collectors; }; }; monitoring.prometheusScrapeConfigs = [ { job_name = "sql"; static_configs = [{ targets = [ "localhost:${toString cfg.sqlExporterPort}" ]; }]; } ]; }; }