prometheus/node_exporter · error
unable to call supervisord
Error message
unable to call supervisord: %w
What it means
The supervisord collector's Update could not complete an XML-RPC call to the supervisord server (supervisor.getAllProcessInfo). This covers connection refusal, timeouts, HTTP errors, and malformed XML-RPC responses — supervisord is unreachable or not answering RPCs.
Solutions
- Verify supervisord is running and its XML-RPC server (unix_http_server or inet_http_server) is enabled in supervisord.conf.
- Check --collector.supervisord.url points at the correct socket/URL and the exporter has permission on the unix socket.
- Test manually: `supervisorctl status` from the same user should work.
- Disable the supervisord collector if the server is intentionally absent.
Defensive patterns
Strategy: retry
When it happens
Trigger: Thrown at collector/supervisord.go:138 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of prometheus/node_exporter@17ddd77c59 (2026-09-07).
Data as JSON: /api/errors/14bbc02d9efffa0d.
Report an issue: GitHub.
Appendix: source
Thrown at collector/supervisord.go:138
func (c *supervisordCollector) Update(ch chan<- prometheus.Metric) error {
var info struct {
Name string `xmlrpc:"name"`
Group string `xmlrpc:"group"`
Start int `xmlrpc:"start"`
Stop int `xmlrpc:"stop"`
Now int `xmlrpc:"now"`
State int `xmlrpc:"state"`
StateName string `xmlrpc:"statename"`
SpawnErr string `xmlrpc:"spanerr"`
ExitStatus int `xmlrpc:"exitstatus"`
StdoutLogfile string `xmlrcp:"stdout_logfile"`
StderrLogfile string `xmlrcp:"stderr_logfile"`
PID int `xmlrpc:"pid"`
}
res, err := xrpc.Call("supervisor.getAllProcessInfo")
if err != nil {
return fmt.Errorf("unable to call supervisord: %w", err)
}
for _, p := range res.(xmlrpc.Array) {
for k, v := range p.(xmlrpc.Struct) {
switch k {
case "name":
info.Name = v.(string)
case "group":
info.Group = v.(string)
case "start":
info.Start = v.(int)
case "stop":
info.Stop = v.(int)
case "now":
info.Now = v.(int)
case "state":
info.State = v.(int)
case "statename":View on GitHub (pinned to 17ddd77c59)