This Splunk OpenTelemetry Collector release includes changes from the opentelemetry-collector v0.87.0 and the opentelemetry-collector-contrib v0.87.0 releases where appropriate.
🛑 Breaking changes 🛑
- (Splunk) Auto Instrumentation for Linux (#3791):
- The
/usr/lib/splunk-instrumentation/instrumentation.confconfig file is no longer
supported, and is replaced by/etc/splunk/zeroconfig/java.conf. If thesplunk-otel-auto-instrumentationdeb/rpm
package is manually upgraded, the options within/usr/lib/splunk-instrumentation/instrumentation.confwill need to
be manually migrated to their corresponding environment variables within/etc/splunk/zeroconfig/java.conf. - Manual installation of the
splunk-otel-auto-instrumentationdeb/rpm package no longer automatically adds
/usr/lib/splunk-instrumentation/libsplunk.soto/etc/ld.so.preload. - Manual upgrade of the
splunk-otel-auto-instrumentationdeb/rpm package will automatically remove
/usr/lib/splunk-instrumentation/libsplunk.sofrom/etc/ld.so.preload. - The
splunk.linux-autoinstr.executionsmetric is no longer generated bylibsplunk.so. - See Splunk OpenTelemetry Zero Configuration Auto Instrumentation for Linux
for manual installation/configuration details. - For users of the Ansible, Chef, Puppet, or Salt modules for Auto Instrumentation, it is recommended to update the following option in your configuration for version
0.86.0or older until these modules are updated to manage these changes:- Ansible:
splunk_otel_auto_instrumentation_version - Chef:
auto_instrumentation_version - Puppet:
auto_instrumentation_version - Salt:
auto_instrumentation_version
- Ansible:
- The
- (Contrib)
kubeletstatsreceiver: Fixes a bug where the "insecure_skip_verify" config was not being honored when "auth_type" is "serviceAccount" in kubelet client. (#26319)- Before the fix, the kubelet client was not verifying kubelet's certificate. The default value of the config is false,
so with the fix the client will start verifying tls cert unless the config is explicitly set to true.
- Before the fix, the kubelet client was not verifying kubelet's certificate. The default value of the config is false,
- (Contrib)
tailsamplingprocessor: Improve counting for thecount_traces_sampledmetric (#25882) - (Contrib)
extension/filestorage: Replace path-unsafe characters in component names (#3148) - (Core)
service/telemetry exporter/exporterhelper: Enable sampling logging by default and apply it to all components. (#8134)- The sampled logger configuration can be disabled easily by setting the
service::telemetry::logs::sampling::enabledtofalse.
- The sampled logger configuration can be disabled easily by setting the
🚩 Deprecations 🚩
- (Splunk) The following Auto Instrumentation options for the Linux installer script are deprecated and will only apply if the
--instrumentation-version <version>option is specified for version0.86.0or older:--[no-]generate-service-name:libsplunk.sono longer generates service names for instrumented applications. The default behavior is for the activated Java and/or Node.js Auto Instrumentation agents to automatically generate service names. Use the--service-name <name>option to override the auto-generated service names for all instrumented applications.--[enable|disable]-telemetry:libsplunk.sono longer generates thesplunk.linux-autoinstr.executionstelemetry metric.
🚀 New components 🚀
💡 Enhancements 💡
- (Splunk) Update golang to 1.20.10 (#3770)
- (Splunk) Add debian 12 support to installer (#3766)
- (Splunk) Add new Auto Instrumentation options for the Linux installer script (#3791):
--with[out]-systemd-instrumentation: Activate auto instrumentation for onlysystemdservices without preloading
thelibsplunk.soshared object library (default:--without-systemd-instrumentation)- Initial support for Splunk OpenTelemetry Auto Instrumentation for Node.js:
- Activated by default if the
--with-instrumentationor--with-systemd-instrumentationoption is specified. - Use the
--without-instrumentation-sdk nodeoption to explicitly skip Node.js. npmis required to install the Node.js Auto Instrumentation package. Ifnpmis not installed, Node.js will
be skipped automatically.- By default, the Node.js Auto Instrumentation package is installed with the
npm install --globalcommand. Use the
--npm-command "<command>"option to specify a custom command. - Environment variables to activate and configure Node.js auto instrumentation are added to
/etc/splunk/zeroconfig/node.conf(for--with-instrumentation) or
/usr/lib/systemd/system.conf.d/00-splunk-otel-auto-instrumentation.conf(for--with-systemd-instrumentation) based on defaults and specified installation options.
- Activated by default if the
- Auto Instrumentation for Java is also activated by default if the
--with-instrumentationor
--with-systemd-instrumentationoption is specified. Use the--without-instrumentation-sdk javaoption to skip Java. --otlp-endpoint host:port: Set the OTLP gRPC endpoint for captured traces (default:http://LISTEN_INTERFACE:4317
whereLISTEN_INTERFACEis the value from the--listen-interfaceoption if specified, or127.0.0.1otherwise)- See Linux Installer Script for more details.
- (Splunk) Update splunk-otel-javaagent to v1.29.0 (#3788)
- (Splunk) Redis discovery (#3731)
- (Splunk) Update Bundled OpenJDK to 11.0.21+9 (#3819)
- (Splunk) Oracledb discovery tweaks (remove static endpoint) (#3836)
- (Contrib)
probabilisticsamplerprocessor: Allow non-bytes values to be used as the source for the sampling decision (#18222) - (Contrib)
kafkareceiver: Allow users to attach kafka header metadata with the log/metric/trace record in the pipeline. Introduce a new config param, 'header_extraction' and some examples. (#24367) - (Contrib)
kafkaexporter: Adding Zipkin encoding option for traces to kafkaexporter (#21102) - (Contrib)
kubeletstatsreceiver: Support specifying context forkubeConfigauth_type(#26665) - (Contrib)
kubeletstatsreceiver: Adds newk8s.pod.cpu_limit_utilization,k8s.pod.cpu_request_utilization,k8s.container.cpu_limit_utilization, andk8s.container.cpu_request_utilizationmetrics that represent the ratio of cpu used vs set limits and requests. (#27276) - (Contrib)
kubeletstatsreceiver: Adds newk8s.pod.memory_limit_utilization,k8s.pod.memory_request_utilization,k8s.container.memory_limit_utilization, andk8s.container.memory_request_utilizationmetrics that represent the ratio of memory used vs set limits and requests. (#25894)
🧰 Bug fixes 🧰
- (Contrib)
spanmetricsprocessor: Prune histograms when dimension cache is pruned. (#27080)- Dimension cache was always pruned but histograms were not being pruned. This caused metric series created
by processor/spanmetrics to grow unbounded.
- Dimension cache was always pruned but histograms were not being pruned. This caused metric series created
- (Contrib)
splunkhecreceiver: Fix receiver behavior when used for metrics and logs at the same time; metrics are no longer dropped. (#27473) - (Contrib)
metricstransformprocessor: Fixes a nil pointer dereference when copying an exponential histogram (#27409) - (contrib)
k8sclusterreceiver: change k8s.container.ready, k8s.pod.phase, k8s.pod.status_reason, k8s.namespace.phase units to empty (#10553) - (Contrib)
k8sclusterreceiver: Change k8s.node.condition* metric units to empty (#10553) - (Contrib)
syslogreceiver: Fix issue where long tokens would be truncated prematurely (#27294) - (Core)
telemetry: remove workaround to ignore errors when an instrument includes a/(#8346)
Docker Images:
quay.io/signalfx/splunk-otel-collector:0.87.0-amd64(digest:sha256:51695b9547b0fe406cfabc7d39b13eb036d09590171aee43b2a98c08a72513bb)quay.io/signalfx/splunk-otel-collector:0.87.0-arm64(digest:sha256:5c08b338e69b9b6543d4e3a65ec51f48daab8bedf8ddc4b60de35b8153e017bd)quay.io/signalfx/splunk-otel-collector:0.87.0-ppc64le(digest:sha256:16f8ed69d676b6572402e34c8cad96ba3665daac9707ff91a056491e49c37f1f)quay.io/signalfx/splunk-otel-collector-windows:0.87.0(digest:sha256:6481bc2fcc7a4acca9afa7d2491f7743f3aad00cd44ac14fe234b7d3f17b0010)quay.io/signalfx/splunk-otel-collector-windows:0.87.0-2022(digest:sha256:6ec469469c6bc40132ebac5f9141e8d310473418b232214a2ba1191438c7d0d5)