istio/istio · error
address is required
Error message
address is required
What it means
Lightstep tracer validation in agent config validation: `ValidateLightstepCollector` requires `meshConfig.defaultConfig.tracing.lightstep.address` to be non-empty before it even attempts `ValidateProxyAddress` on it. Lightstep is deprecated (the source marks it so upstream) but still validated; an absent address means the agent cannot ship spans. Note the companion check: an empty address also fails `ValidateProxyAddress` in the next line, so you can see both errors appended.
Source
Thrown at pkg/config/validation/agent/validation.go:259
return fmt.Errorf("port (%s) is not a number: %v", p, err)
}
if err = ValidatePort(port); err != nil {
return err
}
if err = ValidateFQDN(hostname); err != nil {
if !netutil.IsValidIPAddress(hostname) {
return fmt.Errorf("%q is not a valid hostname or an IP address", hostname)
}
}
return nil
}
// ValidateLightstepCollector validates the configuration for sending envoy spans to LightStep
func ValidateLightstepCollector(ls *meshconfig.Tracing_Lightstep) error {
var errs error
if ls.GetAddress() == "" {
errs = multierror.Append(errs, errors.New("address is required"))
}
if err := ValidateProxyAddress(ls.GetAddress()); err != nil {
errs = multierror.Append(errs, multierror.Prefix(err, "invalid lightstep address:"))
}
if ls.GetAccessToken() == "" {
errs = multierror.Append(errs, errors.New("access token is required"))
}
return errs
}
// ValidateZipkinCollector validates the configuration for sending envoy spans to Zipkin
func ValidateZipkinCollector(z *meshconfig.Tracing_Zipkin) error {
return ValidateProxyAddress(strings.Replace(z.GetAddress(), "$(HOST_IP)", "127.0.0.1", 1))
}
// ValidateDatadogCollector validates the configuration for sending envoy spans to Datadog
func ValidateDatadogCollector(d *meshconfig.Tracing_Datadog) error {
// If the address contains $(HOST_IP), replace it with a valid IP before validation.View on GitHub (pinned to 8dc789c5cf)
Solutions
- Set a full host:port address, e.g. `lightstep.address: collector.lightstep.com:443` (or your ServiceNow/Lightstep collector).
- Since Lightstep is deprecated, prefer zipkin/otel collector unless you must keep it.
- Validate the whole meshConfig (`pilot` will re-validate on startup — check istiod logs for the aggregated multierror list).
Example fix
# before
defaultConfig:
tracing:
lightstep:
accessToken: <token>
# address is required
# after
defaultConfig:
tracing:
lightstep:
address: collector.lightstep.com:443
accessToken: <token> Defensive patterns
Strategy: validation
Validate before calling
// Go: check Lightstep config completeness before bootstrap
func lightstepConfigured(ls *meshconfig.Tracing_Lightstep) error {
if ls.GetAddress() == "" {
return errors.New("lightstep.address required (host:port)")
}
return nil
} Type guard
func hasLightstepAddress(ls *meshconfig.Tracing_Lightstep) bool {
return ls != nil && ls.GetAddress() != ""
} Try / catch
if err := agent.ValidateLightstepCollector(ls); err != nil {
if strings.Contains(err.Error(), "address is required") {
return errors.New("lightstep tracer selected but address missing; set tracing.lightstep.address or switch provider")
}
return err
} Prevention
- Prefer zipkin/otel over deprecated Lightstep in new configs.
- Unit-test rendered meshConfig to assert tracing blocks are complete.
When it happens
Trigger: Configuring `tracing.lightstep: {}` or `lightstep.accessToken: <token>` without `address` in ProxyConfig; templates that only set the token; YAML indentation putting address under the wrong key.
Common situations: Copy-pasted tracing blocks where the address line was dropped; migrating from zipkin to lightstep configs incompletely; legacy configs after Lightstep→ServiceNow migration changed collector hosts.
Related errors
- access token is required
- --meshConfigFile or --meshConfigMapName or --operatorFileNam
- unable to process Stackdriver tracer: missing GCP Project
- duration must be greater than 1ms
- only durations to ms precision are supported
AI-assisted analysis of istio/istio@8dc789c5cf (2026-08-15).
Data as JSON: /api/errors/e392b8ad94381c87.
Report an issue: GitHub.