in pkg/apmclient/config.go [113:141]
func (cfg *Config) InferElasticCloudURLs() error {
if cfg.ElasticsearchURL == "" {
return nil
}
if cfg.APMServerURL != "" && cfg.KibanaURL != "" {
return nil
}
// If ElasticsearchURL matches https://<alias>.es.<...>
// then derive the APM Server URL from that by substituting
// "apm" for "es", and Kibana URL by substituing "kb".
url, err := url.Parse(cfg.ElasticsearchURL)
if err != nil {
return fmt.Errorf("error parsing ElasticsearchURL: %w", err)
}
if alias, remainder, ok := strings.Cut(url.Host, "."); ok {
if component, remainder, ok := strings.Cut(remainder, "."); ok && component == "es" {
if cfg.APMServerURL == "" {
url.Host = fmt.Sprintf("%s.apm.%s", alias, remainder)
cfg.APMServerURL = url.String()
}
if cfg.KibanaURL == "" {
url.Host = fmt.Sprintf("%s.kb.%s", alias, remainder)
cfg.KibanaURL = url.String()
}
}
}
return nil
}