Skip to content

Commit 150d07a

Browse files
committed
enhancement: relax kube_.+_created to allow namespaces
Signed-off-by: Pranshu Srivastava <rexagod@gmail.com>
1 parent 2fe94c3 commit 150d07a

File tree

3 files changed

+72
-22
lines changed

3 files changed

+72
-22
lines changed
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
### Supplying a custom deny-list to Kube State Metrics (KSM)
2+
3+
Users can supply their own custom deny-list that replaces the default one and filters out the specified metrics from being generated by KSM.
4+
5+
The following example shows how to supply a custom deny-list:
6+
7+
```yaml mdox-exec="cat examples/jsonnet-snippets/kube-state-metrics-custom-denylist.jsonnet"
8+
(import 'kube-prometheus/addons/ksm-lite.libsonnet') {
9+
ksmConfig: {
10+
ksmDenyList: [
11+
'^kube_(?=namespace).*_created$',
12+
'^kube_.+_metadata_resource_version$',
13+
'^kube_replicaset_metadata_generation$',
14+
'^kube_replicaset_status_observed_generation$',
15+
'^kube_pod_restart_policy$',
16+
'^kube_pod_init_container_status_terminated$',
17+
'^kube_pod_init_container_status_running$',
18+
'^kube_pod_container_status_terminated$',
19+
'^kube_pod_container_status_running$',
20+
'^kube_pod_completion_time$',
21+
'^kube_pod_status_scheduled$',
22+
],
23+
},
24+
}
25+
```
26+
27+
The example above makes use of a [feature](https://github.com/kubernetes/kube-state-metrics/pull/2616) introduced in the v2.16.0 release of KSM, which allows users to utilize lookarounds within regular expressions. As such, it keeps almost all of the default deny-list, but filters out only the `kube_namespace_created` metric allowing that to be generated.
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
(import 'kube-prometheus/addons/ksm-lite.libsonnet') {
2+
ksmConfig: {
3+
ksmDenyList: [
4+
'^kube_(?=namespace).*_created$',
5+
'^kube_.+_metadata_resource_version$',
6+
'^kube_replicaset_metadata_generation$',
7+
'^kube_replicaset_status_observed_generation$',
8+
'^kube_pod_restart_policy$',
9+
'^kube_pod_init_container_status_terminated$',
10+
'^kube_pod_init_container_status_running$',
11+
'^kube_pod_container_status_terminated$',
12+
'^kube_pod_container_status_running$',
13+
'^kube_pod_completion_time$',
14+
'^kube_pod_status_scheduled$',
15+
],
16+
},
17+
}

jsonnet/kube-prometheus/addons/ksm-lite.libsonnet

Lines changed: 28 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,39 @@
1-
local addArgs(args, name, containers) = std.map(
2-
function(c) if c.name == name then
3-
c {
4-
args+: args,
5-
}
6-
else c,
7-
containers,
8-
);
1+
local addArgs(args, name, containers) =
2+
std.map(
3+
function(c)
4+
if c.name == name then
5+
c {
6+
args+: args,
7+
}
8+
else
9+
c,
10+
containers,
11+
);
912

1013
{
14+
ksmConfig+:: {
15+
ksmDenyList: [
16+
'^kube_.+_created$',
17+
'^kube_.+_metadata_resource_version$',
18+
'^kube_replicaset_metadata_generation$',
19+
'^kube_replicaset_status_observed_generation$',
20+
'^kube_pod_restart_policy$',
21+
'^kube_pod_init_container_status_terminated$',
22+
'^kube_pod_init_container_status_running$',
23+
'^kube_pod_container_status_terminated$',
24+
'^kube_pod_container_status_running$',
25+
'^kube_pod_completion_time$',
26+
'^kube_pod_status_scheduled$',
27+
],
28+
},
29+
1130
kubeStateMetrics+: {
1231
deployment+: {
1332
spec+: {
1433
template+: {
1534
spec+: {
1635
containers: addArgs(
17-
[|||
18-
--metric-denylist=
19-
^kube_.+_created$,
20-
^kube_.+_metadata_resource_version$,
21-
^kube_replicaset_metadata_generation$,
22-
^kube_replicaset_status_observed_generation$,
23-
^kube_pod_restart_policy$,
24-
^kube_pod_init_container_status_terminated$,
25-
^kube_pod_init_container_status_running$,
26-
^kube_pod_container_status_terminated$,
27-
^kube_pod_container_status_running$,
28-
^kube_pod_completion_time$,
29-
^kube_pod_status_scheduled$
30-
|||],
36+
['--metric-denylist=\n' + std.join(',\n', $.ksmConfig.ksmDenyList) + '\n'],
3137
'kube-state-metrics',
3238
super.containers
3339
),

0 commit comments

Comments
 (0)