Skip to content

Commit 3cbf39c

Browse files
[exporter/signalfx] Update *.signalfx.com to *.observability.splunkcloud.com in exporter/signalfxexporter (#47670)
#### Description Splunk Observability Cloud is moving customer-facing ingest and API endpoints from the legacy <code class="md-inline-variable-like" style="padding: 1.5px 4px; border-radius: 5px; background-color: color(srgb 0.231373 0.231373 0.231373 / 0.08); color: color(srgb 0.231373 0.231373 0.231373 / 0.94); font-family: Menlo, Monaco, &quot;Courier New&quot;, monospace; font-size: 0.9em; line-height: 1.4; word-break: break-all;">*.signalfx.com</code> hostnames to <code class="md-inline-variable-like" style="padding: 1.5px 4px; border-radius: 5px; background-color: color(srgb 0.231373 0.231373 0.231373 / 0.08); color: color(srgb 0.231373 0.231373 0.231373 / 0.94); font-family: Menlo, Monaco, &quot;Courier New&quot;, monospace; font-size: 0.9em; line-height: 1.4; word-break: break-all;">*.observability.splunkcloud.com</code>. This change updates the SignalFx exporter so that when realm is set and api_url/ingest_url are not explicitly configured, the derived defaults use the new domain: <br> <table border=1> <tr> <td>Setting</td><td>Previous default (from realm)</td><td>New default</td> </tr> <tr> <td>ingest_url</td><td>https://ingest.{realm}.signalfx.com</td><td>https://ingest.{realm}.observability.splunkcloud.com</td> </tr> <tr> <td>api_url</td><td>https://api.{realm}.signalfx.com</td><td>https://api.{realm}.observability.splunkcloud.com</td> </tr> </table> <br> </div></div></div><p style="--tw-space-y-reverse: 0; margin-block: 0px 16px; margin: 6px 0px; word-break: break-word; color: rgb(59, 59, 59); font-family: -apple-system, &quot;system-ui&quot;, sans-serif; font-size: 13px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><span class="font-semibold" data-streamdown="strong" style="--tw-font-weight: 600; font-weight: 600;">Explicit</span><span> </span><code class="md-inline-variable-like" style="padding: 1.5px 4px; border-radius: 5px; background-color: color(srgb 0.231373 0.231373 0.231373 / 0.08); color: color(srgb 0.231373 0.231373 0.231373 / 0.94); font-family: Menlo, Monaco, &quot;Courier New&quot;, monospace; font-size: 0.9em; line-height: 1.4; word-break: break-all;">api_url</code><span> </span>and<span> </span><code class="md-inline-variable-like" style="padding: 1.5px 4px; border-radius: 5px; background-color: color(srgb 0.231373 0.231373 0.231373 / 0.08); color: color(srgb 0.231373 0.231373 0.231373 / 0.94); font-family: Menlo, Monaco, &quot;Courier New&quot;, monospace; font-size: 0.9em; line-height: 1.4; word-break: break-all;">ingest_url</code><span> </span>values in configuration are unchanged and continue to take precedence over<span> </span><code class="" style="padding: 1.5px 4px; border-radius: 5px; background-color: color(srgb 0.231373 0.231373 0.231373 / 0.08); color: color(srgb 0.231373 0.231373 0.231373 / 0.94); font-family: Menlo, Monaco, &quot;Courier New&quot;, monospace; font-size: 0.9em; line-height: 1.4; word-break: break-all;">realm</code>-based derivation.</p><p style="--tw-space-y-reverse: 0; margin-block: 0px 16px; margin: 6px 0px; word-break: break-word; color: rgb(59, 59, 59); font-family: -apple-system, &quot;system-ui&quot;, sans-serif; font-size: 13px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><span class="font-semibold" data-streamdown="strong" style="--tw-font-weight: 600; font-weight: 600;">User impact</span></p><ul class="list-inside list-disc whitespace-normal [li_&amp;]:pl-6" data-streamdown="unordered-list" style="--tw-space-y-reverse: 0; margin-block: 0px 16px; list-style-type: disc; white-space: normal; padding-left: 2em; display: flex !important; flex-direction: column !important; gap: 6px !important; margin: 6px 0px !important; color: rgb(59, 59, 59); font-family: -apple-system, &quot;system-ui&quot;, sans-serif; font-size: 13px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><li class="py-1 [&amp;&gt;p]:inline" data-streamdown="list-item" style="padding-block: 4px; word-break: break-word; padding: 0px !important;"><span class="font-semibold" data-streamdown="strong" style="--tw-font-weight: 600; font-weight: 600;">Breaking (behavioral):</span><span> </span>Any deployment that relied on implicit URLs from<span> </span><code class="" style="padding: 1.5px 4px; border-radius: 5px; background-color: color(srgb 0.231373 0.231373 0.231373 / 0.08); color: color(srgb 0.231373 0.231373 0.231373 / 0.94); font-family: Menlo, Monaco, &quot;Courier New&quot;, monospace; font-size: 0.9em; line-height: 1.4; word-break: break-all;">realm</code><span> </span>only will now send traffic to different hostnames. Operators who maintain egress firewalls, proxies, TLS inspection, or service mesh allowlists must ensure<span> </span><code class="" style="padding: 1.5px 4px; border-radius: 5px; background-color: color(srgb 0.231373 0.231373 0.231373 / 0.08); color: color(srgb 0.231373 0.231373 0.231373 / 0.94); font-family: Menlo, Monaco, &quot;Courier New&quot;, monospace; font-size: 0.9em; line-height: 1.4; word-break: break-all;">*.observability.splunkcloud.com</code><span> </span>(and the concrete hosts for their realm) are permitted if they were previously scoped only to<span> </span><code class="" style="padding: 1.5px 4px; border-radius: 5px; background-color: color(srgb 0.231373 0.231373 0.231373 / 0.08); color: color(srgb 0.231373 0.231373 0.231373 / 0.94); font-family: Menlo, Monaco, &quot;Courier New&quot;, monospace; font-size: 0.9em; line-height: 1.4; word-break: break-all;">*.signalfx.com</code>.</li><li class="py-1 [&amp;&gt;p]:inline" data-streamdown="list-item" style="padding-block: 4px; word-break: break-word; padding: 0px !important;">Deployments that already set full<span> </span><code class="md-inline-variable-like" style="padding: 1.5px 4px; border-radius: 5px; background-color: color(srgb 0.231373 0.231373 0.231373 / 0.08); color: color(srgb 0.231373 0.231373 0.231373 / 0.94); font-family: Menlo, Monaco, &quot;Courier New&quot;, monospace; font-size: 0.9em; line-height: 1.4; word-break: break-all;">api_url</code><span> </span>and<span> </span><code class="md-inline-variable-like" style="padding: 1.5px 4px; border-radius: 5px; background-color: color(srgb 0.231373 0.231373 0.231373 / 0.08); color: color(srgb 0.231373 0.231373 0.231373 / 0.94); font-family: Menlo, Monaco, &quot;Courier New&quot;, monospace; font-size: 0.9em; line-height: 1.4; word-break: break-all;">ingest_url</code><span> </span>are unaffected.</li></ul> <!--Describe what testing was performed and which tests were added.--> #### Testing Ran the SignalFx exporter module tests: `cd exporter/signalfxexporter && go test ./... -short` <!--Describe the documentation added.--> #### Documentation README updates describe the new {realm}.observability.splunkcloud.com defaults for metrics configuration (api_url, ingest_url) and traces/correlation (api_url, correlation.endpoint defaults). <!--Please delete paragraphs that you did not use before submitting.-->
1 parent 8dd7ce2 commit 3cbf39c

File tree

4 files changed

+21
-14
lines changed

4 files changed

+21
-14
lines changed
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
change_type: breaking
2+
component: exporter/signalfx
3+
note: Default `api_url` and `ingest_url` values derived from `realm` now use `*.observability.splunkcloud.com` instead of `*.signalfx.com`.
4+
issues: [47670]
5+
subtext: |
6+
Explicit `api_url` and `ingest_url` settings are unchanged. Update network allowlists if they targeted only `*.signalfx.com`.
7+
change_logs: [user]

exporter/signalfxexporter/README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,12 @@ The following configuration options are required:
3333
- `api_url` (no default): Destination to which [properties and
3434
tags](https://help.splunk.com/en/splunk-observability-cloud/data-tools/metric-finder-and-metadata-catalogue)
3535
are sent. If `realm` is set, this option is derived and will be
36-
`https://api.{realm}.signalfx.com`. If a value is explicitly set, the
36+
`https://api.{realm}.observability.splunkcloud.com`. If a value is explicitly set, the
3737
value of `realm` will not be used in determining `api_url`. The explicit
3838
value will be used instead.
3939
- `ingest_url` (no default): Destination where SignalFx metrics are sent. If
4040
`realm` is set, this option is derived and will be
41-
`https://ingest.{realm}.signalfx.com`. If a value is
41+
`https://ingest.{realm}.observability.splunkcloud.com`. If a value is
4242
explicitly set, the value of `realm` will not be used in determining
4343
`ingest_url`. The explicit value will be used instead. The exporter will
4444
automatically append the appropriate path: "/v2/datapoint" for metrics,
@@ -168,11 +168,11 @@ One of `realm` and `api_url` are required.
168168
- `access_token` (required, no default): The access token is the authentication token
169169
provided by SignalFx.
170170
- `realm` (no default): SignalFx realm where the data will be received.
171-
- `api_url` (default = `https://api.{realm}.signalfx.com/`): Destination to which correlation updates
171+
- `api_url` (default = `https://api.{realm}.observability.splunkcloud.com/`): Destination to which correlation updates
172172
are sent. If a value is explicitly set, the value of `realm` will not be used in determining `api_url`.
173173
The explicit value will be used instead.
174174
- `correlation` Contains options controlling the syncing of service and environment properties onto dimensions.
175-
- `endpoint` (required, default = `api_url` or `https://api.{realm}.signalfx.com/`): This is the base URL for API requests (e.g. `https://api.us0.signalfx.com`).
175+
- `endpoint` (required, default = `api_url` or `https://api.{realm}.observability.splunkcloud.com/`): This is the base URL for API requests (e.g. `https://api.us0.observability.splunkcloud.com`).
176176
- `timeout` (default = 5s): Is the timeout for every attempt to send data to the backend.
177177
- `stale_service_timeout` (default = 5 minutes): How long to wait after a span's service name is last seen before uncorrelating it.
178178
- `max_requests` (default = 20): Max HTTP requests to be made in parallel.

exporter/signalfxexporter/config.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ func (cfg *Config) getMetricTranslator(done chan struct{}) (*translation.MetricT
185185
func (cfg *Config) getIngestURL() (*url.URL, error) {
186186
strURL := cfg.IngestURL
187187
if cfg.IngestURL == "" {
188-
strURL = fmt.Sprintf("https://ingest.%s.signalfx.com", cfg.Realm)
188+
strURL = fmt.Sprintf("https://ingest.%s.observability.splunkcloud.com", cfg.Realm)
189189
}
190190

191191
ingestURL, err := url.Parse(strURL)
@@ -198,7 +198,7 @@ func (cfg *Config) getIngestURL() (*url.URL, error) {
198198
func (cfg *Config) getAPIURL() (*url.URL, error) {
199199
strURL := cfg.APIURL
200200
if cfg.APIURL == "" {
201-
strURL = fmt.Sprintf("https://api.%s.signalfx.com", cfg.Realm)
201+
strURL = fmt.Sprintf("https://api.%s.observability.splunkcloud.com", cfg.Realm)
202202
}
203203

204204
apiURL, err := url.Parse(strURL)

exporter/signalfxexporter/config_test.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -339,19 +339,19 @@ func TestConfigGetIngestURL(t *testing.T) {
339339
},
340340
want: &url.URL{
341341
Scheme: "https",
342-
Host: "ingest.us0.signalfx.com",
342+
Host: "ingest.us0.observability.splunkcloud.com",
343343
Path: "",
344344
},
345345
},
346346
{
347347
name: "Test URL overrides",
348348
cfg: &Config{
349349
Realm: "us0",
350-
IngestURL: "https://ingest.us1.signalfx.com/",
350+
IngestURL: "https://ingest.us1.observability.splunkcloud.com/",
351351
},
352352
want: &url.URL{
353353
Scheme: "https",
354-
Host: "ingest.us1.signalfx.com",
354+
Host: "ingest.us1.observability.splunkcloud.com",
355355
Path: "/",
356356
},
357357
},
@@ -390,18 +390,18 @@ func TestConfigGetAPIURL(t *testing.T) {
390390
},
391391
want: &url.URL{
392392
Scheme: "https",
393-
Host: "api.us0.signalfx.com",
393+
Host: "api.us0.observability.splunkcloud.com",
394394
},
395395
},
396396
{
397397
name: "Test URL overrides",
398398
cfg: &Config{
399399
Realm: "us0",
400-
APIURL: "https://api.us1.signalfx.com/",
400+
APIURL: "https://api.us1.observability.splunkcloud.com/",
401401
},
402402
want: &url.URL{
403403
Scheme: "https",
404-
Host: "api.us1.signalfx.com",
404+
Host: "api.us1.observability.splunkcloud.com",
405405
Path: "/",
406406
},
407407
},
@@ -439,14 +439,14 @@ func TestConfigValidateErrors(t *testing.T) {
439439
name: "Test empty realm and API URL",
440440
cfg: &Config{
441441
AccessToken: "access_token",
442-
IngestURL: "https://ingest.us1.signalfx.com/",
442+
IngestURL: "https://ingest.us1.observability.splunkcloud.com/",
443443
},
444444
},
445445
{
446446
name: "Test empty realm and Ingest URL",
447447
cfg: &Config{
448448
AccessToken: "access_token",
449-
APIURL: "https://api.us1.signalfx.com/",
449+
APIURL: "https://api.us1.observability.splunkcloud.com/",
450450
},
451451
},
452452
{

0 commit comments

Comments
 (0)