Skip to content

Correct prometheus normalization package bump #3303

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Jun 22, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 14 additions & 6 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,30 @@

## Unreleased

### 🛑 Breaking changes 🛑

- (Contrib) Set `pkg.translator.prometheus.NormalizeName` feature gate back to Alpha state since it was enabled
prematurely. Metrics coming from Prometheus receiver will not be normalized by default, specifically `_total` suffix
will not be removed from metric names. To maintain the current behavior (drop the `_total` suffix), you can enable
the feature gate using the `--feature-gates=pkg.translator.prometheus.NormalizeName` command argument. However, note
that the translation in the prometheus receiver is a subject to possible future changes.
([#23229](https://github.com/open-telemetry/opentelemetry-collector-contrib/pull/23229))

### 💡 Enhancements 💡

- (Splunk) Upgrade builds to use golang 1.20.5 ([#3299](https://github.com/signalfx/splunk-otel-collector/pull/3299))

### 🧰 Bug fixes 🧰

- (Splunk) Correct imported Contrib `pkg/translator/prometheus` dependency for `pkg.translator.prometheus.NormalizeName` Alpha state ([#3303](https://github.com/signalfx/splunk-otel-collector/pull/3303))

## v0.79.0

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

### 🛑 Breaking changes 🛑

- (Contrib) Set `pkg.translator.prometheus.NormalizeName` feature gate back to Alpha state since it was enabled
prematurely. Metrics coming from Prometheus receiver will not be normalized by default, specifically `_total` suffix
will not be removed from metric names. To maintain the current behavior (drop the `_total` suffix), you can enable
the feature gate using the `--feature-gates=pkg.translator.prometheus.NormalizeName` command argument. However, note
that the translation in the prometheus receiver is a subject to possible future changes.
([#23229](https://github.com/open-telemetry/opentelemetry-collector-contrib/pull/23229))
- (Contrib) ~~Set `pkg.translator.prometheus.NormalizeName` feature gate back to Alpha state since it was enabled prematurely.~~ edit: This was an incomplete adoption, addressed in release v0.79.1.
- (Contrib) `attributesprocessor`: Enable SHA-256 as hashing algorithm by default for attributesprocessor hashing action ([#4759](https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/4759))
- (Contrib) `windowseventlogreceiver`: Emit raw Windows events as strings instead of byte arrays ([#22704](https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/22704))
- (Contrib) `pkg/ottl`: Removes `StandardTypeGetter` in favor of `StandardStringGetter`, `StandardIntGetter`, `StandardFloatGetter`, and `StandardPMapGetter`, which handle converting pcommon.Values of the proper type. ([#22763](https://github.com/open-telemetry/opentelemetry-collector-contrib/pull/22763))
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,7 @@ require (
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.79.0 // indirect
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.79.0 // indirect
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza v0.79.0 // indirect
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.79.1-0.20230608182157-47b208f70b15 // indirect
github.com/ovh/go-ovh v1.4.1 // indirect
github.com/panta/machineid v1.0.2 // indirect
github.com/pkg/errors v0.9.1 // indirect
Expand Down Expand Up @@ -391,7 +392,6 @@ require (
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/batchperresourceattr v0.79.0 // indirect
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/experimentalmetricmetadata v0.79.0 // indirect
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/opencensus v0.79.0 // indirect
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.79.0 // indirect
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/signalfx v0.79.0 // indirect
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/zipkin v0.79.0 // indirect
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/winperfcounters v0.79.0 // indirect
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -1183,8 +1183,8 @@ github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/jaeger
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/jaeger v0.79.0/go.mod h1:Zyqr3oq5gK99+nqA6WwHxj1ZnaFj+uj0EFY9BzR9QCU=
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/opencensus v0.79.0 h1:Xazghy2LA9FSYM7LLBizZcSajffhF7l8jV2RY8fG58c=
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/opencensus v0.79.0/go.mod h1:apQSxsBwQSK6jcnShW0ntruGCZ63WcDdhuvdMSO+Qkk=
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.79.0 h1:F6rc6ivh6EoHlaSaWDom7dKN7b5e2Zss5TNi1S2QR8A=
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.79.0/go.mod h1:owoAzfn0tUVguGxqc1s25IrEdiAbon5fZGoUfgAuylQ=
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.79.1-0.20230608182157-47b208f70b15 h1:DyaI27qGYkQNyCbSkSwmXVendixfPjaN4wGe6xc9gyU=
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.79.1-0.20230608182157-47b208f70b15/go.mod h1:owoAzfn0tUVguGxqc1s25IrEdiAbon5fZGoUfgAuylQ=
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheusremotewrite v0.79.0 h1:34ExxmcoJ87OtsQ8SW10sjcajFfE+0Nc/rFBBN0S2KY=
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/signalfx v0.79.0 h1:YPEpjxCh4fkk8NdazKckECUgIc3+33jd5e53qqL+l0o=
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/signalfx v0.79.0/go.mod h1:nv5Tpf4KJrnJKRRW2Ziq5i3FnhJgtKujJNLVgAAhl6Y=
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ prometheus_simple:
status:
metrics:
successful:
- strict: prometheus_tsdb_time_retentions
- strict: prometheus_tsdb_time_retentions_total
first_only: true
log_record:
severity_text: info
Expand Down
66 changes: 66 additions & 0 deletions tests/receivers/prometheus/name_normalization_flag_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
// Copyright Splunk, Inc.
// Copyright The OpenTelemetry Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

//go:build integration

package tests

import (
"path"
"testing"

"github.com/signalfx/splunk-otel-collector/tests/testutils"
)

func TestNameNormalization(t *testing.T) {
tc := testutils.NewTestcase(t)
defer tc.PrintLogsOnFailure()
defer tc.ShutdownOTLPReceiverSink()

_, stop := tc.Containers(
testutils.NewContainer().WithContext(
path.Join(".", "testdata", "httpd"),
).WithName("httpd").WithExposedPorts("8000:80").WillWaitForPorts("80"),
)
defer stop()

for _, args := range []struct {
name string
resourceMetricsFilename string
builder testutils.CollectorBuilder
}{
{"without flag", "non_normalized_httpd.yaml", nil},
{"enabled flag", "normalized_httpd.yaml",
func(collector testutils.Collector) testutils.Collector {
return collector.WithArgs("--feature-gates=+pkg.translator.prometheus.NormalizeName")
},
},
{"disabled flag", "non_normalized_httpd.yaml",
func(collector testutils.Collector) testutils.Collector {
return collector.WithArgs("--feature-gates=-pkg.translator.prometheus.NormalizeName")
},
},
} {
t.Run(args.name, func(tt *testing.T) {
var builders []testutils.CollectorBuilder
if args.builder != nil {
builders = append(builders, args.builder)
}
testutils.AssertAllMetricsReceived(
t, args.resourceMetricsFilename, "httpd_metrics_config.yaml", nil, builders,
)
})
}
}
3 changes: 3 additions & 0 deletions tests/receivers/prometheus/testdata/httpd/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
FROM dragas/thttpd

COPY metrics /var/www/http/
180 changes: 180 additions & 0 deletions tests/receivers/prometheus/testdata/httpd/metrics
Original file line number Diff line number Diff line change
@@ -0,0 +1,180 @@
# HELP process_files_open_files The open file descriptor count
# TYPE process_files_open_files gauge
process_files_open_files 46.0
# HELP jvm_gc_memory_allocated_bytes_total Incremented for an increase in the size of the (young) heap memory pool after one GC to before the next
# TYPE jvm_gc_memory_allocated_bytes_total counter
jvm_gc_memory_allocated_bytes_total 0.0
# HELP worker_pool_completed_total Number of times resources from the pool have been acquired
# TYPE worker_pool_completed_total counter
worker_pool_completed_total{pool_name="vert.x-internal-blocking",pool_type="worker",} 0.0
worker_pool_completed_total{pool_name="vert.x-worker-thread",pool_type="worker",} 0.0
# HELP http_server_active_requests
# TYPE http_server_active_requests gauge
http_server_active_requests 1.0
# HELP jvm_memory_usage_after_gc_percent The percentage of long-lived heap pool used after the last GC event, in the range [0..1]
# TYPE jvm_memory_usage_after_gc_percent gauge
jvm_memory_usage_after_gc_percent{area="heap",pool="long-lived",} 0.0
# HELP jvm_buffer_memory_used_bytes An estimate of the memory that the Java virtual machine is using for this buffer pool
# TYPE jvm_buffer_memory_used_bytes gauge
jvm_buffer_memory_used_bytes{id="mapped - 'non-volatile memory'",} 0.0
jvm_buffer_memory_used_bytes{id="mapped",} 0.0
jvm_buffer_memory_used_bytes{id="direct",} 90144.0
# HELP jvm_threads_started_threads_total The total number of application threads started in the JVM
# TYPE jvm_threads_started_threads_total counter
jvm_threads_started_threads_total 18.0
# HELP worker_pool_usage_seconds Time spent using resources from the pool
# TYPE worker_pool_usage_seconds summary
worker_pool_usage_seconds_count{pool_name="vert.x-internal-blocking",pool_type="worker",} 0.0
worker_pool_usage_seconds_sum{pool_name="vert.x-internal-blocking",pool_type="worker",} 0.0
worker_pool_usage_seconds_count{pool_name="vert.x-worker-thread",pool_type="worker",} 0.0
worker_pool_usage_seconds_sum{pool_name="vert.x-worker-thread",pool_type="worker",} 0.0
# HELP worker_pool_usage_seconds_max Time spent using resources from the pool
# TYPE worker_pool_usage_seconds_max gauge
worker_pool_usage_seconds_max{pool_name="vert.x-internal-blocking",pool_type="worker",} 0.0
worker_pool_usage_seconds_max{pool_name="vert.x-worker-thread",pool_type="worker",} 0.0
# HELP jvm_info_total JVM version info
# TYPE jvm_info_total counter
jvm_info_total{runtime="OpenJDK Runtime Environment",vendor="Debian",version="17.0.6+10-Debian-1deb11u1",} 1.0
# HELP system_load_average_1m The sum of the number of runnable entities queued to available processors and the number of runnable entities running on the available processors averaged over a period of time
# TYPE system_load_average_1m gauge
system_load_average_1m 1.07
# HELP system_cpu_usage The "recent cpu usage" of the system the application is running in
# TYPE system_cpu_usage gauge
system_cpu_usage 0.0
# HELP jvm_threads_live_threads The current number of live threads including both daemon and non-daemon threads
# TYPE jvm_threads_live_threads gauge
jvm_threads_live_threads 17.0
# HELP jvm_gc_live_data_size_bytes Size of long-lived heap memory pool after reclamation
# TYPE jvm_gc_live_data_size_bytes gauge
jvm_gc_live_data_size_bytes 0.0
# HELP http_server_bytes_written_max Number of bytes sent by the server
# TYPE http_server_bytes_written_max gauge
http_server_bytes_written_max 0.0
# HELP http_server_bytes_written Number of bytes sent by the server
# TYPE http_server_bytes_written summary
http_server_bytes_written_count 0.0
http_server_bytes_written_sum 0.0
# HELP jvm_gc_memory_promoted_bytes_total Count of positive increases in the size of the old generation memory pool before GC to after GC
# TYPE jvm_gc_memory_promoted_bytes_total counter
jvm_gc_memory_promoted_bytes_total 0.0
# HELP process_uptime_seconds The uptime of the Java virtual machine
# TYPE process_uptime_seconds gauge
process_uptime_seconds 7.371
# HELP worker_pool_queue_size Number of pending elements in the waiting queue
# TYPE worker_pool_queue_size gauge
worker_pool_queue_size{pool_name="vert.x-internal-blocking",pool_type="worker",} 0.0
worker_pool_queue_size{pool_name="vert.x-worker-thread",pool_type="worker",} 0.0
# HELP jvm_threads_states_threads The current number of threads
# TYPE jvm_threads_states_threads gauge
jvm_threads_states_threads{state="runnable",} 13.0
jvm_threads_states_threads{state="blocked",} 0.0
jvm_threads_states_threads{state="waiting",} 2.0
jvm_threads_states_threads{state="timed-waiting",} 2.0
jvm_threads_states_threads{state="new",} 0.0
jvm_threads_states_threads{state="terminated",} 0.0
# HELP jvm_memory_used_bytes The amount of used memory
# TYPE jvm_memory_used_bytes gauge
jvm_memory_used_bytes{area="nonheap",id="CodeHeap 'profiled nmethods'",} 3640064.0
jvm_memory_used_bytes{area="heap",id="G1 Survivor Space",} 3145728.0
jvm_memory_used_bytes{area="heap",id="G1 Old Gen",} 1417216.0
jvm_memory_used_bytes{area="nonheap",id="Metaspace",} 2.0569456E7
jvm_memory_used_bytes{area="nonheap",id="CodeHeap 'non-nmethods'",} 1265408.0
jvm_memory_used_bytes{area="heap",id="G1 Eden Space",} 2.8311552E7
jvm_memory_used_bytes{area="nonheap",id="Compressed Class Space",} 2565608.0
jvm_memory_used_bytes{area="nonheap",id="CodeHeap 'non-profiled nmethods'",} 719872.0
# HELP jvm_gc_max_data_size_bytes Max size of long-lived heap memory pool
# TYPE jvm_gc_max_data_size_bytes gauge
jvm_gc_max_data_size_bytes 2.078277632E9
# HELP worker_pool_queue_delay_seconds_max Time spent in the waiting queue before being processed
# TYPE worker_pool_queue_delay_seconds_max gauge
worker_pool_queue_delay_seconds_max{pool_name="vert.x-internal-blocking",pool_type="worker",} 0.0
worker_pool_queue_delay_seconds_max{pool_name="vert.x-worker-thread",pool_type="worker",} 0.001963745
# HELP worker_pool_queue_delay_seconds Time spent in the waiting queue before being processed
# TYPE worker_pool_queue_delay_seconds summary
worker_pool_queue_delay_seconds_count{pool_name="vert.x-internal-blocking",pool_type="worker",} 0.0
worker_pool_queue_delay_seconds_sum{pool_name="vert.x-internal-blocking",pool_type="worker",} 0.0
worker_pool_queue_delay_seconds_count{pool_name="vert.x-worker-thread",pool_type="worker",} 1.0
worker_pool_queue_delay_seconds_sum{pool_name="vert.x-worker-thread",pool_type="worker",} 0.001963745
# HELP jvm_gc_overhead_percent An approximation of the percent of CPU time used by GC activities over the last lookback period or since monitoring began, whichever is shorter, in the range [0..1]
# TYPE jvm_gc_overhead_percent gauge
jvm_gc_overhead_percent 0.0
# HELP worker_pool_idle The number of resources from the pool currently used
# TYPE worker_pool_idle gauge
worker_pool_idle{pool_name="vert.x-internal-blocking",pool_type="worker",} 20.0
worker_pool_idle{pool_name="vert.x-worker-thread",pool_type="worker",} 19.0
# HELP system_cpu_count The number of processors available to the Java virtual machine
# TYPE system_cpu_count gauge
system_cpu_count 8.0
# HELP jvm_buffer_count_buffers An estimate of the number of buffers in the pool
# TYPE jvm_buffer_count_buffers gauge
jvm_buffer_count_buffers{id="mapped - 'non-volatile memory'",} 0.0
jvm_buffer_count_buffers{id="mapped",} 0.0
jvm_buffer_count_buffers{id="direct",} 6.0
# HELP jvm_classes_unloaded_classes_total The total number of classes unloaded since the Java virtual machine has started execution
# TYPE jvm_classes_unloaded_classes_total counter
jvm_classes_unloaded_classes_total 0.0
# HELP jvm_memory_max_bytes The maximum amount of memory in bytes that can be used for memory management
# TYPE jvm_memory_max_bytes gauge
jvm_memory_max_bytes{area="nonheap",id="CodeHeap 'profiled nmethods'",} 1.22908672E8
jvm_memory_max_bytes{area="heap",id="G1 Survivor Space",} -1.0
jvm_memory_max_bytes{area="heap",id="G1 Old Gen",} 2.078277632E9
jvm_memory_max_bytes{area="nonheap",id="Metaspace",} -1.0
jvm_memory_max_bytes{area="nonheap",id="CodeHeap 'non-nmethods'",} 5840896.0
jvm_memory_max_bytes{area="heap",id="G1 Eden Space",} -1.0
jvm_memory_max_bytes{area="nonheap",id="Compressed Class Space",} 1.073741824E9
jvm_memory_max_bytes{area="nonheap",id="CodeHeap 'non-profiled nmethods'",} 1.22908672E8
# HELP process_cpu_usage The "recent cpu usage" for the Java Virtual Machine process
# TYPE process_cpu_usage gauge
process_cpu_usage 0.0
# HELP process_files_max_files The maximum file descriptor count
# TYPE process_files_max_files gauge
process_files_max_files 1048576.0
# HELP worker_pool_ratio Pool usage ratio
# TYPE worker_pool_ratio gauge
worker_pool_ratio{pool_name="vert.x-internal-blocking",pool_type="worker",} NaN
worker_pool_ratio{pool_name="vert.x-worker-thread",pool_type="worker",} 0.05
# HELP jvm_classes_loaded_classes The number of classes that are currently loaded in the Java virtual machine
# TYPE jvm_classes_loaded_classes gauge
jvm_classes_loaded_classes 4740.0
# HELP worker_pool_active The number of resources from the pool currently used
# TYPE worker_pool_active gauge
worker_pool_active{pool_name="vert.x-internal-blocking",pool_type="worker",} 0.0
worker_pool_active{pool_name="vert.x-worker-thread",pool_type="worker",} 1.0
# HELP process_start_time_seconds Start time of the process since unix epoch.
# TYPE process_start_time_seconds gauge
process_start_time_seconds 1.687449429164E9
# HELP jvm_threads_peak_threads The peak live thread count since the Java virtual machine started or peak was reset
# TYPE jvm_threads_peak_threads gauge
jvm_threads_peak_threads 17.0
# HELP http_server_bytes_read Number of bytes received by the server
# TYPE http_server_bytes_read summary
http_server_bytes_read_count 0.0
http_server_bytes_read_sum 0.0
# HELP http_server_bytes_read_max Number of bytes received by the server
# TYPE http_server_bytes_read_max gauge
http_server_bytes_read_max 0.0
# HELP http_server_connections_seconds_max The duration of the connections
# TYPE http_server_connections_seconds_max gauge
http_server_connections_seconds_max 0.169527045
# HELP http_server_connections_seconds The duration of the connections
# TYPE http_server_connections_seconds summary
http_server_connections_seconds_active_count 1.0
http_server_connections_seconds_duration_sum 0.169417032
# HELP jvm_memory_committed_bytes The amount of memory in bytes that is committed for the Java virtual machine to use
# TYPE jvm_memory_committed_bytes gauge
jvm_memory_committed_bytes{area="nonheap",id="CodeHeap 'profiled nmethods'",} 3670016.0
jvm_memory_committed_bytes{area="heap",id="G1 Survivor Space",} 3145728.0
jvm_memory_committed_bytes{area="heap",id="G1 Old Gen",} 8.5983232E7
jvm_memory_committed_bytes{area="nonheap",id="Metaspace",} 2.097152E7
jvm_memory_committed_bytes{area="nonheap",id="CodeHeap 'non-nmethods'",} 2555904.0
jvm_memory_committed_bytes{area="heap",id="G1 Eden Space",} 4.2991616E7
jvm_memory_committed_bytes{area="nonheap",id="Compressed Class Space",} 2752512.0
jvm_memory_committed_bytes{area="nonheap",id="CodeHeap 'non-profiled nmethods'",} 2555904.0
# HELP jvm_buffer_total_capacity_bytes An estimate of the total capacity of the buffers in this pool
# TYPE jvm_buffer_total_capacity_bytes gauge
jvm_buffer_total_capacity_bytes{id="mapped - 'non-volatile memory'",} 0.0
jvm_buffer_total_capacity_bytes{id="mapped",} 0.0
jvm_buffer_total_capacity_bytes{id="direct",} 90143.0
# HELP jvm_threads_daemon_threads The current number of live daemon threads
# TYPE jvm_threads_daemon_threads gauge
jvm_threads_daemon_threads 7.0
Loading