grafana/loki · error
failed to get hostname, %w
Error message
failed to get hostname, %w
What it means
Error "failed to get hostname, %w" thrown in grafana/loki.
Source
Thrown at pkg/ruler/base/ruler_ring.go:61
InstanceID string `yaml:"instance_id" doc:"hidden"`
InstanceInterfaceNames []string `yaml:"instance_interface_names" doc:"default=[<private network interfaces>]"`
InstancePort int `yaml:"instance_port" doc:"hidden"`
InstanceAddr string `yaml:"instance_addr" doc:"hidden"`
EnableIPv6 bool `yaml:"instance_enable_ipv6" doc:"hidden"`
NumTokens int `yaml:"num_tokens"`
// Injected internally
ListenPort int `yaml:"-"`
// Used for testing
SkipUnregister bool `yaml:"-"`
}
// RegisterFlags adds the flags required to config this to the given FlagSet
func (cfg *RingConfig) RegisterFlags(f *flag.FlagSet) {
hostname, err := os.Hostname()
if err != nil {
panic(fmt.Errorf("failed to get hostname, %w", err))
}
// Ring flags
cfg.KVStore.RegisterFlagsWithPrefix("ruler.ring.", "rulers/", f)
f.DurationVar(&cfg.HeartbeatPeriod, "ruler.ring.heartbeat-period", 5*time.Second, "Interval between heartbeats sent to the ring.")
f.DurationVar(&cfg.HeartbeatTimeout, "ruler.ring.heartbeat-timeout", time.Minute, "The heartbeat timeout after which ruler ring members are considered unhealthy within the ring. 0 = never (timeout disabled).")
// Instance flags
cfg.InstanceInterfaceNames = netutil.PrivateNetworkInterfacesWithFallback([]string{"eth0", "en0"}, util_log.Logger)
f.Var((*flagext.StringSlice)(&cfg.InstanceInterfaceNames), "ruler.ring.instance-interface-names", "Name of network interface to read addresses from.")
f.StringVar(&cfg.InstanceAddr, "ruler.ring.instance-addr", "", "IP address to advertise in the ring.")
f.IntVar(&cfg.InstancePort, "ruler.ring.instance-port", 0, "Port to advertise in the ring (defaults to server.grpc-listen-port).")
f.StringVar(&cfg.InstanceID, "ruler.ring.instance-id", hostname, "Instance ID to register in the ring.")
f.BoolVar(&cfg.EnableIPv6, "ruler.ring.instance-enable-ipv6", false, "Enable using a IPv6 instance address.")
f.IntVar(&cfg.NumTokens, "ruler.ring.num-tokens", 128, "The number of tokens the lifecycler will generate and put into the ring if it joined without transferring tokens from another lifecycler.")
}
// ToLifecyclerConfig returns a LifecyclerConfig based on the rulerView on GitHub (pinned to 24cfedd4f6)
When it happens
Trigger: Thrown at pkg/ruler/base/ruler_ring.go:61 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of grafana/loki@24cfedd4f6 (2026-08-15).
Data as JSON: /api/errors/e8aafd4e6827867d.
Report an issue: GitHub.