Skip to content

Commit 1c1e762

Browse files
committed
Move Pyrra from addon to core component with SLOs
- Move pyrra.libsonnet from addons to core components - Update to Pyrra v0.8.4 from upstream jsonnet - Add SLOs for various Kubernetes components: - API server (read/write errors and latency) - Kubelet (request and runtime errors) - CoreDNS (response errors and latency) - Prometheus Operator (reconcile and HTTP errors) - Prometheus (rule evaluation, SD, query, and notification errors) - Kube Controller Manager and Kube Proxy (request errors) - Enable generic rules for Pyrra by default - Update manifests and documentation accordingly
1 parent 03cb9b9 commit 1c1e762

File tree

47 files changed

+1377
-654
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+1377
-654
lines changed

docs/customizations/developing-prometheus-rules-and-grafana-dashboards.md

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ local kp =
3131
// (import 'kube-prometheus/addons/static-etcd.libsonnet') +
3232
// (import 'kube-prometheus/addons/custom-metrics.libsonnet') +
3333
// (import 'kube-prometheus/addons/external-metrics.libsonnet') +
34-
// (import 'kube-prometheus/addons/pyrra.libsonnet') +
3534
{
3635
values+:: {
3736
common+: {
@@ -43,17 +42,26 @@ local kp =
4342
{ 'setup/0namespace-namespace': kp.kubePrometheus.namespace } +
4443
{
4544
['setup/prometheus-operator-' + name]: kp.prometheusOperator[name]
46-
for name in std.filter((function(name) name != 'serviceMonitor' && name != 'prometheusRule'), std.objectFields(kp.prometheusOperator))
45+
for name in std.filter(
46+
(function(name)
47+
name != 'serviceMonitor' &&
48+
name != 'prometheusRule' &&
49+
name != 'sloHTTPErrors' &&
50+
name != 'sloReconcileErrors'),
51+
std.objectFields(kp.prometheusOperator)
52+
)
4753
} +
48-
// { 'setup/pyrra-slo-CustomResourceDefinition': kp.pyrra.crd } +
54+
{ 'setup/pyrra-slo-CustomResourceDefinition': kp.pyrra.crd } +
4955
// serviceMonitor and prometheusRule are separated so that they can be created after the CRDs are ready
5056
{ 'prometheus-operator-serviceMonitor': kp.prometheusOperator.serviceMonitor } +
5157
{ 'prometheus-operator-prometheusRule': kp.prometheusOperator.prometheusRule } +
58+
{ 'prometheus-operator-sloHTTPErrors': kp.prometheusOperator.sloHTTPErrors } +
59+
{ 'prometheus-operator-sloReconcileErrors': kp.prometheusOperator.sloReconcileErrors } +
5260
{ 'kube-prometheus-prometheusRule': kp.kubePrometheus.prometheusRule } +
5361
{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +
5462
{ ['blackbox-exporter-' + name]: kp.blackboxExporter[name] for name in std.objectFields(kp.blackboxExporter) } +
5563
{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } +
56-
// { ['pyrra-' + name]: kp.pyrra[name] for name in std.objectFields(kp.pyrra) if name != 'crd' } +
64+
{ ['pyrra-' + name]: kp.pyrra[name] for name in std.objectFields(kp.pyrra) if name != 'crd' } +
5765
{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +
5866
{ ['kubernetes-' + name]: kp.kubernetesControlPlane[name] for name in std.objectFields(kp.kubernetesControlPlane) }
5967
{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +

docs/customizing.md

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,6 @@ local kp =
5151
// (import 'kube-prometheus/addons/static-etcd.libsonnet') +
5252
// (import 'kube-prometheus/addons/custom-metrics.libsonnet') +
5353
// (import 'kube-prometheus/addons/external-metrics.libsonnet') +
54-
// (import 'kube-prometheus/addons/pyrra.libsonnet') +
5554
{
5655
values+:: {
5756
common+: {
@@ -63,17 +62,26 @@ local kp =
6362
{ 'setup/0namespace-namespace': kp.kubePrometheus.namespace } +
6463
{
6564
['setup/prometheus-operator-' + name]: kp.prometheusOperator[name]
66-
for name in std.filter((function(name) name != 'serviceMonitor' && name != 'prometheusRule'), std.objectFields(kp.prometheusOperator))
65+
for name in std.filter(
66+
(function(name)
67+
name != 'serviceMonitor' &&
68+
name != 'prometheusRule' &&
69+
name != 'sloHTTPErrors' &&
70+
name != 'sloReconcileErrors'),
71+
std.objectFields(kp.prometheusOperator)
72+
)
6773
} +
68-
// { 'setup/pyrra-slo-CustomResourceDefinition': kp.pyrra.crd } +
74+
{ 'setup/pyrra-slo-CustomResourceDefinition': kp.pyrra.crd } +
6975
// serviceMonitor and prometheusRule are separated so that they can be created after the CRDs are ready
7076
{ 'prometheus-operator-serviceMonitor': kp.prometheusOperator.serviceMonitor } +
7177
{ 'prometheus-operator-prometheusRule': kp.prometheusOperator.prometheusRule } +
78+
{ 'prometheus-operator-sloHTTPErrors': kp.prometheusOperator.sloHTTPErrors } +
79+
{ 'prometheus-operator-sloReconcileErrors': kp.prometheusOperator.sloReconcileErrors } +
7280
{ 'kube-prometheus-prometheusRule': kp.kubePrometheus.prometheusRule } +
7381
{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +
7482
{ ['blackbox-exporter-' + name]: kp.blackboxExporter[name] for name in std.objectFields(kp.blackboxExporter) } +
7583
{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } +
76-
// { ['pyrra-' + name]: kp.pyrra[name] for name in std.objectFields(kp.pyrra) if name != 'crd' } +
84+
{ ['pyrra-' + name]: kp.pyrra[name] for name in std.objectFields(kp.pyrra) if name != 'crd' } +
7785
{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +
7886
{ ['kubernetes-' + name]: kp.kubernetesControlPlane[name] for name in std.objectFields(kp.kubernetesControlPlane) }
7987
{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +

example.jsonnet

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ local kp =
77
// (import 'kube-prometheus/addons/static-etcd.libsonnet') +
88
// (import 'kube-prometheus/addons/custom-metrics.libsonnet') +
99
// (import 'kube-prometheus/addons/external-metrics.libsonnet') +
10-
// (import 'kube-prometheus/addons/pyrra.libsonnet') +
1110
{
1211
values+:: {
1312
common+: {
@@ -19,17 +18,26 @@ local kp =
1918
{ 'setup/0namespace-namespace': kp.kubePrometheus.namespace } +
2019
{
2120
['setup/prometheus-operator-' + name]: kp.prometheusOperator[name]
22-
for name in std.filter((function(name) name != 'serviceMonitor' && name != 'prometheusRule'), std.objectFields(kp.prometheusOperator))
21+
for name in std.filter(
22+
(function(name)
23+
name != 'serviceMonitor' &&
24+
name != 'prometheusRule' &&
25+
name != 'sloHTTPErrors' &&
26+
name != 'sloReconcileErrors'),
27+
std.objectFields(kp.prometheusOperator)
28+
)
2329
} +
24-
// { 'setup/pyrra-slo-CustomResourceDefinition': kp.pyrra.crd } +
30+
{ 'setup/pyrra-slo-CustomResourceDefinition': kp.pyrra.crd } +
2531
// serviceMonitor and prometheusRule are separated so that they can be created after the CRDs are ready
2632
{ 'prometheus-operator-serviceMonitor': kp.prometheusOperator.serviceMonitor } +
2733
{ 'prometheus-operator-prometheusRule': kp.prometheusOperator.prometheusRule } +
34+
{ 'prometheus-operator-sloHTTPErrors': kp.prometheusOperator.sloHTTPErrors } +
35+
{ 'prometheus-operator-sloReconcileErrors': kp.prometheusOperator.sloReconcileErrors } +
2836
{ 'kube-prometheus-prometheusRule': kp.kubePrometheus.prometheusRule } +
2937
{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +
3038
{ ['blackbox-exporter-' + name]: kp.blackboxExporter[name] for name in std.objectFields(kp.blackboxExporter) } +
3139
{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } +
32-
// { ['pyrra-' + name]: kp.pyrra[name] for name in std.objectFields(kp.pyrra) if name != 'crd' } +
40+
{ ['pyrra-' + name]: kp.pyrra[name] for name in std.objectFields(kp.pyrra) if name != 'crd' } +
3341
{ ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } +
3442
{ ['kubernetes-' + name]: kp.kubernetesControlPlane[name] for name in std.objectFields(kp.kubernetesControlPlane) }
3543
{ ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } +

0 commit comments

Comments
 (0)