diff --git a/CHANGELOG.md b/CHANGELOG.md index 956e0010e7d848bbe3854d75393a0242d1548fdc..5bedfc9890b1ccfe6b32ad391f071b93da7015ac 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,11 @@ +## release-0.15 / 2025-06-04 + +[FEATURE] Add config option for storage to Prometheus and Alertmanager servers[#2651](https://github.com/prometheus-operator/kube-prometheus/pull/2651) +[ENHANCEMENT] Reduce apiserver metric cardinality [#2531](https://github.com/prometheus-operator/kube-prometheus/pull/2531) +[BUGFIX] Fix port allocation for node-exporter [#2627](https://github.com/prometheus-operator/kube-prometheus/pull/2627) +[BUGFIX] Fix procfs location for node-exporter [#2549](https://github.com/prometheus-operator/kube-prometheus/pull/2549) +[BUGFIX] Drop `process_start_time_seconds` from Kubelet slis endpoint [#2530](https://github.com/prometheus-operator/kube-prometheus/pull/2530) + ## release-0.14 / 2024-09-12 * [CHANGE] Prefer new form for `kube_node_status_capacity_pods` metric [#2269](https://github.com/prometheus-operator/kube-prometheus/pull/2269) diff --git a/README.md b/README.md index 511803b1c6dba9867db35ffc59833e36be493386..b4c42ed255cd6d4fb2a5b550edcf230ef1b55c26 100644 --- a/README.md +++ b/README.md @@ -43,11 +43,12 @@ The following Kubernetes versions are supported and work as we test against thes | kube-prometheus stack | Kubernetes 1.23 | Kubernetes 1.24 | Kubernetes 1.25 | Kubernetes 1.26 | Kubernetes 1.27 | Kubernetes 1.28 | Kubernetes 1.29 | Kubernetes 1.30 | Kubernetes 1.31 | Kubernetes 1.32 | Kubernetes 1.33 | |--------------------------------------------------------------------------------------------|-----------------|-----------------|-----------------|-----------------|-----------------|-----------------|-----------------|-----------------|-----------------|-----------------|-----------------| -| [`release-0.11`](https://github.com/prometheus-operator/kube-prometheus/tree/release-0.11) | ✔ | ✔ | ✗ | x | x | x | x | x | x | x | x | | [`release-0.12`](https://github.com/prometheus-operator/kube-prometheus/tree/release-0.12) | ✗ | ✔ | ✔ | x | x | x | x | x | x | x | x | | [`release-0.13`](https://github.com/prometheus-operator/kube-prometheus/tree/release-0.13) | ✗ | ✗ | x | ✔ | ✔ | ✔ | x | x | x | x | x | | [`release-0.14`](https://github.com/prometheus-operator/kube-prometheus/tree/release-0.14) | ✗ | ✗ | x | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | x | x | -| [`main`](https://github.com/prometheus-operator/kube-prometheus/tree/main) | ✗ | ✗ | x | x | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| [`release-0.15`](https://github.com/prometheus-operator/kube-prometheus/tree/release-0.15) | ✗ | ✗ | x | x | x | x | x | x | ✔ | ✔ | ✔ | +| [`main`](https://github.com/prometheus-operator/kube-prometheus/tree/main) | ✗ | ✗ | x | x | x | x | x | x | ✔ | ✔ | ✔ | + ## Quickstart diff --git a/jsonnet/kube-prometheus/jsonnetfile.json b/jsonnet/kube-prometheus/jsonnetfile.json index 0ee53bb0f665542d66234dda3b9b1be8311d16d0..4b76f783a47616f14799c02e137bb6e270bb72da 100644 --- a/jsonnet/kube-prometheus/jsonnetfile.json +++ b/jsonnet/kube-prometheus/jsonnetfile.json @@ -8,7 +8,7 @@ "subdir": "grafana" } }, - "version": "master" + "version": "5698c8940b6dadca3f42107b7839557bc041761f" }, { "source": { @@ -17,7 +17,7 @@ "subdir": "grafana-mixin" } }, - "version": "main", + "version": "release-12.0.1", "name": "grafana-mixin" }, { @@ -27,7 +27,7 @@ "subdir": "contrib/mixin" } }, - "version": "main" + "version": "release-3.6" }, { "source": { @@ -36,7 +36,7 @@ "subdir": "jsonnet/prometheus-operator" } }, - "version": "main" + "version": "release-0.83" }, { "source": { @@ -45,7 +45,7 @@ "subdir": "jsonnet/mixin" } }, - "version": "main", + "version": "release-0.83", "name": "prometheus-operator-mixin" }, { @@ -55,7 +55,7 @@ "subdir": "" } }, - "version": "master" + "version": "56af5da5a4e038a3bd24939161f11d0eb3eeb9c8" }, { "source": { @@ -64,7 +64,7 @@ "subdir": "jsonnet/kube-state-metrics" } }, - "version": "main" + "version": "release-2.15" }, { "source": { @@ -73,7 +73,7 @@ "subdir": "jsonnet/kube-state-metrics-mixin" } }, - "version": "main" + "version": "release-2.15" }, { "source": { @@ -82,7 +82,7 @@ "subdir": "docs/node-mixin" } }, - "version": "master" + "version": "release-1.9" }, { "source": { @@ -91,7 +91,7 @@ "subdir": "documentation/prometheus-mixin" } }, - "version": "main", + "version": "release-3.4", "name": "prometheus" }, { @@ -101,7 +101,7 @@ "subdir": "doc/alertmanager-mixin" } }, - "version": "main", + "version": "0f1a701e9d233211cfd04033150223d404d751a3", "name": "alertmanager" }, { @@ -111,7 +111,7 @@ "subdir": "jsonnet/controller-gen" } }, - "version": "release-0.7", + "version": "release-0.8", "name": "pyrra" }, { @@ -121,7 +121,7 @@ "subdir": "mixin" } }, - "version": "main", + "version": "release-0.38", "name": "thanos-mixin" } ], diff --git a/jsonnetfile.lock.json b/jsonnetfile.lock.json index d3ee35f90c424a424fc3c0286634f2c336618d0d..b53e14d47cfae5e5de8bb219e6c1ef67e0de5e41 100644 --- a/jsonnetfile.lock.json +++ b/jsonnetfile.lock.json @@ -18,7 +18,7 @@ "subdir": "contrib/mixin" } }, - "version": "54ddc02b9410df6915009060ebbd287b87d0c657", + "version": "856c3ddb2576ac90334d044418057f36818555af", "sum": "XmXkOCriQIZmXwlIIFhqlJMa0e6qGWdxZD+ZDYaN0Po=" }, { @@ -28,8 +28,8 @@ "subdir": "grafana-mixin" } }, - "version": "1120f9e255760a3c104b57871fcb91801e934382", - "sum": "MkjR7zCgq6MUZgjDzop574tFKoTX2OBr7DTwm1K+Ofs=" + "version": "577c29d0dca45575394129d1d828d7783274bf50", + "sum": "S8mRTRH4w62kMCa2je3iCtvscYrwQmkyJ7Y/aM14KbE=" }, { "source": { @@ -118,8 +118,8 @@ "subdir": "" } }, - "version": "ddfa651bc295d2b6659bfef7333d154c72c6e376", - "sum": "UcJjOdH+9qJwEgWpp9DDzuBXFN7ri3qqfZRTS+D5uw8=" + "version": "56af5da5a4e038a3bd24939161f11d0eb3eeb9c8", + "sum": "9pr1MHBJ9tXQoomxY1WLBQGC1jEbJZhjdi5O8xuUUSw=" }, { "source": { @@ -128,7 +128,7 @@ "subdir": "jsonnet/kube-state-metrics" } }, - "version": "84e2d8fe697053c185c0ce17f0e22c151d071a46", + "version": "4a585c91beffdbd1378833ce5f102b401e7e57c5", "sum": "3bioG7CfTfY9zeu5xU4yon6Zt3kYvNkyl492nOhQxnM=" }, { @@ -138,7 +138,7 @@ "subdir": "jsonnet/kube-state-metrics-mixin" } }, - "version": "84e2d8fe697053c185c0ce17f0e22c151d071a46", + "version": "4a585c91beffdbd1378833ce5f102b401e7e57c5", "sum": "qclI7LwucTjBef3PkGBkKxF0mfZPbHnn4rlNWKGtR4c=" }, { @@ -169,7 +169,7 @@ "subdir": "doc/alertmanager-mixin" } }, - "version": "0ce3cfb962db3cbb1649d3e816a49a13c4036cd1", + "version": "0f1a701e9d233211cfd04033150223d404d751a3", "sum": "j5prvRrJdoCv7n45l5Uy2ghl1IDb9BBUqjwCDs4ZJoQ=", "name": "alertmanager" }, @@ -180,8 +180,8 @@ "subdir": "docs/node-mixin" } }, - "version": "2a2f16cd28d3ef57e4a9e1c2babca1fcf9c4eed6", - "sum": "NcpQ0Hz0qciUqmOYoAR0X8GUK5pH/QiUXm1aDNgvua0=" + "version": "f2ec547b49af53815038a50265aa2adcd1275959", + "sum": "8dNyJ4vpnKVBbCFN9YLsugp1IjlZjDCwdKMjKi0KTG4=" }, { "source": { @@ -190,7 +190,7 @@ "subdir": "documentation/prometheus-mixin" } }, - "version": "ef430074f394838f5d9bde49dc6e5767ee1588cf", + "version": "aea6503d9bbaad6c5faff3ecf6f1025213356c92", "sum": "2c+wttfee9TwuQJZIkNV7Tekem74Qgc7iZ842P28rNw=", "name": "prometheus" }, @@ -201,8 +201,8 @@ "subdir": "jsonnet/controller-gen" } }, - "version": "d723f4d1a066dd657e9d09c46a158519dda0faa8", - "sum": "cxAPQovFkM16zNB5/94O+sk/n3SETk6ao6Oas2Sa6RE=", + "version": "c20e05e982dd85535726cbd4b03126e50767e6e2", + "sum": "f2dFeYv4O5lUG5OE6trJyvyKiea9BL6E8t8Ij7i+YJc=", "name": "pyrra" }, { @@ -212,7 +212,7 @@ "subdir": "mixin" } }, - "version": "2029c9bee0fd230b9371bfbb0c32df57fcac63ec", + "version": "0439da0dd291735c36bb515c03e9dfa0012c76c9", "sum": "ieCD4eMgGbOlrI8GmckGPHBGQDcLasE1rULYq56W/bs=", "name": "thanos-mixin" }, diff --git a/manifests/grafana-dashboardDefinitions.yaml b/manifests/grafana-dashboardDefinitions.yaml index 593480a22a11e9eaa2241bfc42812d5cfd9f1942..f19adea6462c2bf45f6c3a482e78dc543c9077c6 100644 --- a/manifests/grafana-dashboardDefinitions.yaml +++ b/manifests/grafana-dashboardDefinitions.yaml @@ -3158,7 +3158,6 @@ items: } ], "schemaVersion": 30, - "style": "dark", "tags": [ ], @@ -17385,6 +17384,14 @@ items: "refresh": 2, "sort": 1, "type": "query" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "refresh": 2, + "sort": 1 } ] }, diff --git a/manifests/grafana-prometheusRule.yaml b/manifests/grafana-prometheusRule.yaml index 44729df92f5913002e697763c9c1df664cb1b2d7..e0014f3e60dcb5bf463560839d2798b5a26af57f 100644 --- a/manifests/grafana-prometheusRule.yaml +++ b/manifests/grafana-prometheusRule.yaml @@ -19,8 +19,8 @@ spec: message: '{{ $labels.namespace }}/{{ $labels.job }}/{{ $labels.handler }} is experiencing {{ $value | humanize }}% errors' runbook_url: https://runbooks.prometheus-operator.dev/runbooks/grafana/grafanarequestsfailing expr: | - 100 * namespace_job_handler_statuscode:grafana_http_request_duration_seconds_count:rate5m{handler!~"/api/datasources/proxy/:id.*|/api/ds/query|/api/tsdb/query", status_code=~"5.."} - / ignoring (status_code) + 100 * sum without (status_code) (namespace_job_handler_statuscode:grafana_http_request_duration_seconds_count:rate5m{handler!~"/api/datasources/proxy/:id.*|/api/ds/query|/api/tsdb/query", status_code=~"5.."}) + / sum without (status_code) (namespace_job_handler_statuscode:grafana_http_request_duration_seconds_count:rate5m{handler!~"/api/datasources/proxy/:id.*|/api/ds/query|/api/tsdb/query"}) > 50 for: 5m diff --git a/manifests/kubernetesControlPlane-prometheusRule.yaml b/manifests/kubernetesControlPlane-prometheusRule.yaml index c807b62b96d0af228ffd94b59d94a2d0c2109bcc..c1822dd6246250005347ffcd7faa6edd22692772 100644 --- a/manifests/kubernetesControlPlane-prometheusRule.yaml +++ b/manifests/kubernetesControlPlane-prometheusRule.yaml @@ -1378,9 +1378,26 @@ spec: label_replace( kube_pod_owner{job="kube-state-metrics", owner_kind="ReplicaSet"}, "replicaset", "$1", "owner_name", "(.*)" - ) * on(replicaset, namespace) group_left(owner_name) topk by(replicaset, namespace) ( - 1, max by (replicaset, namespace, owner_name) ( - kube_replicaset_owner{job="kube-state-metrics"} + ) * on (cluster, replicaset, namespace) group_left(owner_name) topk by(cluster, replicaset, namespace) ( + 1, max by (cluster, replicaset, namespace, owner_name) ( + kube_replicaset_owner{job="kube-state-metrics", owner_kind=""} + ) + ), + "workload", "$1", "replicaset", "(.*)" + ) + ) + labels: + workload_type: replicaset + record: namespace_workload_pod:kube_pod_owner:relabel + - expr: | + max by (cluster, namespace, workload, pod) ( + label_replace( + label_replace( + kube_pod_owner{job="kube-state-metrics", owner_kind="ReplicaSet"}, + "replicaset", "$1", "owner_name", "(.*)" + ) * on(replicaset, namespace, cluster) group_left(owner_name) topk by(cluster, replicaset, namespace) ( + 1, max by (cluster, replicaset, namespace, owner_name) ( + kube_replicaset_owner{job="kube-state-metrics", owner_kind="Deployment"} ) ), "workload", "$1", "owner_name", "(.*)" @@ -1403,21 +1420,47 @@ spec: max by (cluster, namespace, workload, pod) ( label_replace( kube_pod_owner{job="kube-state-metrics", owner_kind="StatefulSet"}, - "workload", "$1", "owner_name", "(.*)" - ) + "workload", "$1", "owner_name", "(.*)") ) labels: workload_type: statefulset record: namespace_workload_pod:kube_pod_owner:relabel + - expr: | + group by (cluster, namespace, workload, pod) ( + label_join( + group by (cluster, namespace, job_name, pod, owner_name) ( + label_join( + kube_pod_owner{job="kube-state-metrics", owner_kind="Job"} + , "job_name", "", "owner_name") + ) + * on (cluster, namespace, job_name) group_left() + group by (cluster, namespace, job_name) ( + kube_job_owner{job="kube-state-metrics", owner_kind=~"Pod|"} + ) + , "workload", "", "owner_name") + ) + labels: + workload_type: job + record: namespace_workload_pod:kube_pod_owner:relabel - expr: | max by (cluster, namespace, workload, pod) ( label_replace( - kube_pod_owner{job="kube-state-metrics", owner_kind="Job"}, - "workload", "$1", "owner_name", "(.*)" - ) + kube_pod_owner{job="kube-state-metrics", owner_kind="", owner_name=""}, + "workload", "$1", "pod", "(.+)") ) labels: - workload_type: job + workload_type: barepod + record: namespace_workload_pod:kube_pod_owner:relabel + - expr: | + max by (cluster, namespace, workload, pod) ( + label_replace( + kube_pod_owner{job="kube-state-metrics", owner_kind="Node"}, + "workload", "$1", "pod", "(.+)") + ) + labels: + workload_type: staticpod + record: namespace_workload_pod:kube_pod_owner:relabel + - expr: "group by (cluster, namespace, workload, workload_type, pod) (\n label_join(\n label_join(\n group by (cluster, namespace, job_name, pod) (\n label_join(\n kube_pod_owner{job=\"kube-state-metrics\", owner_kind=\"Job\"}\n , \"job_name\", \"\", \"owner_name\")\n )\n * on (cluster, namespace, job_name) group_left(owner_kind, owner_name)\n group by (cluster, namespace, job_name, owner_kind, owner_name) (\n kube_job_owner{job=\"kube-state-metrics\", owner_kind!=\"Pod\", owner_kind!=\"\"}\n )\n , \"workload\", \"\", \"owner_name\")\n , \"workload_type\", \"\", \"owner_kind\")\n \n OR\n\n label_replace(\n label_replace(\n label_replace(\n kube_pod_owner{job=\"kube-state-metrics\", owner_kind=\"ReplicaSet\"}\n , \"replicaset\", \"$1\", \"owner_name\", \"(.+)\"\n )\n * on(cluster, namespace, replicaset) group_left(owner_kind, owner_name)\n group by (cluster, namespace, replicaset, owner_kind, owner_name) (\n kube_replicaset_owner{job=\"kube-state-metrics\", owner_kind!=\"Deployment\", owner_kind!=\"\"}\n )\n , \"workload\", \"$1\", \"owner_name\", \"(.+)\")\n OR\n label_replace(\n group by (cluster, namespace, pod, owner_name, owner_kind) (\n kube_pod_owner{job=\"kube-state-metrics\", owner_kind!=\"ReplicaSet\", owner_kind!=\"DaemonSet\", owner_kind!=\"StatefulSet\", owner_kind!=\"Job\", owner_kind!=\"Node\", owner_kind!=\"\"}\n )\n , \"workload\", \"$1\", \"owner_name\", \"(.+)\"\n )\n , \"workload_type\", \"$1\", \"owner_kind\", \"(.+)\")\n)\n" record: namespace_workload_pod:kube_pod_owner:relabel - name: kube-scheduler.rules rules: