Skip to content

Commit

Permalink
test
Browse files Browse the repository at this point in the history
  • Loading branch information
jeffreyc-splunk committed Nov 9, 2023
1 parent cb8e08e commit 3b08012
Show file tree
Hide file tree
Showing 12 changed files with 278 additions and 7 deletions.
1 change: 1 addition & 0 deletions .github/workflows/chef-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ on:
push:
branches:
- main
- chef-new-zeroconfig
paths:
- '.github/workflows/chef-test.yml'
- 'deployments/chef/**'
Expand Down
2 changes: 2 additions & 0 deletions deployments/chef/attributes/default.rb
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@

default['splunk_otel_collector']['with_auto_instrumentation'] = false
default['splunk_otel_collector']['auto_instrumentation_version'] = 'latest'
default['splunk_otel_collector']['auto_instrumentation_systemd'] = false
default['splunk_otel_collector']['auto_instrumentation_ld_so_preload'] = ''
default['splunk_otel_collector']['auto_instrumentation_java_agent_jar'] = '/usr/lib/splunk-instrumentation/splunk-otel-javaagent.jar'
default['splunk_otel_collector']['auto_instrumentation_resource_attributes'] = ''
Expand All @@ -98,4 +99,5 @@
default['splunk_otel_collector']['auto_instrumentation_enable_profiler'] = false
default['splunk_otel_collector']['auto_instrumentation_enable_profiler_memory'] = false
default['splunk_otel_collector']['auto_instrumentation_enable_metrics'] = false
default['splunk_otel_collector']['auto_instrumentation_otlp_endpoint'] = 'http://127.0.0.1:4317'
end
57 changes: 57 additions & 0 deletions deployments/chef/kitchen.yml
Original file line number Diff line number Diff line change
Expand Up @@ -169,10 +169,67 @@ suites:
splunk_access_token: testing123
splunk_realm: test
with_auto_instrumentation: true
auto_instrumentation_version: 0.86.0
auto_instrumentation_resource_attributes: deployment.environment=test
auto_instrumentation_service_name: test
auto_instrumentation_generate_service_name: false
auto_instrumentation_disable_telemetry: true
auto_instrumentation_enable_profiler: true
auto_instrumentation_enable_profiler_memory: true
auto_instrumentation_enable_metrics: true

- name: with_default_preload_instrumentation
run_list:
- recipe[splunk_otel_collector]
attributes:
splunk_otel_collector:
splunk_access_token: testing123
splunk_realm: test
with_auto_instrumentation: true

- name: with_custom_preload_instrumentation
run_list:
- recipe[splunk_otel_collector]
attributes:
splunk_otel_collector:
splunk_access_token: testing123
splunk_realm: test
with_auto_instrumentation: true
auto_instrumentation_version: 0.87.0
auto_instrumentation_resource_attributes: deployment.environment=test
auto_instrumentation_service_name: test
auto_instrumentation_generate_service_name: false
auto_instrumentation_disable_telemetry: true
auto_instrumentation_enable_profiler: true
auto_instrumentation_enable_profiler_memory: true
auto_instrumentation_enable_metrics: true
auto_instrumentation_otlp_endpoint: http://0.0.0.0:4317

- name: with_default_systemd_instrumentation
run_list:
- recipe[splunk_otel_collector]
attributes:
splunk_otel_collector:
splunk_access_token: testing123
splunk_realm: test
with_auto_instrumentation: true
auto_instrumentation_systemd: true

- name: with_custom_systemd_instrumentation
run_list:
- recipe[splunk_otel_collector]
attributes:
splunk_otel_collector:
splunk_access_token: testing123
splunk_realm: test
with_auto_instrumentation: true
auto_instrumentation_version: 0.87.0
auto_instrumentation_systemd: true
auto_instrumentation_resource_attributes: deployment.environment=test
auto_instrumentation_service_name: test
auto_instrumentation_generate_service_name: false
auto_instrumentation_disable_telemetry: true
auto_instrumentation_enable_profiler: true
auto_instrumentation_enable_profiler_memory: true
auto_instrumentation_enable_metrics: true
auto_instrumentation_otlp_endpoint: http://0.0.0.0:4317
48 changes: 44 additions & 4 deletions deployments/chef/recipes/auto_instrumentation.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
# Cookbook:: splunk_otel_collector
# Recipe:: auto_instrumentation

