Skip to content

Commit d9bb6e4

Browse files
committed
MON-4386: Introduce telemetry profile
This profile only caters to metrics that telemetry rules rely upon. Signed-off-by: Pranshu Srivastava <[email protected]>
1 parent fb823ba commit d9bb6e4

File tree

8 files changed

+250
-9
lines changed

8 files changed

+250
-9
lines changed
Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
apiVersion: monitoring.coreos.com/v1
2+
kind: ServiceMonitor
3+
metadata:
4+
labels:
5+
app.kubernetes.io/component: kubernetes
6+
app.kubernetes.io/managed-by: cluster-monitoring-operator
7+
app.kubernetes.io/name: kubelet
8+
app.kubernetes.io/part-of: openshift-monitoring
9+
k8s-app: kubelet
10+
monitoring.openshift.io/collection-profile: telemetry
11+
name: kubelet-telemetry
12+
namespace: openshift-monitoring
13+
spec:
14+
attachMetadata:
15+
node: true
16+
endpoints:
17+
- bearerTokenFile: ""
18+
honorLabels: true
19+
interval: 30s
20+
metricRelabelings:
21+
- action: keep
22+
regex: ()
23+
sourceLabels:
24+
- __name__
25+
port: https-metrics
26+
relabelings:
27+
- action: replace
28+
sourceLabels:
29+
- __metrics_path__
30+
targetLabel: metrics_path
31+
scheme: https
32+
scrapeTimeout: 30s
33+
tlsConfig:
34+
caFile: /etc/prometheus/configmaps/kubelet-serving-ca-bundle/ca-bundle.crt
35+
insecureSkipVerify: false
36+
- bearerTokenFile: ""
37+
honorLabels: true
38+
honorTimestamps: true
39+
interval: 30s
40+
metricRelabelings:
41+
- action: labeldrop
42+
regex: __tmp_keep_metric
43+
- action: keep
44+
regex: ()
45+
sourceLabels:
46+
- __name__
47+
path: /metrics/cadvisor
48+
port: https-metrics
49+
relabelings:
50+
- action: replace
51+
sourceLabels:
52+
- __metrics_path__
53+
targetLabel: metrics_path
54+
scheme: https
55+
scrapeTimeout: 30s
56+
tlsConfig:
57+
caFile: /etc/prometheus/configmaps/kubelet-serving-ca-bundle/ca-bundle.crt
58+
insecureSkipVerify: false
59+
trackTimestampsStaleness: true
60+
- bearerTokenFile: ""
61+
honorLabels: true
62+
interval: 30s
63+
metricRelabelings:
64+
- action: keep
65+
regex: ()
66+
sourceLabels:
67+
- __name__
68+
path: /metrics/probes
69+
port: https-metrics
70+
relabelings:
71+
- action: replace
72+
sourceLabels:
73+
- __metrics_path__
74+
targetLabel: metrics_path
75+
scheme: https
76+
scrapeTimeout: 30s
77+
tlsConfig:
78+
caFile: /etc/prometheus/configmaps/kubelet-serving-ca-bundle/ca-bundle.crt
79+
insecureSkipVerify: false
80+
- bearerTokenFile: ""
81+
interval: 30s
82+
metricRelabelings:
83+
- action: keep
84+
regex: ()
85+
sourceLabels:
86+
- __name__
87+
port: https-metrics
88+
relabelings:
89+
- action: keep
90+
regex: (linux|)
91+
sourceLabels:
92+
- __meta_kubernetes_node_label_kubernetes_io_os
93+
- action: replace
94+
regex: (.+)(?::\d+)
95+
replacement: $1:9637
96+
sourceLabels:
97+
- __address__
98+
targetLabel: __address__
99+
- action: replace
100+
replacement: crio
101+
sourceLabels:
102+
- endpoint
103+
targetLabel: endpoint
104+
- action: replace
105+
replacement: crio
106+
targetLabel: job
107+
scheme: https
108+
tlsConfig:
109+
caFile: /etc/prometheus/configmaps/kubelet-serving-ca-bundle/ca-bundle.crt
110+
insecureSkipVerify: false
111+
jobLabel: k8s-app
112+
namespaceSelector:
113+
matchNames:
114+
- kube-system
115+
scrapeClass: tls-client-certificate-auth
116+
selector:
117+
matchLabels:
118+
k8s-app: kubelet
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
apiVersion: monitoring.coreos.com/v1
2+
kind: ServiceMonitor
3+
metadata:
4+
labels:
5+
app.kubernetes.io/component: exporter
6+
app.kubernetes.io/managed-by: cluster-monitoring-operator
7+
app.kubernetes.io/name: kube-state-metrics
8+
app.kubernetes.io/part-of: openshift-monitoring
9+
app.kubernetes.io/version: 2.17.0
10+
monitoring.openshift.io/collection-profile: telemetry
11+
name: kube-state-metrics-telemetry
12+
namespace: openshift-monitoring
13+
spec:
14+
endpoints:
15+
- bearerTokenFile: ""
16+
honorLabels: true
17+
interval: 1m
18+
metricRelabelings:
19+
- action: labeldrop
20+
regex: instance
21+
- action: keep
22+
regex: ()
23+
sourceLabels:
24+
- __name__
25+
port: https-main
26+
relabelings:
27+
- action: labeldrop
28+
regex: pod
29+
scheme: https
30+
scrapeTimeout: 1m
31+
tlsConfig:
32+
insecureSkipVerify: false
33+
serverName: kube-state-metrics.openshift-monitoring.svc
34+
- bearerTokenFile: ""
35+
interval: 1m
36+
metricRelabelings:
37+
- action: keep
38+
regex: ()
39+
sourceLabels:
40+
- __name__
41+
port: https-self
42+
scheme: https
43+
scrapeTimeout: 1m
44+
tlsConfig:
45+
insecureSkipVerify: false
46+
serverName: kube-state-metrics.openshift-monitoring.svc
47+
jobLabel: app.kubernetes.io/name
48+
scrapeClass: tls-client-certificate-auth
49+
selector:
50+
matchLabels:
51+
app.kubernetes.io/component: exporter
52+
app.kubernetes.io/name: kube-state-metrics
53+
app.kubernetes.io/part-of: openshift-monitoring
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
apiVersion: monitoring.coreos.com/v1
2+
kind: ServiceMonitor
3+
metadata:
4+
labels:
5+
app.kubernetes.io/component: exporter
6+
app.kubernetes.io/managed-by: cluster-monitoring-operator
7+
app.kubernetes.io/name: node-exporter
8+
app.kubernetes.io/part-of: openshift-monitoring
9+
app.kubernetes.io/version: 1.9.1
10+
monitoring.openshift.io/collection-profile: telemetry
11+
name: node-exporter-telemetry
12+
namespace: openshift-monitoring
13+
spec:
14+
endpoints:
15+
- bearerTokenFile: ""
16+
interval: 15s
17+
metricRelabelings:
18+
- action: replace
19+
regex: (node_mountstats_nfs_read_bytes_total|node_mountstats_nfs_write_bytes_total|node_mountstats_nfs_operations_requests_total)
20+
replacement: "true"
21+
sourceLabels:
22+
- __name__
23+
targetLabel: __tmp_keep
24+
- action: labeldrop
25+
regex: __tmp_keep
26+
- action: keep
27+
regex: ()
28+
sourceLabels:
29+
- __name__
30+
port: https
31+
relabelings:
32+
- action: replace
33+
regex: (.*)
34+
replacement: $1
35+
sourceLabels:
36+
- __meta_kubernetes_pod_node_name
37+
targetLabel: instance
38+
scheme: https
39+
tlsConfig:
40+
insecureSkipVerify: false
41+
serverName: node-expo.openshift-monitoring.svc
42+
jobLabel: app.kubernetes.io/name
43+
scrapeClass: tls-client-certificate-auth
44+
selector:
45+
matchLabels:
46+
app.kubernetes.io/component: exporter
47+
app.kubernetes.io/name: node-exporter
48+
app.kubernetes.io/part-of: openshift-monitoring

