jvstein / bitcoin-prometheus-exporter

Prometheus exporter for Bitcoin Core nodes
BSD 3-Clause "New" or "Revised" License
70 stars 36 forks source link

Synology, Docker, Bitcoin node, exporter #32

Open shaltay74 opened 4 months ago

shaltay74 commented 4 months ago

Hello. Sorry for my English, I'm using a translator. I'm working for Sinology, running a bitcoin node in docker (https://registry.hub.docker.com/r/lncm/bitcoind/) with your file: bitcoin.conf.

server=1 rpcauth=alice:8bfdd22c39bc8839b6c8e73659f4bbca$f46a37d99b29771a4b42dec9c7614dabe5400deff1ced0e98bb3d4aa643bed5e rpcbind=0.0.0.0 rpcport=8332 rpcallowip=0.0.0.0/0

rpcconnect=bitcoind rpcuser=alice rpcpassword=password=123&z!=@e

The node is working.

I'm running bitcoin-prometheus-exporter in Synology in docker with a slightly modified docker-compose.yml file:

ash-4.4# cat docker-compose.yml version: '3.3' services: exporter: container_name: bitcoin-exporter image: jvstein/bitcoin-prometheus-exporter:latest build: . ports:

2024/05/04 11:41:32 | stderr | socket.gaierror: [Errno -2] Name does not resolve 2024/05/04 11:41:32 | stderr | for res in _socket.getaddrinfo(host, port, family, type, proto, flags): 2024/05/04 11:41:32 | stderr | File "/usr/local/lib/python3.8/socket.py", line 918, in getaddrinfo 2024/05/04 11:41:32 | stderr | for res in getaddrinfo(host, port, 0, SOCK_STREAM): 2024/05/04 11:41:32 | stderr | File "/usr/local/lib/python3.8/socket.py", line 787, in create_connection 2024/05/04 11:41:32 | stderr | self.sock = self._create_connection( 2024/05/04 11:41:32 | stderr | File "/usr/local/lib/python3.8/http/client.py", line 922, in connect 2024/05/04 11:41:32 | stderr | self.connect() 2024/05/04 11:41:32 | stderr | File "/usr/local/lib/python3.8/http/client.py", line 951, in send 2024/05/04 11:41:32 | stderr | self.send(msg) 2024/05/04 11:41:32 | stderr | File "/usr/local/lib/python3.8/http/client.py", line 1011, in _send_output 2024/05/04 11:41:32 | stderr | self._send_output(message_body, encode_chunked=encode_chunked) 2024/05/04 11:41:32 | stderr | File "/usr/local/lib/python3.8/http/client.py", line 1251, in endheaders 2024/05/04 11:41:32 | stderr | self.endheaders(body, encode_chunked=encode_chunked) 2024/05/04 11:41:32 | stderr | File "/usr/local/lib/python3.8/http/client.py", line 1302, in _send_request 2024/05/04 11:41:32 | stderr | self._send_request(method, url, body, headers, encode_chunked) 2024/05/04 11:41:32 | stderr | File "/usr/local/lib/python3.8/http/client.py", line 1256, in request 2024/05/04 11:41:32 | stderr | self.conn.request('POST', self.url.path, postdata, headers) 2024/05/04 11:41:32 | stderr | File "/usr/local/lib/python3.8/site-packages/bitcoin/rpc.py", line 231, in _call 2024/05/04 11:41:32 | stderr | return self._call(service_name, args) 2024/05/04 11:41:32 | stderr | File "/usr/local/lib/python3.8/site-packages/bitcoin/rpc.py", line 361, in call 2024/05/04 11:41:32 | stderr | result = rpc_client().call(args) 2024/05/04 11:41:32 | stderr | File "/monitor/bitcoind-monitor.py", line 199, in bitcoinrpc 2024/05/04 11:41:32 | stderr | res = fn(*args, kw) 2024/05/04 11:41:32 | stderr | File "/usr/local/lib/python3.8/site-packages/riprova/retrier.py", line 162, in _call 2024/05/04 11:41:32 | stderr | return self._call(fn, *args, *kw) 2024/05/04 11:41:32 | stderr | File "/usr/local/lib/python3.8/site-packages/riprova/retrier.py", line 288, in run 2024/05/04 11:41:32 | stderr | raise err 2024/05/04 11:41:32 | stderr | File "/usr/local/lib/python3.8/site-packages/riprova/retrier.py", line 232, in _handle_error 2024/05/04 11:41:32 | stderr | self._handle_error(err) 2024/05/04 11:41:32 | stderr | File "/usr/local/lib/python3.8/site-packages/riprova/retrier.py", line 291, in run 2024/05/04 11:41:32 | stderr | return retrier.run(fn, args, _kw) 2024/05/04 11:41:32 | stderr | File "/usr/local/lib/python3.8/site-packages/riprova/retry.py", line 129, in wrapper 2024/05/04 11:41:32 | stderr | uptime = int(bitcoinrpc("uptime")) 2024/05/04 11:41:32 | stderr | File "/monitor/bitcoind-monitor.py", line 267, in refresh_metrics 2024/05/04 11:41:32 | stderr | refresh_metrics() 2024/05/04 11:41:32 | stderr | File "/monitor/bitcoind-monitor.py", line 381, in refresh_app 2024/05/04 11:41:32 | stderr | self.result = application(self.environ, self.start_response) 2024/05/04 11:41:32 | stderr | File "/usr/local/lib/python3.8/wsgiref/handlers.py", line 137, in run 2024/05/04 11:41:32 | stderr | Traceback (most recent call last): 2024/05/04 11:41:32 | stderr | 2024-05-04T06:41:32Z INFO Using config file: /etc/bitcoin/bitcoin.conf

what am I doing wrong?

If I go to the page: http://192.168.x.x:9332/metrics

shows: A server error occurred. Please contact the administrator.

jvstein commented 4 months ago

You need to set the BITCOIN_RPC_HOST value to the host name or IP address of your bitcoin node.

Looking at your docker-compose.yml file, you are not running bitcoind as a service in the same compose file (i.e. this section). So, the hostname bitcoind provided by the docker-compose service will not be available.

How are you running bitcoind? Is it using a different docker-compose.yml file? If so, you may need to use a custom network to ensure the containers can talk to each other.

shaltay74 commented 4 months ago

In what format should I write it BITCOIN_RPC_HOST?

BITCOIN_RPC_HOST: 192.168.1.10:8332

Yes I use docker-compose.yml for Bitcoin.

ash-4.4# cat docker-compose.yml version: '3' services: bitcoin: container_name: bitcoind user: 1000:1000 image: lncm/bitcoind:v27.0 volumes:

jvstein commented 4 months ago

Try setting to the IP address alone (e.g. BITCOIN_RPC_HOST: 192.168.1.10). The port is set via a different variable.

shaltay74 commented 4 months ago

Something completely broke. )

log bitcoin-exporter:

2024/05/07 19:53:38 | stderr | 2024-05-07T14:53:38Z CRITICAL Received SIGTERM. Exiting.

jvstein commented 4 months ago

log bitcoin-exporter:

2024/05/07 19:53:38 | stderr | 2024-05-07T14:53:38Z CRITICAL Received SIGTERM. Exiting.

That means that something is sending a SIGTERM signal to the exporter process. Nothing internal to the exporter will cause that. It's either docker stopping the container or something else.

shaltay74 commented 4 months ago

If I change from BITCOIN_RPC_HOST: bitcoind to BITCOIN_RPC_HOST: 192.168.x.x any other value, an error occurs.

If I open the page http://192.168.1.10:9332

writes: JSONRPC server handles only POST requests

jvstein commented 4 months ago

Make sure you unset BITCOIN_CONF_PATH if you are using BITCOIN_RPC_HOST. The configuration file takes precedence.

Try setting LOG_LEVEL: "DEBUG" to get more log messages from the exporter.

I tried swapping the docker.io/lncm/bitcoind:v27.0 image into the the docker-compose.yml file in this repo. With that one line change (plus removing the first bitcoind command), everything seems to be working as expected.