ohai 'reload packages' do
plugin 'packages'
action :nothing
end

package 'splunk-otel-auto-instrumentation' do
action :install
version node['splunk_otel_collector']['auto_instrumentation_version'] if node['splunk_otel_collector']['auto_instrumentation_version'] != 'latest'
Expand All @@ -10,12 +15,47 @@
&& node['packages']['apt'] \
&& Gem::Version.new(node['packages']['apt']['version'].split('~')[0]) >= Gem::Version.new('1.1.0')
allow_downgrade true if platform_family?('amazon', 'rhel', 'suse')
notifies :run, 'ohai[reload packages]', :immediately
end

template '/etc/ld.so.preload' do
source 'ld.so.preload.erb'
log 'installed version' do
message "installed version = #{node['packages']['splunk-otel-auto-instrumentation']['version']}"
level :info
end

template '/usr/lib/splunk-instrumentation/instrumentation.conf' do
source 'instrumentation.conf.erb'
if node['splunk_otel_collector']['auto_instrumentation_systemd'].to_s.downcase == 'true'
directory '/usr/lib/systemd/system.conf.d' do
recursive true
action :create
end
template '/usr/lib/systemd/system.conf.d/00-splunk-otel-auto-instrumentation.conf' do
variables(
installed_version: node['packages']['splunk-otel-auto-instrumentation']['version']
)
source '00-splunk-otel-auto-instrumentation.conf.erb'
notifies :run, 'execute[reload systemd]', :immediately
end
execute 'reload systemd' do
command 'systemctl daemon-reload'
action :nothing
end
else
template '/etc/ld.so.preload' do
source 'ld.so.preload.erb'
end
if node['splunk_otel_collector']['auto_instrumentation_version'] == 'latest' || Gem::Version.new(node['splunk_otel_collector']['auto_instrumentation_version']) >= Gem::Version.new('0.87.0')
template '/etc/splunk/zeroconfig/java.conf' do
variables(
installed_version: node['packages']['splunk-otel-auto-instrumentation']['version']
)
source 'java.conf.erb'
end
else
template '/usr/lib/splunk-instrumentation/instrumentation.conf' do
variables(
installed_version: node['packages']['splunk-otel-auto-instrumentation']['version']
)
source 'instrumentation.conf.erb'
end
end
end
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
[Manager]
DefaultEnvironment="JAVA_TOOL_OPTIONS=-javaagent:<%= node['splunk_otel_collector']['auto_instrumentation_java_agent_jar'] %>"
<% if defined?(node['splunk_otel_collector']['auto_instrumentation_resource_attributes']) && node['splunk_otel_collector']['auto_instrumentation_resource_attributes'] != "" -%>
DefaultEnvironment="OTEL_RESOURCE_ATTRIBUTES=splunk.zc.method=splunk-otel-auto-instrumentation-<%= @installed_version %>-systemd,<%= node['splunk_otel_collector']['auto_instrumentation_resource_attributes'] %>"
<% else -%>
DefaultEnvironment="OTEL_RESOURCE_ATTRIBUTES=splunk.zc.method=splunk-otel-auto-instrumentation-<%= @installed_version %>-systemd
<% end -%>
<% if defined?(node['splunk_otel_collector']['auto_instrumentation_service_name']) && node['splunk_otel_collector']['auto_instrumentation_service_name'] != "" -%>
DefaultEnvironment="OTEL_SERVICE_NAME=<%= node['splunk_otel_collector']['auto_instrumentation_service_name'] %>"
<% end -%>
DefaultEnvironment="SPLUNK_PROFILER_ENABLED=<%= node['splunk_otel_collector']['auto_instrumentation_enable_profiler'].to_s.downcase %>"
DefaultEnvironment="SPLUNK_PROFILER_MEMORY_ENABLED=<%= node['splunk_otel_collector']['auto_instrumentation_enable_profiler_memory'].to_s.downcase %>"
DefaultEnvironment="SPLUNK_METRICS_ENABLED=<%= node['splunk_otel_collector']['auto_instrumentation_enable_metrics'].to_s.downcase %>"
DefaultEnvironment="OTEL_EXPORTER_OTLP_ENDPOINT=<%= node['splunk_otel_collector']['auto_instrumentation_otlp_endpoint'] %>"
4 changes: 3 additions & 1 deletion deployments/chef/templates/instrumentation.conf.erb
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
java_agent_jar=<%= node['splunk_otel_collector']['auto_instrumentation_java_agent_jar'] %>
<% if defined?(node['splunk_otel_collector']['auto_instrumentation_resource_attributes']) && node['splunk_otel_collector']['auto_instrumentation_resource_attributes'] != "" -%>
resource_attributes=<%= node['splunk_otel_collector']['auto_instrumentation_resource_attributes'] %>
resource_attributes=splunk.zc.method=splunk-otel-auto-instrumentation-<%= @installed_version %>,<%= node['splunk_otel_collector']['auto_instrumentation_resource_attributes'] %>
<% else -%>
resource_attributes=splunk.zc.method=splunk-otel-auto-instrumentation-<%= @installed_version %>
<% end -%>
<% if defined?(node['splunk_otel_collector']['auto_instrumentation_service_name']) && node['splunk_otel_collector']['auto_instrumentation_service_name'] != "" -%>
service_name=<%= node['splunk_otel_collector']['auto_instrumentation_service_name'] %>
Expand Down
13 changes: 13 additions & 0 deletions deployments/chef/templates/java.conf.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
JAVA_TOOL_OPTIONS=-javaagent:<%= node['splunk_otel_collector']['auto_instrumentation_java_agent_jar'] %>
<% if defined?(node['splunk_otel_collector']['auto_instrumentation_resource_attributes']) && node['splunk_otel_collector']['auto_instrumentation_resource_attributes'] != "" -%>
OTEL_RESOURCE_ATTRIBUTES=splunk.zc.method=splunk-otel-auto-instrumentation-<%= @installed_version %>,<%= node['splunk_otel_collector']['auto_instrumentation_resource_attributes'] %>
<% else -%>
OTEL_RESOURCE_ATTRIBUTES=splunk.zc.method=splunk-otel-auto-instrumentation-<%= @installed_version %>
<% end -%>
<% if defined?(node['splunk_otel_collector']['auto_instrumentation_service_name']) && node['splunk_otel_collector']['auto_instrumentation_service_name'] != "" -%>
OTEL_SERVICE_NAME=<%= node['splunk_otel_collector']['auto_instrumentation_service_name'] %>
<% end -%>
SPLUNK_PROFILER_ENABLED=<%= node['splunk_otel_collector']['auto_instrumentation_enable_profiler'].to_s.downcase %>
SPLUNK_PROFILER_MEMORY_ENABLED=<%= node['splunk_otel_collector']['auto_instrumentation_enable_profiler_memory'].to_s.downcase %>
SPLUNK_METRICS_ENABLED=<%= node['splunk_otel_collector']['auto_instrumentation_enable_metrics'].to_s.downcase %>
OTEL_EXPORTER_OTLP_ENDPOINT=<%= node['splunk_otel_collector']['auto_instrumentation_otlp_endpoint'] %>
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
libsplunk_path = '/usr/lib/splunk-instrumentation/libsplunk.so'
java_agent_path = '/usr/lib/splunk-instrumentation/splunk-otel-javaagent.jar'
resource_attributes = 'splunk.zc.method=splunk-otel-auto-instrumentation-0.87.0,deployment.environment=test'
otlp_endpoint = 'http://0.0.0.0:4317'

