nixos/prometheus-bitcoin-exporter: init
This commit is contained in:
parent
dbb07aba88
commit
6b028bcf35
|
@ -25,6 +25,7 @@ let
|
||||||
"artifactory"
|
"artifactory"
|
||||||
"bind"
|
"bind"
|
||||||
"bird"
|
"bird"
|
||||||
|
"bitcoin"
|
||||||
"blackbox"
|
"blackbox"
|
||||||
"collectd"
|
"collectd"
|
||||||
"dnsmasq"
|
"dnsmasq"
|
||||||
|
|
|
@ -0,0 +1,82 @@
|
||||||
|
{ config, lib, pkgs, options }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.services.prometheus.exporters.bitcoin;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
port = 9332;
|
||||||
|
extraOpts = {
|
||||||
|
rpcUser = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "bitcoinrpc";
|
||||||
|
description = ''
|
||||||
|
RPC user name.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
rpcPasswordFile = mkOption {
|
||||||
|
type = types.path;
|
||||||
|
description = ''
|
||||||
|
File containing RPC password.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
rpcScheme = mkOption {
|
||||||
|
type = types.enum [ "http" "https" ];
|
||||||
|
default = "http";
|
||||||
|
description = ''
|
||||||
|
Whether to connect to bitcoind over http or https.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
rpcHost = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "localhost";
|
||||||
|
description = ''
|
||||||
|
RPC host.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
rpcPort = mkOption {
|
||||||
|
type = types.port;
|
||||||
|
default = 8332;
|
||||||
|
description = ''
|
||||||
|
RPC port number.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
refreshSeconds = mkOption {
|
||||||
|
type = types.ints.unsigned;
|
||||||
|
default = 300;
|
||||||
|
description = ''
|
||||||
|
How often to ask bitcoind for metrics.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
extraEnv = mkOption {
|
||||||
|
type = types.attrsOf types.str;
|
||||||
|
default = {};
|
||||||
|
description = ''
|
||||||
|
Extra environment variables for the exporter.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
serviceOpts = {
|
||||||
|
script = ''
|
||||||
|
export BITCOIN_RPC_PASSWORD=$(cat ${cfg.rpcPasswordFile})
|
||||||
|
exec ${pkgs.prometheus-bitcoin-exporter}/bin/bitcoind-monitor.py
|
||||||
|
'';
|
||||||
|
|
||||||
|
environment = {
|
||||||
|
BITCOIN_RPC_USER = cfg.rpcUser;
|
||||||
|
BITCOIN_RPC_SCHEME = cfg.rpcScheme;
|
||||||
|
BITCOIN_RPC_HOST = cfg.rpcHost;
|
||||||
|
BITCOIN_RPC_PORT = toString cfg.rpcPort;
|
||||||
|
METRICS_ADDR = cfg.listenAddress;
|
||||||
|
METRICS_PORT = toString cfg.port;
|
||||||
|
REFRESH_SECONDS = toString cfg.refreshSeconds;
|
||||||
|
} // cfg.extraEnv;
|
||||||
|
};
|
||||||
|
}
|
|
@ -136,6 +136,24 @@ let
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
bitcoin = {
|
||||||
|
exporterConfig = {
|
||||||
|
enable = true;
|
||||||
|
rpcUser = "bitcoinrpc";
|
||||||
|
rpcPasswordFile = pkgs.writeText "password" "hunter2";
|
||||||
|
};
|
||||||
|
metricProvider = {
|
||||||
|
services.bitcoind.default.enable = true;
|
||||||
|
services.bitcoind.default.rpc.users.bitcoinrpc.passwordHMAC = "e8fe33f797e698ac258c16c8d7aadfbe$872bdb8f4d787367c26bcfd75e6c23c4f19d44a69f5d1ad329e5adf3f82710f7";
|
||||||
|
};
|
||||||
|
exporterTest = ''
|
||||||
|
wait_for_unit("prometheus-bitcoin-exporter.service")
|
||||||
|
wait_for_unit("bitcoind-default.service")
|
||||||
|
wait_for_open_port(9332)
|
||||||
|
succeed("curl -sSf http://localhost:9332/metrics | grep -q '^bitcoin_blocks '")
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
blackbox = {
|
blackbox = {
|
||||||
exporterConfig = {
|
exporterConfig = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
Loading…
Reference in New Issue