jsonnet/components/control-plane.libsonnet

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,11 @@ function(params)
167167
])
168168
),
169169

170+
telemetryServiceMonitorKubelet: generateServiceMonitor.telemetry(
171+
self.serviceMonitorKubelet, std.join('|', [])
172+
),
173+
174+
170175
// This avoids creating service monitors which are already managed by the respective operators.
171176
serviceMonitorApiserver:: {},
172177
serviceMonitorKubeScheduler:: {},

jsonnet/components/kube-state-metrics.libsonnet

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,10 @@ function(params)
170170
])
171171
),
172172

173+
telemetryServiceMonitor: generateServiceMonitor.telemetry(
174+
self.serviceMonitor, std.join('|', [])
175+
),
176+
173177
kubeRbacProxySecret: generateSecret.staticAuthSecret(cfg.namespace, cfg.commonLabels, 'kube-state-metrics-kube-rbac-proxy-config'),
174178

175179
// This removes the upstream addon-resizer and all resource requests and

jsonnet/components/node-exporter.libsonnet

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,10 @@ function(params)
223223
])
224224
),
225225

226+
telemetryServiceMonitor: generateServiceMonitor.telemetry(
227+
self.serviceMonitor, std.join('|', [])
228+
),
229+
226230
securityContextConstraints: {
227231
allowHostDirVolumePlugin: true,
228232
allowHostNetwork: true,

jsonnet/utils/generate-service-monitors.libsonnet

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,16 @@
22
local minimalLabel = {
33
'monitoring.openshift.io/collection-profile': 'minimal',
44
},
5-
// 1. Add the prefix minimal to the ServiceMonitor name
6-
// 2. Add the minimal label "monitoring.openshift.io/collection-profile: minimal"
5+
local telemetryLabel = {
6+
'monitoring.openshift.io/collection-profile': 'telemetry',
7+
},
8+
// 1. Add the profile prefix to the ServiceMonitor name
9+
// 2. Add the profile label "monitoring.openshift.io/collection-profile: <profile>"
710
// 3. Add a metricRelabelings with action keep and regex equal to metrics
8-
local minimal(sm, metrics) = sm {
11+
local run(sm, metrics, label) = sm {
912
metadata+: {
10-
name+: '-minimal',
11-
labels+: minimalLabel,
13+
name+: '-' + label['monitoring.openshift.io/collection-profile'],
14+
labels+: label,
1215
},
1316
spec+: {
1417
endpoints: std.map(
@@ -39,5 +42,6 @@
3942
},
4043
},
4144

42-
minimal(sm, metrics): minimal(removeDrop(sm), metrics),
45+
minimal(sm, metrics): run(removeDrop(sm), metrics, minimalLabel),
46+
telemetry(sm, metrics): run(removeDrop(sm), metrics, telemetryLabel),
4347
}

pkg/manifests/types.go

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,16 @@ type CollectionProfiles []CollectionProfile
2424
type ExternalLabels map[string]string
2525

2626
const (
27-
FullCollectionProfile = "full"
28-
MinimalCollectionProfile = "minimal"
27+
FullCollectionProfile = "full"
28+
MinimalCollectionProfile = "minimal"
29+
TelemetryCollectionProfile = "telemetry"
2930
)
3031

31-
var SupportedCollectionProfiles = CollectionProfiles{FullCollectionProfile, MinimalCollectionProfile}
32+
var SupportedCollectionProfiles = CollectionProfiles{
33+
FullCollectionProfile,
34+
MinimalCollectionProfile,
35+
TelemetryCollectionProfile,
36+
}
3237

3338
// The `ClusterMonitoringConfiguration` resource defines settings that
3439
// customize the default platform monitoring stack through the

0 commit comments

Comments
 (0)