describe package('splunk-otel-auto-instrumentation') do
it { should be_installed }
end

describe file('/etc/ld.so.preload') do
its('content') { should match /^#{libsplunk_path}$/ }
end

describe file('/usr/lib/systemd/system.conf.d/00-splunk-otel-auto-instrumentation.conf') do
it { should_not exist }
end

describe file('/etc/splunk/zeroconfig/java.conf') do
its('content') { should match /^JAVA_TOOL_OPTIONS=-javaagent:#{java_agent_path}$/ }
its('content') { should match /^OTEL_RESOURCE_ATTRIBUTES=#{resource_attributes}$/ }
its('content') { should match /^OTEL_SERVICE_NAME=test$/ }
its('content') { should match /^SPLUNK_PROFILER_ENABLED=true$/ }
its('content') { should match /^SPLUNK_PROFILER_MEMORY_ENABLED=true$/ }
its('content') { should match /^SPLUNK_METRICS_ENABLED=true$/ }
its('content') { should match /^OTEL_EXPORTER_OTLP_ENDPOINT=#{otlp_endpoint}$/ }
end

describe service('splunk-otel-collector') do
it { should be_enabled }
it { should be_running }
end

describe service('td-agent') do
it { should_not be_enabled }
it { should_not be_running }
end
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
java_tool_options = 'JAVA_TOOL_OPTIONS=-javaagent:/usr/lib/splunk-instrumentation/splunk-otel-javaagent.jar'
resource_attributes = 'OTEL_RESOURCE_ATTRIBUTES=splunk.zc.method=splunk-otel-auto-instrumentation-0.87.0-systemd'
otlp_endpoint = 'http://0.0.0.0.0:4317'

describe package('splunk-otel-auto-instrumentation') do
it { should be_installed }
end

describe file('/etc/ld.so.preload') do
its('content') { should match /^#{libsplunk_path}$/ }
end

describe file('/usr/lib/systemd/system.conf.d/00-splunk-otel-auto-instrumentation.conf') do
it { should_not exist }
end

describe file('/etc/splunk/zeroconfig/java.conf') do
its('content') { should match /^DefaultEnvironment="#{java_tool_options}"$/ }
its('content') { should match /^DefaultEnvironment="#{resource_attributes},deployment.environment=test"$/ }
its('content') { should match /^DefaultEnvironment="OTEL_SERVICE_NAME=test"$/ }
its('content') { should match /^DefaultEnvironment="SPLUNK_PROFILER_ENABLED=true"$/ }
its('content') { should match /^DefaultEnvironment="SPLUNK_PROFILER_MEMORY_ENABLED=true"$/ }
its('content') { should match /^DefaultEnvironment="SPLUNK_METRICS_ENABLED=true"$/ }
its('content') { should match /^DefaultEnvironment="OTEL_EXPORTER_OTLP_ENDPOINT=#{otlp_endpoint}""$/ }
end

describe service('splunk-otel-collector') do
it { should be_enabled }
it { should be_running }
end

describe service('td-agent') do
it { should_not be_enabled }
it { should_not be_running }
end
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
libsplunk_path = '/usr/lib/splunk-instrumentation/libsplunk.so'
java_agent_path = '/usr/lib/splunk-instrumentation/splunk-otel-javaagent.jar'
resource_attributes = 'splunk.zc.method=splunk-otel-auto-instrumentation'
otlp_endpoint = 'http://127.0.0.1:4317'

describe package('splunk-otel-auto-instrumentation') do
it { should be_installed }
end

describe file('/etc/ld.so.preload') do
its('content') { should match /^#{libsplunk_path}$/ }
end

describe file('/usr/lib/systemd/system.conf.d/00-splunk-otel-auto-instrumentation.conf') do
it { should_not exist }
end

describe file('/etc/splunk/zeroconfig/java.conf') do
its('content') { should match /^JAVA_TOOL_OPTIONS=-javaagent:#{java_agent_path}$/ }
its('content') { should match /^OTEL_RESOURCE_ATTRIBUTES=#{resource_attributes}-\d+\.\d+\.\d+$/ }
its('content') { should_not match /.*OTEL_SERVICE_NAME.*/ }
its('content') { should match /^SPLUNK_PROFILER_ENABLED=false$/ }
its('content') { should match /^SPLUNK_PROFILER_MEMORY_ENABLED=false$/ }
its('content') { should match /^SPLUNK_METRICS_ENABLED=false$/ }
its('content') { should match /^OTEL_EXPORTER_OTLP_ENDPOINT=#{otlp_endpoint}$/ }
end

describe service('splunk-otel-collector') do
it { should be_enabled }
it { should be_running }
end

describe service('td-agent') do
it { should_not be_enabled }
it { should_not be_running }
end
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
java_tool_options = 'JAVA_TOOL_OPTIONS=-javaagent:/usr/lib/splunk-instrumentation/splunk-otel-javaagent.jar'
resource_attributes = 'OTEL_RESOURCE_ATTRIBUTES=splunk.zc.method=splunk-otel-auto-instrumentation'
otlp_endpoint = 'http://127.0.0.1:4317'

describe package('splunk-otel-auto-instrumentation') do
it { should be_installed }
end

describe file('/etc/ld.so.preload') do
its('content') { should match /^#{libsplunk_path}$/ }
end

describe file('/usr/lib/systemd/system.conf.d/00-splunk-otel-auto-instrumentation.conf') do
it { should_not exist }
end

describe file('/etc/splunk/zeroconfig/java.conf') do
its('content') { should match /^DefaultEnvironment="#{java_tool_options}"$/ }
its('content') { should match /^DefaultEnvironment="#{resource_attributes}-\d+\.\d+\.\d+-systemd"$/ }
its('content') { should_not match /.*OTEL_SERVICE_NAME.*/ }
its('content') { should match /^DefaultEnvironment="SPLUNK_PROFILER_ENABLED=false"$/ }
its('content') { should match /^DefaultEnvironment="SPLUNK_PROFILER_MEMORY_ENABLED=false"$/ }
its('content') { should match /^DefaultEnvironment="SPLUNK_METRICS_ENABLED=false"$/ }
its('content') { should match /^DefaultEnvironment="OTEL_EXPORTER_OTLP_ENDPOINT=#{otlp_endpoint}""$/ }
end

describe service('splunk-otel-collector') do
it { should be_enabled }
it { should be_running }
end

describe service('td-agent') do
it { should_not be_enabled }
it { should_not be_running }
end
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
libsplunk_path = '/usr/lib/splunk-instrumentation/libsplunk.so'
java_agent_path = '/usr/lib/splunk-instrumentation/splunk-otel-javaagent.jar'
resource_attribute = 'deployment.environment=test'
resource_attributes = 'splunk.zc.method=splunk-otel-auto-instrumentation-0.86.0,deployment.environment=test'
service_name = 'test'

describe package('splunk-otel-auto-instrumentation') do
Expand All @@ -13,7 +13,7 @@

describe file('/usr/lib/splunk-instrumentation/instrumentation.conf') do
its('content') { should match /^java_agent_jar=#{java_agent_path}$/ }
its('content') { should match /^resource_attributes=#{resource_attribute}$/ }
its('content') { should match /^resource_attributes=#{resource_attributes}$/ }
its('content') { should match /^service_name=#{service_name}$/ }
its('content') { should match /^generate_service_name=false$/ }
its('content') { should match /^disable_telemetry=true$/ }
Expand Down

0 comments on commit 3b08012

Please sign in to comment.