mirror of
https://github.com/prometheus/prometheus.git
synced 2024-12-25 05:34:05 -08:00
otlptranslator: Remove unused function TrimPromSuffixes (#15709)
Some checks failed
buf.build / lint and publish (push) Has been cancelled
CI / Go tests (push) Has been cancelled
CI / More Go tests (push) Has been cancelled
CI / Go tests with previous Go version (push) Has been cancelled
CI / UI tests (push) Has been cancelled
CI / Go tests on Windows (push) Has been cancelled
CI / Mixins tests (push) Has been cancelled
CI / Build Prometheus for common architectures (0) (push) Has been cancelled
CI / Build Prometheus for common architectures (1) (push) Has been cancelled
CI / Build Prometheus for common architectures (2) (push) Has been cancelled
CI / Build Prometheus for all architectures (0) (push) Has been cancelled
CI / Build Prometheus for all architectures (1) (push) Has been cancelled
CI / Build Prometheus for all architectures (10) (push) Has been cancelled
CI / Build Prometheus for all architectures (11) (push) Has been cancelled
CI / Build Prometheus for all architectures (2) (push) Has been cancelled
CI / Build Prometheus for all architectures (3) (push) Has been cancelled
CI / Build Prometheus for all architectures (4) (push) Has been cancelled
CI / Build Prometheus for all architectures (5) (push) Has been cancelled
CI / Build Prometheus for all architectures (6) (push) Has been cancelled
CI / Build Prometheus for all architectures (7) (push) Has been cancelled
CI / Build Prometheus for all architectures (8) (push) Has been cancelled
CI / Build Prometheus for all architectures (9) (push) Has been cancelled
CI / Check generated parser (push) Has been cancelled
CI / golangci-lint (push) Has been cancelled
CI / fuzzing (push) Has been cancelled
CI / codeql (push) Has been cancelled
Scorecards supply-chain security / Scorecards analysis (push) Has been cancelled
CI / Report status of build Prometheus for all architectures (push) Has been cancelled
CI / Publish main branch artifacts (push) Has been cancelled
CI / Publish release artefacts (push) Has been cancelled
CI / Publish UI on npm Registry (push) Has been cancelled
Some checks failed
buf.build / lint and publish (push) Has been cancelled
CI / Go tests (push) Has been cancelled
CI / More Go tests (push) Has been cancelled
CI / Go tests with previous Go version (push) Has been cancelled
CI / UI tests (push) Has been cancelled
CI / Go tests on Windows (push) Has been cancelled
CI / Mixins tests (push) Has been cancelled
CI / Build Prometheus for common architectures (0) (push) Has been cancelled
CI / Build Prometheus for common architectures (1) (push) Has been cancelled
CI / Build Prometheus for common architectures (2) (push) Has been cancelled
CI / Build Prometheus for all architectures (0) (push) Has been cancelled
CI / Build Prometheus for all architectures (1) (push) Has been cancelled
CI / Build Prometheus for all architectures (10) (push) Has been cancelled
CI / Build Prometheus for all architectures (11) (push) Has been cancelled
CI / Build Prometheus for all architectures (2) (push) Has been cancelled
CI / Build Prometheus for all architectures (3) (push) Has been cancelled
CI / Build Prometheus for all architectures (4) (push) Has been cancelled
CI / Build Prometheus for all architectures (5) (push) Has been cancelled
CI / Build Prometheus for all architectures (6) (push) Has been cancelled
CI / Build Prometheus for all architectures (7) (push) Has been cancelled
CI / Build Prometheus for all architectures (8) (push) Has been cancelled
CI / Build Prometheus for all architectures (9) (push) Has been cancelled
CI / Check generated parser (push) Has been cancelled
CI / golangci-lint (push) Has been cancelled
CI / fuzzing (push) Has been cancelled
CI / codeql (push) Has been cancelled
Scorecards supply-chain security / Scorecards analysis (push) Has been cancelled
CI / Report status of build Prometheus for all architectures (push) Has been cancelled
CI / Publish main branch artifacts (push) Has been cancelled
CI / Publish release artefacts (push) Has been cancelled
CI / Publish UI on npm Registry (push) Has been cancelled
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
This commit is contained in:
parent
7b03796d0f
commit
5e7f804eeb
|
@ -223,66 +223,6 @@ func normalizeName(metric pmetric.Metric, namespace string, allowUTF8 bool) stri
|
||||||
return normalizedName
|
return normalizedName
|
||||||
}
|
}
|
||||||
|
|
||||||
// TrimPromSuffixes trims type and unit prometheus suffixes from a metric name.
|
|
||||||
// Following the [OpenTelemetry specs] for converting Prometheus Metric points to OTLP.
|
|
||||||
//
|
|
||||||
// [OpenTelemetry specs]: https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/data-model.md#metric-metadata
|
|
||||||
func TrimPromSuffixes(promName string, metricType pmetric.MetricType, unit string) string {
|
|
||||||
nameTokens := strings.Split(promName, "_")
|
|
||||||
if len(nameTokens) == 1 {
|
|
||||||
return promName
|
|
||||||
}
|
|
||||||
|
|
||||||
nameTokens = removeTypeSuffixes(nameTokens, metricType)
|
|
||||||
nameTokens = removeUnitSuffixes(nameTokens, unit)
|
|
||||||
|
|
||||||
return strings.Join(nameTokens, "_")
|
|
||||||
}
|
|
||||||
|
|
||||||
func removeTypeSuffixes(tokens []string, metricType pmetric.MetricType) []string {
|
|
||||||
switch metricType {
|
|
||||||
case pmetric.MetricTypeSum:
|
|
||||||
// Only counters are expected to have a type suffix at this point.
|
|
||||||
// for other types, suffixes are removed during scrape.
|
|
||||||
return removeSuffix(tokens, "total")
|
|
||||||
default:
|
|
||||||
return tokens
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func removeUnitSuffixes(nameTokens []string, unit string) []string {
|
|
||||||
l := len(nameTokens)
|
|
||||||
unitTokens := strings.Split(unit, "_")
|
|
||||||
lu := len(unitTokens)
|
|
||||||
|
|
||||||
if lu == 0 || l <= lu {
|
|
||||||
return nameTokens
|
|
||||||
}
|
|
||||||
|
|
||||||
suffixed := true
|
|
||||||
for i := range unitTokens {
|
|
||||||
if nameTokens[l-i-1] != unitTokens[lu-i-1] {
|
|
||||||
suffixed = false
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if suffixed {
|
|
||||||
return nameTokens[:l-lu]
|
|
||||||
}
|
|
||||||
|
|
||||||
return nameTokens
|
|
||||||
}
|
|
||||||
|
|
||||||
func removeSuffix(tokens []string, suffix string) []string {
|
|
||||||
l := len(tokens)
|
|
||||||
if tokens[l-1] == suffix {
|
|
||||||
return tokens[:l-1]
|
|
||||||
}
|
|
||||||
|
|
||||||
return tokens
|
|
||||||
}
|
|
||||||
|
|
||||||
// cleanUpUnit cleans up unit so it matches model.LabelNameRE.
|
// cleanUpUnit cleans up unit so it matches model.LabelNameRE.
|
||||||
func cleanUpUnit(unit string) string {
|
func cleanUpUnit(unit string) string {
|
||||||
// Multiple consecutive underscores are replaced with a single underscore.
|
// Multiple consecutive underscores are replaced with a single underscore.
|
||||||
|
|
|
@ -19,9 +19,7 @@ package prometheus
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
"go.opentelemetry.io/collector/pdata/pmetric"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestByte(t *testing.T) {
|
func TestByte(t *testing.T) {
|
||||||
|
@ -140,36 +138,6 @@ func TestOTelReceivers(t *testing.T) {
|
||||||
require.Equal(t, "redis_latest_fork_microseconds", normalizeName(createGauge("redis.latest_fork", "us"), "", false))
|
require.Equal(t, "redis_latest_fork_microseconds", normalizeName(createGauge("redis.latest_fork", "us"), "", false))
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestTrimPromSuffixes(t *testing.T) {
|
|
||||||
assert.Equal(t, "active_directory_ds_replication_network_io", TrimPromSuffixes("active_directory_ds_replication_network_io_bytes_total", pmetric.MetricTypeSum, "bytes"))
|
|
||||||
assert.Equal(t, "active_directory_ds_name_cache_hit_rate", TrimPromSuffixes("active_directory_ds_name_cache_hit_rate_percent", pmetric.MetricTypeGauge, "percent"))
|
|
||||||
assert.Equal(t, "active_directory_ds_ldap_bind_last_successful_time", TrimPromSuffixes("active_directory_ds_ldap_bind_last_successful_time_milliseconds", pmetric.MetricTypeGauge, "milliseconds"))
|
|
||||||
assert.Equal(t, "apache_requests", TrimPromSuffixes("apache_requests_total", pmetric.MetricTypeSum, "1"))
|
|
||||||
assert.Equal(t, "system_cpu_utilization", TrimPromSuffixes("system_cpu_utilization_ratio", pmetric.MetricTypeGauge, "ratio"))
|
|
||||||
assert.Equal(t, "mongodbatlas_process_journaling_data_files", TrimPromSuffixes("mongodbatlas_process_journaling_data_files_mebibytes", pmetric.MetricTypeGauge, "mebibytes"))
|
|
||||||
assert.Equal(t, "mongodbatlas_process_network_io", TrimPromSuffixes("mongodbatlas_process_network_io_bytes_per_second", pmetric.MetricTypeGauge, "bytes_per_second"))
|
|
||||||
assert.Equal(t, "mongodbatlas_process_oplog_rate", TrimPromSuffixes("mongodbatlas_process_oplog_rate_gibibytes_per_hour", pmetric.MetricTypeGauge, "gibibytes_per_hour"))
|
|
||||||
assert.Equal(t, "nsxt_node_memory_usage", TrimPromSuffixes("nsxt_node_memory_usage_kilobytes", pmetric.MetricTypeGauge, "kilobytes"))
|
|
||||||
assert.Equal(t, "redis_latest_fork", TrimPromSuffixes("redis_latest_fork_microseconds", pmetric.MetricTypeGauge, "microseconds"))
|
|
||||||
assert.Equal(t, "up", TrimPromSuffixes("up", pmetric.MetricTypeGauge, ""))
|
|
||||||
|
|
||||||
// These are not necessarily valid OM units, only tested for the sake of completeness.
|
|
||||||
assert.Equal(t, "active_directory_ds_replication_sync_object_pending", TrimPromSuffixes("active_directory_ds_replication_sync_object_pending_total", pmetric.MetricTypeSum, "{objects}"))
|
|
||||||
assert.Equal(t, "apache_current", TrimPromSuffixes("apache_current_connections", pmetric.MetricTypeGauge, "connections"))
|
|
||||||
assert.Equal(t, "bigip_virtual_server_request_count", TrimPromSuffixes("bigip_virtual_server_request_count_total", pmetric.MetricTypeSum, "{requests}"))
|
|
||||||
assert.Equal(t, "mongodbatlas_process_db_query_targeting_scanned_per_returned", TrimPromSuffixes("mongodbatlas_process_db_query_targeting_scanned_per_returned", pmetric.MetricTypeGauge, "{scanned}/{returned}"))
|
|
||||||
assert.Equal(t, "nginx_connections_accepted", TrimPromSuffixes("nginx_connections_accepted", pmetric.MetricTypeGauge, "connections"))
|
|
||||||
assert.Equal(t, "apache_workers", TrimPromSuffixes("apache_workers_connections", pmetric.MetricTypeGauge, "connections"))
|
|
||||||
assert.Equal(t, "nginx", TrimPromSuffixes("nginx_requests", pmetric.MetricTypeGauge, "requests"))
|
|
||||||
|
|
||||||
// Units shouldn't be trimmed if the unit is not a direct match with the suffix, i.e, a suffix "_seconds" shouldn't be removed if unit is "sec" or "s"
|
|
||||||
assert.Equal(t, "system_cpu_load_average_15m_ratio", TrimPromSuffixes("system_cpu_load_average_15m_ratio", pmetric.MetricTypeGauge, "1"))
|
|
||||||
assert.Equal(t, "mongodbatlas_process_asserts_per_second", TrimPromSuffixes("mongodbatlas_process_asserts_per_second", pmetric.MetricTypeGauge, "{assertions}/s"))
|
|
||||||
assert.Equal(t, "memcached_operation_hit_ratio_percent", TrimPromSuffixes("memcached_operation_hit_ratio_percent", pmetric.MetricTypeGauge, "%"))
|
|
||||||
assert.Equal(t, "active_directory_ds_replication_object_rate_per_second", TrimPromSuffixes("active_directory_ds_replication_object_rate_per_second", pmetric.MetricTypeGauge, "{objects}/s"))
|
|
||||||
assert.Equal(t, "system_disk_operation_time_seconds", TrimPromSuffixes("system_disk_operation_time_seconds_total", pmetric.MetricTypeSum, "s"))
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestNamespace(t *testing.T) {
|
func TestNamespace(t *testing.T) {
|
||||||
require.Equal(t, "space_test", normalizeName(createGauge("test", ""), "space", false))
|
require.Equal(t, "space_test", normalizeName(createGauge("test", ""), "space", false))
|
||||||
require.Equal(t, "space_test", normalizeName(createGauge("#test", ""), "space", false))
|
require.Equal(t, "space_test", normalizeName(createGauge("#test", ""), "space", false))
|
||||||
|
|
Loading…
Reference in a new issue