|
10 | 10 |
|
11 | 11 | # Configuration for transient labels that should be normalized during comparison |
12 | 12 | TRANSIENT_LABEL_PATTERNS = { |
| 13 | + 'GLOBAL': { |
| 14 | + 'otel_scope_version': { |
| 15 | + 'pattern': r'.*', |
| 16 | + 'replacement': 'version' |
| 17 | + }, |
| 18 | + 'k8s_namespace_name': { |
| 19 | + 'pattern': r'.*', |
| 20 | + 'replacement': 'namespace' |
| 21 | + }, |
| 22 | + 'namespace': { |
| 23 | + 'pattern': r'.*', |
| 24 | + 'replacement': 'namespace' |
| 25 | + } |
| 26 | + }, |
13 | 27 | 'kafka': { |
14 | 28 | 'topic': { |
15 | 29 | 'pattern': r'jaeger-spans-\d+', |
@@ -38,8 +52,18 @@ def suppress_transient_labels(metric_name, labels): |
38 | 52 | Dictionary of labels with transient values normalized |
39 | 53 | """ |
40 | 54 | labels_copy = labels.copy() |
| 55 | + |
| 56 | + # Apply global patterns first |
| 57 | + if 'GLOBAL' in TRANSIENT_LABEL_PATTERNS: |
| 58 | + for label_name, pattern_config in TRANSIENT_LABEL_PATTERNS['GLOBAL'].items(): |
| 59 | + if label_name in labels_copy: |
| 60 | + pattern = pattern_config['pattern'] |
| 61 | + replacement = pattern_config['replacement'] |
| 62 | + labels_copy[label_name] = re.sub(pattern, replacement, labels_copy[label_name]) |
41 | 63 |
|
42 | 64 | for service_pattern, label_configs in TRANSIENT_LABEL_PATTERNS.items(): |
| 65 | + if service_pattern == 'GLOBAL': |
| 66 | + continue |
43 | 67 | if service_pattern in metric_name: |
44 | 68 | for label_name, pattern_config in label_configs.items(): |
45 | 69 | if label_name in labels_copy: |
|
0 commit comments