32
32
target_label: job_label
33
33
replacement: kube-state-metrics
34
34
35
- prometheus:
35
+ prometheus/controlplane :
36
36
config:
37
37
scrape_configs:
38
38
- job_name: apiserver
@@ -97,21 +97,36 @@ data:
97
97
metric_statements:
98
98
- context: resource
99
99
statements:
100
- - delete_key(attributes, "k8s.pod.name")
100
+ - delete_key(attributes, "k8s.node.name")
101
+ - delete_key(attributes, "k8s.namespace.name")
101
102
- delete_key(attributes, "k8s.pod.uid")
103
+ - delete_key(attributes, "k8s.pod.name")
102
104
- delete_key(attributes, "k8s.container.name")
103
- - delete_key(attributes, "k8s.namespace.name")
104
- - delete_key(attributes, "k8s.node.name")
105
105
- delete_key(attributes, "k8s.replicaset.name")
106
- - set(attributes["k8s.pod.name"], attributes["pod"])
107
- - set(attributes["k8s.daemonset.name"], attributes["daemonset"])
108
- - set(attributes["k8s.replicaset.name"], attributes["replicaset"])
109
- - set(attributes["k8s.statefulset.name"], attributes["statefulset"])
110
- - set(attributes["k8s.deployment.name"], attributes["deployment"])
106
+ - delete_key(attributes, "k8s.deployment.name")
107
+ - delete_key(attributes, "k8s.statefulset.name")
108
+ - delete_key(attributes, "k8s.daemonset.name")
109
+ - delete_key(attributes, "k8s.job.name")
110
+ - delete_key(attributes, "k8s.cronjob.name")
111
+ - delete_key(attributes, "k8s.replicationcontroller.name")
112
+ - delete_key(attributes, "k8s.hpa.name")
113
+ - delete_key(attributes, "k8s.resourcequota.name")
114
+ - delete_key(attributes, "k8s.volume.name")
115
+ - set(attributes["k8s.uid.uid"], attributes["uid"])
111
116
- set(attributes["k8s.node.name"], attributes["node"])
112
117
- set(attributes["k8s.namespace.name"], attributes["namespace"])
118
+ - set(attributes["k8s.pod.name"], attributes["pod"])
113
119
- set(attributes["k8s.container.name"], attributes["container"])
114
- - set(attributes["k8s.uid.uid"], attributes["uid"])
120
+ - set(attributes["k8s.replicaset.name"], attributes["replicaset"])
121
+ - set(attributes["k8s.deployment.name"], attributes["deployment"])
122
+ - set(attributes["k8s.statefulset.name"], attributes["statefulset"])
123
+ - set(attributes["k8s.daemonset.name"], attributes["daemonset"])
124
+ - set(attributes["k8s.job.name"], attributes["job_name"])
125
+ - set(attributes["k8s.cronjob.name"], attributes["cronjob"])
126
+ - set(attributes["k8s.replicationcontroller.name"], attributes["replicationcontroller"])
127
+ - set(attributes["k8s.hpa.name"], attributes["horizontalpodautoscaler"])
128
+ - set(attributes["k8s.resourcequota.name"], attributes["resourcequota"])
129
+ - set(attributes["k8s.volume.name"], attributes["volumename"])
115
130
116
131
metricstransform/k8s_cluster_info:
117
132
transforms:
@@ -241,7 +256,7 @@ data:
241
256
value_actions:
242
257
- value: 'false'
243
258
new_value: 'true'
244
- - include: kube_pod_container_(resource_(limits|requests)|status_(phase|ready|restarts_total|waiting_reason))
259
+ - include: kube_pod_container_(info| resource_(limits|requests)|status_(phase|ready|restarts_total|waiting_reason))
245
260
action: update
246
261
match_type: regexp
247
262
operations:
@@ -333,30 +348,14 @@ data:
333
348
datapoint:
334
349
- metric.name == "kube_pod_container_status" and value_double == 0.0
335
350
336
- resourcedetection/env:
337
- detectors: ["env", "system"]
338
- override: false
339
- system:
340
- hostname_sources: ["os"]
341
- resource_attributes:
342
- host.id:
343
- enabled: true
344
-
345
351
resourcedetection/cloudproviders:
346
- detectors: [gcp, eks, azure , aks, ec2, ecs ]
352
+ detectors: [gcp, eks, ec2 , aks, azure ]
347
353
timeout: 2s
348
354
override: false
349
- ec2:
350
- resource_attributes:
351
- host.name:
352
- enabled: false
353
355
354
356
resource/metrics:
355
357
attributes:
356
- - key: host.id
357
- from_attribute: host.name
358
- action: upsert
359
- # TODO (chris): Upsert only when cluster name not found (resource detection override: true)
358
+ # We set the cluster name to what the customer specified in the helm chart
360
359
- key: k8s.cluster.name
361
360
action: upsert
362
361
value: {{ include "newrelic.common.cluster" . }}
@@ -408,6 +407,37 @@ data:
408
407
- key: net.host.port
409
408
action: delete
410
409
410
+ resource/remove_duplicate_attributes:
411
+ attributes:
412
+ - key: node
413
+ action: delete
414
+ - key: namespace
415
+ action: delete
416
+ - key: pod
417
+ action: delete
418
+ - key: container
419
+ action: delete
420
+ - key: replicaset
421
+ action: delete
422
+ - key: deployment
423
+ action: delete
424
+ - key: statefulset
425
+ action: delete
426
+ - key: daemonset
427
+ action: delete
428
+ - key: job_name
429
+ action: delete
430
+ - key: cronjob
431
+ action: delete
432
+ - key: replicationcontroller
433
+ action: delete
434
+ - key: horizontalpodautoscaler
435
+ action: delete
436
+ - key: resourcequota
437
+ action: delete
438
+ - key: volumename
439
+ action: delete
440
+
411
441
cumulativetodelta:
412
442
413
443
k8sattributes:
@@ -420,6 +450,7 @@ data:
420
450
- k8s.pod.name
421
451
- k8s.pod.uid
422
452
- k8s.deployment.name
453
+ - k8s.daemonset.name
423
454
- k8s.namespace.name
424
455
- k8s.node.name
425
456
- k8s.pod.start_time
@@ -430,18 +461,48 @@ data:
430
461
431
462
attributes/self:
432
463
actions:
464
+ - key: k8s.node.name
465
+ action: upsert
466
+ from_attribute: node
467
+ - key: k8s.namespace.name
468
+ action: upsert
469
+ from_attribute: namespace
433
470
- key: k8s.pod.name
434
471
action: upsert
435
472
from_attribute: pod
473
+ - key: k8s.container.name
474
+ action: upsert
475
+ from_attribute: container
476
+ - key: k8s.replicaset.name
477
+ action: upsert
478
+ from_attribute: replicaset
436
479
- key: k8s.deployment.name
437
480
action: upsert
438
481
from_attribute: deployment
439
- - key: k8s.node .name
482
+ - key: k8s.statefulset .name
440
483
action: upsert
441
- from_attribute: node
442
- - key: k8s.namespace .name
484
+ from_attribute: statefulset
485
+ - key: k8s.daemonset .name
443
486
action: upsert
444
- from_attribute: namespace
487
+ from_attribute: daemonset
488
+ - key: k8s.job.name
489
+ action: upsert
490
+ from_attribute: job_name
491
+ - key: k8s.cronjob.name
492
+ action: upsert
493
+ from_attribute: cronjob
494
+ - key: k8s.replicationcontroller.name
495
+ action: upsert
496
+ from_attribute: replicationcontroller
497
+ - key: k8s.hpa.name
498
+ action: upsert
499
+ from_attribute: horizontalpodautoscaler
500
+ - key: k8s.resourcequota.name
501
+ action: upsert
502
+ from_attribute: resourcequota
503
+ - key: k8s.volume.name
504
+ action: upsert
505
+ from_attribute: volumename
445
506
446
507
memory_limiter:
447
508
check_interval: 1s
@@ -483,19 +544,19 @@ data:
483
544
- transform/low_data_mode_inator
484
545
- resource/low_data_mode_inator
485
546
{{- end }}
547
+ # - resourcedetection/cloudproviders
486
548
- resource/metrics
487
- - resourcedetection/env
488
- - resourcedetection/cloudproviders
489
- - batch
490
549
- groupbyattrs
491
550
- transform/ksm
551
+ - resource/remove_duplicate_attributes
552
+ - batch
492
553
exporters:
493
554
- otlphttp/newrelic
494
555
{{- end }}
495
556
{{- if .Values.receivers.prometheus.enabled }}
496
557
metrics:
497
558
receivers:
498
- - prometheus
559
+ - prometheus/controlplane
499
560
processors:
500
561
- metricstransform/k8s_cluster_info
501
562
{{- if include "nrKubernetesOtel.lowDataMode" . }}
@@ -507,8 +568,9 @@ data:
507
568
- resource/low_data_mode_inator
508
569
{{- end }}
509
570
- resource/metrics
510
- - k8sattributes
511
571
- attributes/self
572
+ - k8sattributes
573
+ - resource/remove_duplicate_attributes
512
574
- memory_limiter
513
575
- cumulativetodelta
514
576
- batch
0 commit comments