I’m adding new Storj storage nodes on my NAS after installing new HDDs. The nodes are running fine and show up normally in the Storj dashboard, but I’m not seeing the usual Prometheus metrics at /metrics for the new nodes (they’re less than a week old).
For all nodes (using macvlan network style - each node got its own IP), I set STORJ_DEBUG_ADDR: “node-IP:9501” in my Docker Compose, and I can access it through the http://node-IP:9501/metrics.
However, the output only shows a minimal set of metrics (mainly function and function_times). My older nodes (same Docker-based setup) expose the full metrics output as expected.
Is this limited /metrics output normal for new nodes, or could it indicate a config/version issue? Any suggestions on what to check?
Answering my own question (in my opinion, this looks like an updater/config conflict — I saw similar mentions in older posts):
I compared config.yaml from an older node (metrics OK) and a newer node (metrics missing). On the new node, the debug.addr line was set/uncommented, while on the old node it was commented out.
Fix:
I commented outdebug.addr in the new node’s config.yaml
I keptSTORJ_DEBUG_ADDR set in Docker Compose (STORJ_DEBUG_ADDR: "x.x.x.x:9501")
After that, the full metrics started showing up normally on /metrics.
I recently encountered the same problem. Apparently, the configuration file (or the default setting) needs to be overridden to trigger full metrics. I’m not sure if this is intentional or a bug.
I don’t think this is a default-value issue. All my nodes have the correct IP/port set in config.yaml under debug.addr.
The environment variable also seems to apply correctly (it matches what’s in debug.addr), but for some reason the config.yaml line isn’t being used—or it’s being overridden (that’s my guess).
After I comment out the debug.addr line in config.yaml (even though it shows the same IP/port as the env var) and restart the container, the metrics start working normally.
So I don’t think the problem is the IP/port configuration itself, but something else starting/binding the metrics exporter (or similar) and preventing the full metrics from being exposed.
If setting a different port in environment variable it will also work without comment out config.yaml. Maybe a bug? I don’t think it was always like this.
Accordingly your observation, it’s reverse - the environment variable doesn’t have a higher priority above an option in config.yaml, so I agree:
The correct way to override (higher the number - the higher priority):
config.yaml
environment variable
command line option
So the environment variables are expected to have a higher priority above options in the config.yaml file and the command line options have a highest priority above both.