Skip to content

Commit 1da0e2c

Browse files
Set env vars for service instead of machine (#3930)
* Set env vars for service instead of machine * Fix copy and pasted typo * Remove unused variable * Update chocolatey to use env vars at the service scope * Fix check for "SPLUNK_ACCESS_TOKEN" * Handle upgrade in chocolatey * Get-Package not available on all Windows versions * Add messages to track stage on chocolatey install * Adding more messages to chocolatey script * Fix service on the registry but no env * Restore $regKey on install.ps1 * Add helper allow running the collector manually on Windows * Add breaking change to CHANGELOG.md * Add -config_path switch to install.ps1 * Fix pipeline collector for Windows ZC IIS test * MSI to set SPLUNK_CONFIG at the service scope * Minor doc updates * Update ansible tests for Windows env vars * Correct type of *_ENABLE_PROFILING value * ansible: Windows deployment updates * fix yamllint issues * fix yamllint * Output vagrant.err in case of failure * Fix splunk_trace_url check * Always try to display the vagrant errors * Check if event log has some info about failure * Remove event log steps: running on mac not Windows * Launch vagrant * Init vagrant * Drop launch vagrant step * Fix ansible Windows * Fix yamllint issues * Remove vagrant init * Updates to pass local run of molecule tests * Update chef deployment * Proper data type for multi_string registry entry * Fix var name typo * Fix order of collector environment variables * Experiment custom_vars test * Pay attention to conditional variables * First try with Puppet * Fix syntax for Puppet * Back to curly brackets * Try extension fixes * Fix conditional * Remove to_s * Use empty instead of is_empty * Fix re-declaration of registry_key * Fix puppet lint issue * Do not re-use registry_key * Use array instead of multi_string * Ensure side effects * Update test to use REG_MULTI_SZ * Immutability? * Fix lint error * Fix test * Removing name re-use * Update CHANGELOG and README for Puppet * Updates to mass deployments docs * Update last version deploying with machine wide env vars * Sort service environment variables set via PowerShell * Improve handling of collector restart in Ansible * Remove extra double-quotes in SPLUNK_CONFIG for Ansible * Fix Ansible verify SPLUNK_CONFIG strings * Fix Windows testing checking for legacy versions of the collector * Update CHANGELOG.md Co-authored-by: Ryan Fitzpatrick <[email protected]> * Update last version still setting machine wide env vars --------- Co-authored-by: Ryan Fitzpatrick <[email protected]>
1 parent 3d2d87b commit 1da0e2c

File tree

33 files changed

+529
-569
lines changed

33 files changed

+529
-569
lines changed

.github/workflows/scripts/win-test-services.ps1

Lines changed: 31 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,25 @@ param (
1010
$ErrorActionPreference = 'Stop'
1111
Set-PSDebug -Trace 1
1212

13-
function check_regkey([string]$name, [string]$value) {
14-
$actual = Get-ItemPropertyValue -PATH "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" -name "$name"
15-
if ( "$value" -ne "$actual" ) {
16-
throw "Environment variable $name is not properly set. Found: '$actual', Expected '$value'"
13+
function check_collector_svc_environment([hashtable]$expected_env_vars) {
14+
$actual_env_vars = @{}
15+
try {
16+
$env_array = Get-ItemPropertyValue -Path "HKLM:\SYSTEM\CurrentControlSet\Services\splunk-otel-collector" -Name "Environment"
17+
foreach ($entry in $env_array) {
18+
$key, $value = $entry.Split("=", 2)
19+
$actual_env_vars.Add($key, $value)
20+
}
21+
} catch {
22+
Write-Host "Assuming an old version of the collector with environment variables at the machine scope"
23+
$actual_env_vars = [Environment]::GetEnvironmentVariables("Machine")<#Do this if a terminating exception happens#>
24+
}
25+
26+
foreach ($key in $expected_env_vars.Keys) {
27+
$expected_value = $expected_env_vars[$key]
28+
$actual_value = $actual_env_vars[$key]
29+
if ($expected_value -ne $actual_value) {
30+
throw "Environment variable $key is not properly set. Found: '$actual_value', Expected '$expected_value'"
31+
}
1732
}
1833
}
1934

@@ -24,16 +39,18 @@ function service_running([string]$name) {
2439
$api_url = "https://api.${realm}.signalfx.com"
2540
$ingest_url = "https://ingest.${realm}.signalfx.com"
2641

27-
check_regkey -name "SPLUNK_CONFIG" -value "${env:PROGRAMDATA}\Splunk\OpenTelemetry Collector\${mode}_config.yaml"
28-
check_regkey -name "SPLUNK_ACCESS_TOKEN" -value "$access_token"
29-
check_regkey -name "SPLUNK_REALM" -value "$realm"
30-
check_regkey -name "SPLUNK_API_URL" -value "$api_url"
31-
check_regkey -name "SPLUNK_INGEST_URL" -value "$ingest_url"
32-
check_regkey -name "SPLUNK_TRACE_URL" -value "${ingest_url}/v2/trace"
33-
check_regkey -name "SPLUNK_HEC_URL" -value "${ingest_url}/v1/log"
34-
check_regkey -name "SPLUNK_HEC_TOKEN" -value "$access_token"
35-
check_regkey -name "SPLUNK_BUNDLE_DIR" -value "${env:PROGRAMFILES}\Splunk\OpenTelemetry Collector\agent-bundle"
36-
check_regkey -name "SPLUNK_MEMORY_TOTAL_MIB" -value "$memory"
42+
check_collector_svc_environment @{
43+
"SPLUNK_CONFIG" = "${env:PROGRAMDATA}\Splunk\OpenTelemetry Collector\${mode}_config.yaml";
44+
"SPLUNK_ACCESS_TOKEN" = "$access_token";
45+
"SPLUNK_REALM" = "$realm";
46+
"SPLUNK_API_URL" = "$api_url";
47+
"SPLUNK_INGEST_URL" = "$ingest_url";
48+
"SPLUNK_TRACE_URL" = "${ingest_url}/v2/trace";
49+
"SPLUNK_HEC_URL" = "${ingest_url}/v1/log";
50+
"SPLUNK_HEC_TOKEN" = "$access_token";
51+
"SPLUNK_BUNDLE_DIR" = "${env:PROGRAMFILES}\Splunk\OpenTelemetry Collector\agent-bundle";
52+
"SPLUNK_MEMORY_TOTAL_MIB" = "$memory";
53+
}
3754

3855
if ((service_running -name "splunk-otel-collector")) {
3956
write-host "splunk-otel-collector service is running."

CHANGELOG.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22

33
## Unreleased
44

5+
### 🛑 Breaking changes 🛑
6+
7+
- (Splunk) On Windows the `SPLUNK_*` environment variables were moved from the machine scope to the collector service scope. This avoids collisions with other agents and instrumentation. If any of these environment variables are required by your apps, please adopt them directly. ([#3930](https://github.com/signalfx/splunk-otel-collector/pull/3930))
8+
59
## v0.92.0
610

711
This Splunk OpenTelemetry Collector release includes changes from the [opentelemetry-collector v0.92.0](https://github.com/open-telemetry/opentelemetry-collector/releases/tag/v0.92.0) and the [opentelemetry-collector-contrib v0.92.0](https://github.com/open-telemetry/opentelemetry-collector-contrib/releases/tag/v0.92.0) releases where appropriate.
@@ -86,6 +90,7 @@ This Splunk OpenTelemetry Collector release includes changes from the [opentelem
8690
- (Core) `otlpexporter`: remove dependency of otlphttpreceiver on otlpexporter ([#6454](https://github.com/open-telemetry/opentelemetry-collector/issues/6454))
8791

8892
## v0.91.3
93+
8994
- (Splunk) Properly sign and associate changelog to release. This should be otherwise identical to v0.91.2
9095

9196
## v0.91.2
@@ -113,7 +118,6 @@ This Splunk OpenTelemetry Collector release includes changes from the [opentelem
113118
- (Splunk) Adopt `awss3` exporter ([#4117](https://github.com/signalfx/splunk-otel-collector/pull/4117))
114119
- (Splunk) Convert loglevel to verbosity on logging exporter ([#4097](https://github.com/signalfx/splunk-otel-collector/pull/4097))
115120

116-
117121
## v0.91.1
118122

119123
### 💡 Enhancements 💡
@@ -301,7 +305,6 @@ This Splunk OpenTelemetry Collector release includes changes from the [opentelem
301305
- (Contrib) `zipkinreceiver`: Return BadRequest in case of permanent errors ([#4335](https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/4335))
302306
- (Core) `exporterhelper`: fix bug with queue size and capacity metrics ([#8682](https://github.com/open-telemetry/opentelemetry-collector/issues/8682))
303307

304-
305308
## v0.88.0
306309

307310
This Splunk OpenTelemetry Collector release includes changes from the [opentelemetry-collector v0.88.0](https://github.com/open-telemetry/opentelemetry-collector/releases/tag/v0.88.0) and the [opentelemetry-collector-contrib v0.88.0](https://github.com/open-telemetry/opentelemetry-collector-contrib/releases/tag/v0.88.0) releases where appropriate.

deployments/ansible/CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22

33
## unreleased
44

5+
- On Windows the `SPLUNK_*` environment variables were moved from the machine scope to the collector service scope.
6+
It is possible that some instrumentations are relying on the machine-wide environment variables set by the installation. ([#3930](https://github.com/signalfx/splunk-otel-collector/pull/3930))
7+
58
## ansible-v0.24.0
69

710
### 🚩 Deprecations 🚩

deployments/ansible/README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,10 @@ Currently, the following Windows versions are supported:
2525
- Windows Server 2019 64-bit
2626
- Windows Server 2022 64-bit
2727

28+
On Windows, the collector is installed as a Windows service and its environment
29+
variables are set at the service scope, i.e.: they are only available to the
30+
collector service and not to the entire machine.
31+
2832
Ansible requires PowerShell 3.0 or newer and at least .NET 4.0 to be installed on Windows host.
2933
A WinRM listener should be created and activeted.
3034
For setting up Windows Host refer [Ansible Docs](https://docs.ansible.com/ansible/latest/user_guide/windows_setup.html).

deployments/ansible/molecule/custom_vars/windows-verify.yml

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
gather_facts: true
55
become: no
66
vars:
7-
reg_values:
7+
collector_reg_values:
88
SPLUNK_CONFIG: '{{ ansible_env.ProgramData }}\Splunk\OpenTelemetry Collector\custom_config.yml'
99
SPLUNK_INGEST_URL: https://fake-splunk-ingest.com
1010
SPLUNK_API_URL: https://fake-splunk-api.com
@@ -15,11 +15,10 @@
1515
SPLUNK_BALLAST_SIZE_MIB: "100"
1616
MY_CUSTOM_VAR1: value1
1717
MY_CUSTOM_VAR2: value2
18-
SIGNALFX_DOTNET_TRACER_HOME: '{{ ansible_env.ProgramFiles }}\SignalFx\.NET Tracing\'
19-
dotnet_reg_values:
20-
COR_ENABLE_PROFILING: "true"
18+
iis_reg_values:
19+
COR_ENABLE_PROFILING: "1"
2120
COR_PROFILER: "{B4C89B0F-9908-4F73-9F59-0D77C5A06874}"
22-
CORECLR_ENABLE_PROFILING: "true"
21+
CORECLR_ENABLE_PROFILING: "1"
2322
CORECLR_PROFILER: "{B4C89B0F-9908-4F73-9F59-0D77C5A06874}"
2423
SIGNALFX_ENV: test-environment
2524
SIGNALFX_SERVICE_NAME: test-service-name
@@ -28,6 +27,8 @@
2827
SIGNALFX_GLOBAL_TAGS: splunk.zc.method:signalfx-dotnet-tracing-1.0.0,dotnet-tag:dotnet-tag-value
2928
SIGNALFX_DOTNET_VAR1: dotnet-value1
3029
SIGNALFX_DOTNET_VAR2: dotnet-value2
30+
machine_reg_values:
31+
SIGNALFX_DOTNET_TRACER_HOME: '{{ ansible_env.ProgramFiles }}\SignalFx\.NET Tracing\'
3132
tasks:
3233
- name: Check splunk-otel-collector service
3334
ansible.windows.win_service:
@@ -36,10 +37,6 @@
3637
check_mode: yes
3738
register: service_status
3839

39-
- name: Assert splunk-otel-collector service status
40-
assert:
41-
that: not service_status.changed
42-
4340
- name: Check fluentdwinsvc service
4441
ansible.windows.win_service:
4542
name: fluentdwinsvc
@@ -124,12 +121,23 @@
124121
- name: Verify IIS env vars
125122
assert:
126123
that: (item.key + '=' + item.value) in iis_env.value
127-
loop: "{{ dotnet_reg_values | dict2items }}"
124+
loop: "{{ iis_reg_values | dict2items }}"
125+
126+
- name: Get splunk-otel-collector service env vars
127+
ansible.windows.win_reg_stat:
128+
path: HKLM:\SYSTEM\CurrentControlSet\Services\splunk-otel-collector
129+
name: Environment
130+
register: collector_env
131+
132+
- name: Verify splunk-otel-collector service env vars
133+
assert:
134+
that: (item.key + '=' + item.value) in collector_env.value
135+
loop: "{{ collector_reg_values | dict2items }}"
128136

129137
- name: Verify env vars
130138
include_tasks: ../shared/verify_registry_key.yml
131139
vars:
132140
path: HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
133141
name: "{{ item.key }}"
134142
value: "{{ item.value }}"
135-
loop: "{{ reg_values | combine(dotnet_reg_values) | dict2items }}"
143+
loop: "{{ machine_reg_values | dict2items }}"

deployments/ansible/molecule/default/windows-verify.yml

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
gather_facts: true
55
become: no
66
vars:
7-
reg_values:
7+
collector_reg_values:
88
SPLUNK_CONFIG: '{{ ansible_env.ProgramData }}\Splunk\OpenTelemetry Collector\agent_config.yaml'
99
SPLUNK_ACCESS_TOKEN: fake-token
1010
SPLUNK_REALM: fake-realm
@@ -21,10 +21,6 @@
2121
check_mode: yes
2222
register: service_status
2323

24-
- name: Assert splunk-otel-collector service status
25-
assert:
26-
that: not service_status.changed
27-
2824
- name: Check fluentdwinsvc service
2925
ansible.windows.win_service:
3026
name: fluentdwinsvc
@@ -36,10 +32,13 @@
3632
assert:
3733
that: not service_status.exists
3834

39-
- name: Verify env vars
40-
include_tasks: ../shared/verify_registry_key.yml
41-
vars:
42-
path: HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
43-
name: "{{ item.key }}"
44-
value: "{{ item.value }}"
45-
loop: "{{ reg_values | dict2items }}"
35+
- name: Get splunk-otel-collector service env vars
36+
ansible.windows.win_reg_stat:
37+
path: HKLM:\SYSTEM\CurrentControlSet\Services\splunk-otel-collector
38+
name: Environment
39+
register: collector_env
40+
41+
- name: Verify splunk-otel-collector service env vars
42+
assert:
43+
that: (item.key + '=' + item.value) in collector_env.value
44+
loop: "{{ collector_reg_values | dict2items }}"

deployments/ansible/molecule/with_instrumentation/windows-verify.yml

Lines changed: 30 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
gather_facts: true
55
become: no
66
vars:
7-
reg_values:
7+
collector_reg_values:
88
SPLUNK_CONFIG: '{{ ansible_env.ProgramData }}\Splunk\OpenTelemetry Collector\agent_config.yaml'
99
SPLUNK_ACCESS_TOKEN: fake-token
1010
SPLUNK_REALM: fake-realm
@@ -13,16 +13,17 @@
1313
SPLUNK_HEC_URL: https://ingest.fake-realm.signalfx.com/v1/log
1414
SPLUNK_INGEST_URL: https://ingest.fake-realm.signalfx.com
1515
SPLUNK_TRACE_URL: https://ingest.fake-realm.signalfx.com/v2/trace
16-
SIGNALFX_DOTNET_TRACER_HOME: '{{ ansible_env.ProgramFiles }}\SignalFx\.NET Tracing\'
17-
dotnet_reg_values:
18-
COR_ENABLE_PROFILING: "true"
16+
iis_reg_values:
17+
COR_ENABLE_PROFILING: "1"
1918
COR_PROFILER: "{B4C89B0F-9908-4F73-9F59-0D77C5A06874}"
20-
CORECLR_ENABLE_PROFILING: "true"
19+
CORECLR_ENABLE_PROFILING: "1"
2120
CORECLR_PROFILER: "{B4C89B0F-9908-4F73-9F59-0D77C5A06874}"
2221
SIGNALFX_ENV: ""
2322
SIGNALFX_SERVICE_NAME: ""
2423
SIGNALFX_PROFILER_ENABLED: "false"
2524
SIGNALFX_PROFILER_MEMORY_ENABLED: "false"
25+
machine_reg_values:
26+
SIGNALFX_DOTNET_TRACER_HOME: '{{ ansible_env.ProgramFiles }}\SignalFx\.NET Tracing\'
2627
tasks:
2728
- name: Check splunk-otel-collector service
2829
ansible.windows.win_service:
@@ -31,10 +32,6 @@
3132
check_mode: yes
3233
register: service_status
3334

34-
- name: Assert splunk-otel-collector service status
35-
assert:
36-
that: not service_status.changed
37-
3835
- name: Get installed signalfx-dotnet-tracing MSI version
3936
ansible.windows.win_shell: |
4037
$msi_version = ""
@@ -44,19 +41,11 @@
4441
echo $msi_version
4542
register: msi_version
4643

47-
- name: Add SIGNALFX_GLOBAL_TAGS to dotnet_reg_values
44+
- name: Add SIGNALFX_GLOBAL_TAGS to iis_reg_values
4845
set_fact:
49-
dotnet_reg_values: |-
46+
iis_reg_values: |-
5047
{%- set tags = "splunk.zc.method:signalfx-dotnet-tracing-" + (msi_version.stdout | trim) -%}
51-
{{ dotnet_reg_values | combine({"SIGNALFX_GLOBAL_TAGS": tags}) }}
52-
53-
- name: Verify collector env vars
54-
include_tasks: ../shared/verify_registry_key.yml
55-
vars:
56-
path: HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
57-
name: "{{ item.key }}"
58-
value: "{{ item.value }}"
59-
loop: "{{ reg_values | dict2items }}"
48+
{{ iis_reg_values | combine({"SIGNALFX_GLOBAL_TAGS": tags}) }}
6049
6150
- name: Get IIS env vars
6251
ansible.windows.win_reg_stat:
@@ -67,12 +56,31 @@
6756
- name: Verify IIS env vars
6857
assert:
6958
that: (item.key + '=' + item.value) in iis_env.value
70-
loop: "{{ dotnet_reg_values | dict2items }}"
59+
loop: "{{ iis_reg_values | dict2items }}"
60+
61+
- name: Get splunk-otel-collector service env vars
62+
ansible.windows.win_reg_stat:
63+
path: HKLM:\SYSTEM\CurrentControlSet\Services\splunk-otel-collector
64+
name: Environment
65+
register: collector_env
66+
67+
- name: Verify splunk-otel-collector service env vars
68+
assert:
69+
that: (item.key + '=' + item.value) in collector_env.value
70+
loop: "{{ collector_reg_values | dict2items }}"
7171

7272
- name: Verify .NET tracing env vars were not added to the system
7373
include_tasks: ../shared/verify_registry_key.yml
7474
vars:
7575
path: HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
7676
name: "{{ item.key }}"
7777
exists: false
78-
loop: "{{ dotnet_reg_values | dict2items }}"
78+
loop: "{{ iis_reg_values | dict2items }}"
79+
80+
- name: Verify .NET tracing MSI env vars were added to the system
81+
include_tasks: ../shared/verify_registry_key.yml
82+
vars:
83+
path: HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
84+
name: "{{ item.key }}"
85+
value: "{{ item.value }}"
86+
loop: "{{ machine_reg_values | dict2items }}"

deployments/ansible/roles/collector/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -335,9 +335,9 @@ For proxy options, see the [Windows Proxy](#windows-proxy) section.
335335
`signalfx_dotnet_auto_instrumentation_additional_options` option to
336336
enable/configure auto instrumentation for ***only*** IIS applications:
337337
```yaml
338-
COR_ENABLE_PROFILING: true # Required
338+
COR_ENABLE_PROFILING: "1" # Required
339339
COR_PROFILER: "{B4C89B0F-9908-4F73-9F59-0D77C5A06874}" # Required
340-
CORECLR_ENABLE_PROFILING: true # Required
340+
CORECLR_ENABLE_PROFILING: "1" # Required
341341
CORECLR_PROFILER: "{B4C89B0F-9908-4F73-9F59-0D77C5A06874}" # Required
342342
SIGNALFX_ENV: "{{ signalfx_dotnet_auto_instrumentation_environment }}"
343343
SIGNALFX_GLOBAL_TAGS: "{{ signalfx_dotnet_auto_instrumentation_global_tags }}"

deployments/ansible/roles/collector/handlers/main.yml

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,24 @@
2525
- (start_service | default(true) | bool)
2626

2727
- name: Restart Splunk OpenTelemetry Collector for windows
28-
ansible.windows.win_service:
29-
name: splunk-otel-collector
30-
state: restarted
28+
ansible.windows.win_shell: |
29+
Try {
30+
Restart-Service splunk-otel-collector
31+
} Catch {
32+
# Try to get some more helpful information given that the error message is not very helpful
33+
Write-Host "Error restarting splunk-otel-collector service: $_"
34+
35+
Write-Host "Splunk OpenTelemetry Collector service registry entry:"
36+
Get-Item HKLM:\SYSTEM\CurrentControlSet\Services\splunk-otel-collector
37+
38+
Write-Host "Last 15 Application log events:"
39+
Get-WinEvent -Log Application -MaxEvents 15 | Format-List TimeCreated, ProviderName, Message
40+
41+
Write-Host "Last 15 System log events:"
42+
Get-WinEvent -Log System -MaxEvents 15 | Format-List TimeCreated, ProviderName, Message
43+
44+
Throw $_
45+
}
3146
listen: "restart windows splunk-otel-collector"
3247
when:
3348
- (start_service | default(true) | bool)

deployments/ansible/roles/collector/tasks/otel_win_install.yml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@
3737
ansible.windows.win_package:
3838
path: "{{otel_msi_package.dest}}"
3939
state: present
40-
notify: "restart windows splunk-otel-collector"
4140

4241
- name: Merge custom config into the default config
4342
ansible.builtin.import_tasks: config_override.yml
@@ -48,11 +47,9 @@
4847
content: '{{ updated_config | to_nice_yaml (indent=2) }}'
4948
dest: "{{ splunk_otel_collector_config }}"
5049
when: splunk_config_override != ''
51-
notify: "restart windows splunk-otel-collector"
5250

5351
- name: Push Custom Config file for splunk-otel-collector, If provided
5452
ansible.windows.win_template:
5553
src: "{{splunk_otel_collector_config_source}}"
5654
dest: "{{splunk_otel_collector_config}}"
5755
when: splunk_otel_collector_config_source != ""
58-
notify: "restart windows splunk-otel-collector"

0 commit comments

Comments
 (0)