From c80a82b19a402923749084dbe31be50196a3f521 Mon Sep 17 00:00:00 2001 From: paulfantom Date: Mon, 22 Feb 2021 16:16:43 +0100 Subject: [PATCH 1/5] jsonnet/kube-prometheus: create k8s control plane component * Extract ServiceMonitors related to k8s control plane from prometheus object into separate one * Add kubernetes-mixin to new object Signed-off-by: paulfantom --- .../components/k8s-control-plane.libsonnet | 262 ++++++++++++++++++ .../components/mixin/kubernetes.libsonnet | 49 ---- .../components/prometheus.libsonnet | 213 -------------- jsonnet/kube-prometheus/main.libsonnet | 8 +- 4 files changed, 266 insertions(+), 266 deletions(-) create mode 100644 jsonnet/kube-prometheus/components/k8s-control-plane.libsonnet delete mode 100644 jsonnet/kube-prometheus/components/mixin/kubernetes.libsonnet diff --git a/jsonnet/kube-prometheus/components/k8s-control-plane.libsonnet b/jsonnet/kube-prometheus/components/k8s-control-plane.libsonnet new file mode 100644 index 00000000..dd2282db --- /dev/null +++ b/jsonnet/kube-prometheus/components/k8s-control-plane.libsonnet @@ -0,0 +1,262 @@ +local relabelings = import '../addons/dropping-deprecated-metrics-relabelings.libsonnet'; + +local defaults = { + namespace: error 'must provide namespace', + commonLabels:: { + 'app.kubernetes.io/name': 'kube-prometheus', + 'app.kubernetes.io/part-of': 'kube-prometheus', + }, + mixin: { + ruleLabels: {}, + _config: { + cadvisorSelector: 'job="kubelet", metrics_path="/metrics/cadvisor"', + kubeletSelector: 'job="kubelet", metrics_path="/metrics"', + kubeStateMetricsSelector: 'job="kube-state-metrics"', + nodeExporterSelector: 'job="node-exporter"', + kubeSchedulerSelector: 'job="kube-scheduler"', + kubeControllerManagerSelector: 'job="kube-controller-manager"', + kubeApiserverSelector: 'job="apiserver"', + podLabel: 'pod', + runbookURLPattern: 'https://github.com/prometheus-operator/kube-prometheus/wiki/%s', + diskDeviceSelector: 'device=~"mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|dasd.+"', + hostNetworkInterfaceSelector: 'device!~"veth.+"', + }, + }, +}; + +function(params) { + local k8s = self, + config:: defaults + params, + + mixin:: (import 'github.com/kubernetes-monitoring/kubernetes-mixin/mixin.libsonnet') { + _config+:: k8s.config.mixin._config, + }, + + prometheusRule: { + apiVersion: 'monitoring.coreos.com/v1', + kind: 'PrometheusRule', + metadata: { + labels: k8s.config.commonLabels + k8s.config.mixin.ruleLabels, + name: 'kubernetes-monitoring-rules', + namespace: k8s.config.namespace, + }, + spec: { + local r = if std.objectHasAll(k8s.mixin, 'prometheusRules') then k8s.mixin.prometheusRules.groups else {}, + local a = if std.objectHasAll(k8s.mixin, 'prometheusAlerts') then k8s.mixin.prometheusAlerts.groups else {}, + groups: a + r, + }, + }, + + serviceMonitorKubeScheduler: { + apiVersion: 'monitoring.coreos.com/v1', + kind: 'ServiceMonitor', + metadata: { + name: 'kube-scheduler', + namespace: k8s.config.namespace, + labels: { 'app.kubernetes.io/name': 'kube-scheduler' }, + }, + spec: { + jobLabel: 'app.kubernetes.io/name', + endpoints: [{ + port: 'https-metrics', + interval: '30s', + scheme: 'https', + bearerTokenFile: '/var/run/secrets/kubernetes.io/serviceaccount/token', + tlsConfig: { insecureSkipVerify: true }, + }], + selector: { + matchLabels: { 'app.kubernetes.io/name': 'kube-scheduler' }, + }, + namespaceSelector: { + matchNames: ['kube-system'], + }, + }, + }, + + serviceMonitorKubelet: { + apiVersion: 'monitoring.coreos.com/v1', + kind: 'ServiceMonitor', + metadata: { + name: 'kubelet', + namespace: k8s.config.namespace, + labels: { 'app.kubernetes.io/name': 'kubelet' }, + }, + spec: { + jobLabel: 'app.kubernetes.io/name', + endpoints: [ + { + port: 'https-metrics', + scheme: 'https', + interval: '30s', + honorLabels: true, + tlsConfig: { insecureSkipVerify: true }, + bearerTokenFile: '/var/run/secrets/kubernetes.io/serviceaccount/token', + metricRelabelings: relabelings, + relabelings: [{ + sourceLabels: ['__metrics_path__'], + targetLabel: 'metrics_path', + }], + }, + { + port: 'https-metrics', + scheme: 'https', + path: '/metrics/cadvisor', + interval: '30s', + honorLabels: true, + honorTimestamps: false, + tlsConfig: { + insecureSkipVerify: true, + }, + bearerTokenFile: '/var/run/secrets/kubernetes.io/serviceaccount/token', + relabelings: [{ + sourceLabels: ['__metrics_path__'], + targetLabel: 'metrics_path', + }], + metricRelabelings: [ + // Drop a bunch of metrics which are disabled but still sent, see + // https://github.com/google/cadvisor/issues/1925. + { + sourceLabels: ['__name__'], + regex: 'container_(network_tcp_usage_total|network_udp_usage_total|tasks_state|cpu_load_average_10s)', + action: 'drop', + }, + ], + }, + { + port: 'https-metrics', + scheme: 'https', + path: '/metrics/probes', + interval: '30s', + honorLabels: true, + tlsConfig: { insecureSkipVerify: true }, + bearerTokenFile: '/var/run/secrets/kubernetes.io/serviceaccount/token', + relabelings: [{ + sourceLabels: ['__metrics_path__'], + targetLabel: 'metrics_path', + }], + }, + ], + selector: { + matchLabels: { 'app.kubernetes.io/name': 'kubelet' }, + }, + namespaceSelector: { + matchNames: ['kube-system'], + }, + }, + }, + + serviceMonitorKubeControllerManager: { + apiVersion: 'monitoring.coreos.com/v1', + kind: 'ServiceMonitor', + metadata: { + name: 'kube-controller-manager', + namespace: k8s.config.namespace, + labels: { 'app.kubernetes.io/name': 'kube-controller-manager' }, + }, + spec: { + jobLabel: 'app.kubernetes.io/name', + endpoints: [{ + port: 'https-metrics', + interval: '30s', + scheme: 'https', + bearerTokenFile: '/var/run/secrets/kubernetes.io/serviceaccount/token', + tlsConfig: { + insecureSkipVerify: true, + }, + metricRelabelings: relabelings + [ + { + sourceLabels: ['__name__'], + regex: 'etcd_(debugging|disk|request|server).*', + action: 'drop', + }, + ], + }], + selector: { + matchLabels: { 'app.kubernetes.io/name': 'kube-controller-manager' }, + }, + namespaceSelector: { + matchNames: ['kube-system'], + }, + }, + }, + + serviceMonitorApiserver: { + apiVersion: 'monitoring.coreos.com/v1', + kind: 'ServiceMonitor', + metadata: { + name: 'kube-apiserver', + namespace: k8s.config.namespace, + labels: { 'app.kubernetes.io/name': 'apiserver' }, + }, + spec: { + jobLabel: 'component', + selector: { + matchLabels: { + component: 'apiserver', + provider: 'kubernetes', + }, + }, + namespaceSelector: { + matchNames: ['default'], + }, + endpoints: [{ + port: 'https', + interval: '30s', + scheme: 'https', + tlsConfig: { + caFile: '/var/run/secrets/kubernetes.io/serviceaccount/ca.crt', + serverName: 'kubernetes', + }, + bearerTokenFile: '/var/run/secrets/kubernetes.io/serviceaccount/token', + metricRelabelings: relabelings + [ + { + sourceLabels: ['__name__'], + regex: 'etcd_(debugging|disk|server).*', + action: 'drop', + }, + { + sourceLabels: ['__name__'], + regex: 'apiserver_admission_controller_admission_latencies_seconds_.*', + action: 'drop', + }, + { + sourceLabels: ['__name__'], + regex: 'apiserver_admission_step_admission_latencies_seconds_.*', + action: 'drop', + }, + { + sourceLabels: ['__name__', 'le'], + regex: 'apiserver_request_duration_seconds_bucket;(0.15|0.25|0.3|0.35|0.4|0.45|0.6|0.7|0.8|0.9|1.25|1.5|1.75|2.5|3|3.5|4.5|6|7|8|9|15|25|30|50)', + action: 'drop', + }, + ], + }], + }, + }, + + serviceMonitorCoreDNS: { + apiVersion: 'monitoring.coreos.com/v1', + kind: 'ServiceMonitor', + metadata: { + name: 'coredns', + namespace: k8s.config.namespace, + labels: { 'app.kubernetes.io/name': 'coredns' }, + }, + spec: { + jobLabel: 'app.kubernetes.io/name', + selector: { + matchLabels: { 'app.kubernetes.io/name': 'kube-dns' }, + }, + namespaceSelector: { + matchNames: ['kube-system'], + }, + endpoints: [{ + port: 'metrics', + interval: '15s', + bearerTokenFile: '/var/run/secrets/kubernetes.io/serviceaccount/token', + }], + }, + }, + + +} diff --git a/jsonnet/kube-prometheus/components/mixin/kubernetes.libsonnet b/jsonnet/kube-prometheus/components/mixin/kubernetes.libsonnet deleted file mode 100644 index f9e5791f..00000000 --- a/jsonnet/kube-prometheus/components/mixin/kubernetes.libsonnet +++ /dev/null @@ -1,49 +0,0 @@ -local defaults = { - name: 'kubernetes', - namespace: error 'must provide namespace', - commonLabels:: { - 'app.kubernetes.io/name': 'kube-prometheus', - 'app.kubernetes.io/component': 'exporter', - 'app.kubernetes.io/part-of': 'kube-prometheus', - }, - mixin: { - ruleLabels: {}, - _config: { - cadvisorSelector: 'job="kubelet", metrics_path="/metrics/cadvisor"', - kubeletSelector: 'job="kubelet", metrics_path="/metrics"', - kubeStateMetricsSelector: 'job="kube-state-metrics"', - nodeExporterSelector: 'job="node-exporter"', - kubeSchedulerSelector: 'job="kube-scheduler"', - kubeControllerManagerSelector: 'job="kube-controller-manager"', - kubeApiserverSelector: 'job="apiserver"', - podLabel: 'pod', - runbookURLPattern: 'https://github.com/prometheus-operator/kube-prometheus/wiki/%s', - diskDeviceSelector: 'device=~"mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|dasd.+"', - hostNetworkInterfaceSelector: 'device!~"veth.+"', - }, - }, -}; - -function(params) { - local m = self, - config:: defaults + params, - - mixin:: (import 'github.com/kubernetes-monitoring/kubernetes-mixin/mixin.libsonnet') { - _config+:: m.config.mixin._config, - }, - - prometheusRule: { - apiVersion: 'monitoring.coreos.com/v1', - kind: 'PrometheusRule', - metadata: { - labels: m.config.commonLabels + m.config.mixin.ruleLabels, - name: m.config.name + '-rules', - namespace: m.config.namespace, - }, - spec: { - local r = if std.objectHasAll(m.mixin, 'prometheusRules') then m.mixin.prometheusRules.groups else {}, - local a = if std.objectHasAll(m.mixin, 'prometheusAlerts') then m.mixin.prometheusAlerts.groups else {}, - groups: a + r, - }, - }, -} diff --git a/jsonnet/kube-prometheus/components/prometheus.libsonnet b/jsonnet/kube-prometheus/components/prometheus.libsonnet index 58b8e517..9bbefd47 100644 --- a/jsonnet/kube-prometheus/components/prometheus.libsonnet +++ b/jsonnet/kube-prometheus/components/prometheus.libsonnet @@ -1,5 +1,3 @@ -local relabelings = import '../addons/dropping-deprecated-metrics-relabelings.libsonnet'; - local defaults = { local defaults = self, namespace: error 'must provide namespace', @@ -297,217 +295,6 @@ function(params) { }, }, - serviceMonitorKubeScheduler: { - apiVersion: 'monitoring.coreos.com/v1', - kind: 'ServiceMonitor', - metadata: { - name: 'kube-scheduler', - namespace: p.config.namespace, - labels: { 'app.kubernetes.io/name': 'kube-scheduler' }, - }, - spec: { - jobLabel: 'app.kubernetes.io/name', - endpoints: [{ - port: 'https-metrics', - interval: '30s', - scheme: 'https', - bearerTokenFile: '/var/run/secrets/kubernetes.io/serviceaccount/token', - tlsConfig: { insecureSkipVerify: true }, - }], - selector: { - matchLabels: { 'app.kubernetes.io/name': 'kube-scheduler' }, - }, - namespaceSelector: { - matchNames: ['kube-system'], - }, - }, - }, - - serviceMonitorKubelet: { - apiVersion: 'monitoring.coreos.com/v1', - kind: 'ServiceMonitor', - metadata: { - name: 'kubelet', - namespace: p.config.namespace, - labels: { 'app.kubernetes.io/name': 'kubelet' }, - }, - spec: { - jobLabel: 'app.kubernetes.io/name', - endpoints: [ - { - port: 'https-metrics', - scheme: 'https', - interval: '30s', - honorLabels: true, - tlsConfig: { insecureSkipVerify: true }, - bearerTokenFile: '/var/run/secrets/kubernetes.io/serviceaccount/token', - metricRelabelings: relabelings, - relabelings: [{ - sourceLabels: ['__metrics_path__'], - targetLabel: 'metrics_path', - }], - }, - { - port: 'https-metrics', - scheme: 'https', - path: '/metrics/cadvisor', - interval: '30s', - honorLabels: true, - honorTimestamps: false, - tlsConfig: { - insecureSkipVerify: true, - }, - bearerTokenFile: '/var/run/secrets/kubernetes.io/serviceaccount/token', - relabelings: [{ - sourceLabels: ['__metrics_path__'], - targetLabel: 'metrics_path', - }], - metricRelabelings: [ - // Drop a bunch of metrics which are disabled but still sent, see - // https://github.com/google/cadvisor/issues/1925. - { - sourceLabels: ['__name__'], - regex: 'container_(network_tcp_usage_total|network_udp_usage_total|tasks_state|cpu_load_average_10s)', - action: 'drop', - }, - ], - }, - { - port: 'https-metrics', - scheme: 'https', - path: '/metrics/probes', - interval: '30s', - honorLabels: true, - tlsConfig: { insecureSkipVerify: true }, - bearerTokenFile: '/var/run/secrets/kubernetes.io/serviceaccount/token', - relabelings: [{ - sourceLabels: ['__metrics_path__'], - targetLabel: 'metrics_path', - }], - }, - ], - selector: { - matchLabels: { 'app.kubernetes.io/name': 'kubelet' }, - }, - namespaceSelector: { - matchNames: ['kube-system'], - }, - }, - }, - - serviceMonitorKubeControllerManager: { - apiVersion: 'monitoring.coreos.com/v1', - kind: 'ServiceMonitor', - metadata: { - name: 'kube-controller-manager', - namespace: p.config.namespace, - labels: { 'app.kubernetes.io/name': 'kube-controller-manager' }, - }, - spec: { - jobLabel: 'app.kubernetes.io/name', - endpoints: [{ - port: 'https-metrics', - interval: '30s', - scheme: 'https', - bearerTokenFile: '/var/run/secrets/kubernetes.io/serviceaccount/token', - tlsConfig: { - insecureSkipVerify: true, - }, - metricRelabelings: relabelings + [ - { - sourceLabels: ['__name__'], - regex: 'etcd_(debugging|disk|request|server).*', - action: 'drop', - }, - ], - }], - selector: { - matchLabels: { 'app.kubernetes.io/name': 'kube-controller-manager' }, - }, - namespaceSelector: { - matchNames: ['kube-system'], - }, - }, - }, - - serviceMonitorApiserver: { - apiVersion: 'monitoring.coreos.com/v1', - kind: 'ServiceMonitor', - metadata: { - name: 'kube-apiserver', - namespace: p.config.namespace, - labels: { 'app.kubernetes.io/name': 'apiserver' }, - }, - spec: { - jobLabel: 'component', - selector: { - matchLabels: { - component: 'apiserver', - provider: 'kubernetes', - }, - }, - namespaceSelector: { - matchNames: ['default'], - }, - endpoints: [{ - port: 'https', - interval: '30s', - scheme: 'https', - tlsConfig: { - caFile: '/var/run/secrets/kubernetes.io/serviceaccount/ca.crt', - serverName: 'kubernetes', - }, - bearerTokenFile: '/var/run/secrets/kubernetes.io/serviceaccount/token', - metricRelabelings: relabelings + [ - { - sourceLabels: ['__name__'], - regex: 'etcd_(debugging|disk|server).*', - action: 'drop', - }, - { - sourceLabels: ['__name__'], - regex: 'apiserver_admission_controller_admission_latencies_seconds_.*', - action: 'drop', - }, - { - sourceLabels: ['__name__'], - regex: 'apiserver_admission_step_admission_latencies_seconds_.*', - action: 'drop', - }, - { - sourceLabels: ['__name__', 'le'], - regex: 'apiserver_request_duration_seconds_bucket;(0.15|0.25|0.3|0.35|0.4|0.45|0.6|0.7|0.8|0.9|1.25|1.5|1.75|2.5|3|3.5|4.5|6|7|8|9|15|25|30|50)', - action: 'drop', - }, - ], - }], - }, - }, - - serviceMonitorCoreDNS: { - apiVersion: 'monitoring.coreos.com/v1', - kind: 'ServiceMonitor', - metadata: { - name: 'coredns', - namespace: p.config.namespace, - labels: { 'app.kubernetes.io/name': 'coredns' }, - }, - spec: { - jobLabel: 'app.kubernetes.io/name', - selector: { - matchLabels: { 'app.kubernetes.io/name': 'kube-dns' }, - }, - namespaceSelector: { - matchNames: ['kube-system'], - }, - endpoints: [{ - port: 'metrics', - interval: '15s', - bearerTokenFile: '/var/run/secrets/kubernetes.io/serviceaccount/token', - }], - }, - }, - // Include thanos sidecar Service only if thanos config was passed by user [if std.objectHas(params, 'thanos') && std.length(params.thanos) > 0 then 'serviceThanosSidecar']: { apiVersion: 'v1', diff --git a/jsonnet/kube-prometheus/main.libsonnet b/jsonnet/kube-prometheus/main.libsonnet index bd2a60b3..aa684c8d 100644 --- a/jsonnet/kube-prometheus/main.libsonnet +++ b/jsonnet/kube-prometheus/main.libsonnet @@ -1,9 +1,9 @@ local alertmanager = import './components/alertmanager.libsonnet'; local blackboxExporter = import './components/blackbox-exporter.libsonnet'; local grafana = import './components/grafana.libsonnet'; +local kubernetesControlPlane = import './components/k8s-control-plane.libsonnet'; local kubeStateMetrics = import './components/kube-state-metrics.libsonnet'; local customMixin = import './components/mixin/custom.libsonnet'; -local kubernetesMixin = import './components/mixin/kubernetes.libsonnet'; local nodeExporter = import './components/node-exporter.libsonnet'; local prometheusAdapter = import './components/prometheus-adapter.libsonnet'; local prometheusOperator = import './components/prometheus-operator.libsonnet'; @@ -58,7 +58,7 @@ local prometheus = import './components/prometheus.libsonnet'; image: $.values.common.images.grafana, prometheusName: $.values.prometheus.name, // TODO(paulfantom) This should be done by iterating over all objects and looking for object.mixin.grafanaDashboards - dashboards: $.nodeExporter.mixin.grafanaDashboards + $.prometheus.mixin.grafanaDashboards + $.kubernetesMixin.mixin.grafanaDashboards, + dashboards: $.nodeExporter.mixin.grafanaDashboards + $.prometheus.mixin.grafanaDashboards + $.kubernetesControlPlane.mixin.grafanaDashboards, }, kubeStateMetrics: { namespace: $.values.common.namespace, @@ -96,7 +96,7 @@ local prometheus = import './components/prometheus.libsonnet'; }, mixin+: { ruleLabels: $.values.common.ruleLabels }, }, - kubernetesMixin: { + kubernetesControlPlane: { namespace: $.values.common.namespace, mixin+: { ruleLabels: $.values.common.ruleLabels }, }, @@ -114,7 +114,7 @@ local prometheus = import './components/prometheus.libsonnet'; prometheus: prometheus($.values.prometheus), prometheusAdapter: prometheusAdapter($.values.prometheusAdapter), prometheusOperator: prometheusOperator($.values.prometheusOperator), - kubernetesMixin: kubernetesMixin($.values.kubernetesMixin), + kubernetesControlPlane: kubernetesControlPlane($.values.kubernetesControlPlane), kubePrometheus: customMixin($.values.kubePrometheus) + { namespace: { apiVersion: 'v1', From 57730b757ec526ebeb847f71866e538550a3a450 Mon Sep 17 00:00:00 2001 From: paulfantom Date: Mon, 22 Feb 2021 16:36:39 +0100 Subject: [PATCH 2/5] jsonnet/kube-prometheus/platforms: adapt platform addons to use new k8s-control-plane component --- jsonnet/kube-prometheus/platforms/aws.libsonnet | 2 +- jsonnet/kube-prometheus/platforms/bootkube.libsonnet | 2 +- jsonnet/kube-prometheus/platforms/eks.libsonnet | 2 +- jsonnet/kube-prometheus/platforms/gke.libsonnet | 4 ++-- jsonnet/kube-prometheus/platforms/kops-coredns.libsonnet | 2 +- jsonnet/kube-prometheus/platforms/kops.libsonnet | 2 +- jsonnet/kube-prometheus/platforms/kubeadm.libsonnet | 2 +- jsonnet/kube-prometheus/platforms/kubespray.libsonnet | 2 +- 8 files changed, 9 insertions(+), 9 deletions(-) diff --git a/jsonnet/kube-prometheus/platforms/aws.libsonnet b/jsonnet/kube-prometheus/platforms/aws.libsonnet index 04d67d00..27a61c2b 100644 --- a/jsonnet/kube-prometheus/platforms/aws.libsonnet +++ b/jsonnet/kube-prometheus/platforms/aws.libsonnet @@ -14,7 +14,7 @@ local service(name, namespace, labels, selector, ports) = { }; { - prometheus+: { + kubernetesControlPlane+: { kubeControllerManagerPrometheusDiscoveryService: service( 'kube-controller-manager-prometheus-discovery', 'kube-system', diff --git a/jsonnet/kube-prometheus/platforms/bootkube.libsonnet b/jsonnet/kube-prometheus/platforms/bootkube.libsonnet index 8e73509d..e4651ae9 100644 --- a/jsonnet/kube-prometheus/platforms/bootkube.libsonnet +++ b/jsonnet/kube-prometheus/platforms/bootkube.libsonnet @@ -14,7 +14,7 @@ local service(name, namespace, labels, selector, ports) = { }; { - prometheus+:: { + kubernetesControlPlane+: { kubeControllerManagerPrometheusDiscoveryService: service( 'kube-controller-manager-prometheus-discovery', 'kube-system', diff --git a/jsonnet/kube-prometheus/platforms/eks.libsonnet b/jsonnet/kube-prometheus/platforms/eks.libsonnet index c72e5c8b..815c1234 100644 --- a/jsonnet/kube-prometheus/platforms/eks.libsonnet +++ b/jsonnet/kube-prometheus/platforms/eks.libsonnet @@ -5,7 +5,7 @@ minimumAvailableIPsTime: '10m', }, }, - prometheus+: { + kubernetesControlPlane+: { serviceMonitorCoreDNS+: { spec+: { endpoints: [ diff --git a/jsonnet/kube-prometheus/platforms/gke.libsonnet b/jsonnet/kube-prometheus/platforms/gke.libsonnet index b8b83c28..973eeffb 100644 --- a/jsonnet/kube-prometheus/platforms/gke.libsonnet +++ b/jsonnet/kube-prometheus/platforms/gke.libsonnet @@ -1,6 +1,6 @@ (import '../addons/managed-cluster.libsonnet') + { - _config+:: { - prometheusAdapter+:: { + values+:: { + prometheusAdapter+: { config+: { resourceRules:: null, }, diff --git a/jsonnet/kube-prometheus/platforms/kops-coredns.libsonnet b/jsonnet/kube-prometheus/platforms/kops-coredns.libsonnet index 749e937c..b9688173 100644 --- a/jsonnet/kube-prometheus/platforms/kops-coredns.libsonnet +++ b/jsonnet/kube-prometheus/platforms/kops-coredns.libsonnet @@ -1,5 +1,5 @@ { - prometheus+:: { + kubernetesControlPlane+: { kubeDnsPrometheusDiscoveryService: { apiVersion: 'v1', kind: 'Service', diff --git a/jsonnet/kube-prometheus/platforms/kops.libsonnet b/jsonnet/kube-prometheus/platforms/kops.libsonnet index 54be338e..914ffb02 100644 --- a/jsonnet/kube-prometheus/platforms/kops.libsonnet +++ b/jsonnet/kube-prometheus/platforms/kops.libsonnet @@ -14,7 +14,7 @@ local service(name, namespace, labels, selector, ports) = { }; { - prometheus+:: { + kubernetesControlPlane+: { kubeControllerManagerPrometheusDiscoveryService: service( 'kube-controller-manager-prometheus-discovery', 'kube-system', diff --git a/jsonnet/kube-prometheus/platforms/kubeadm.libsonnet b/jsonnet/kube-prometheus/platforms/kubeadm.libsonnet index 3621c2aa..dec785d9 100644 --- a/jsonnet/kube-prometheus/platforms/kubeadm.libsonnet +++ b/jsonnet/kube-prometheus/platforms/kubeadm.libsonnet @@ -14,7 +14,7 @@ local service(name, namespace, labels, selector, ports) = { }; { - prometheus+: { + kubernetesControlPlane+: { kubeControllerManagerPrometheusDiscoveryService: service( 'kube-controller-manager-prometheus-discovery', 'kube-system', diff --git a/jsonnet/kube-prometheus/platforms/kubespray.libsonnet b/jsonnet/kube-prometheus/platforms/kubespray.libsonnet index f34cab67..3b35e8e1 100644 --- a/jsonnet/kube-prometheus/platforms/kubespray.libsonnet +++ b/jsonnet/kube-prometheus/platforms/kubespray.libsonnet @@ -15,7 +15,7 @@ local service(name, namespace, labels, selector, ports) = { { - prometheus+: { + kubernetesControlPlane+: { kubeControllerManagerPrometheusDiscoveryService: service( 'kube-controller-manager-prometheus-discovery', 'kube-system', From 5d06e286ca0e7bbe11da1a0a81388d3e6adbfb9f Mon Sep 17 00:00:00 2001 From: paulfantom Date: Mon, 22 Feb 2021 16:38:07 +0100 Subject: [PATCH 3/5] examples: adapt examples to use k8s-control-plane component --- example.jsonnet | 2 +- examples/eks-cni-example.jsonnet | 2 +- examples/weave-net-example.jsonnet | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/example.jsonnet b/example.jsonnet index 2568be96..00737df1 100644 --- a/example.jsonnet +++ b/example.jsonnet @@ -29,7 +29,7 @@ local kp = { ['blackbox-exporter-' + name]: kp.blackboxExporter[name] for name in std.objectFields(kp.blackboxExporter) } + { ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } + { ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } + -{ ['kubernetes-' + name]: kp.kubernetesMixin[name] for name in std.objectFields(kp.kubernetesMixin) } +{ ['kubernetes-' + name]: kp.kubernetesControlPlane[name] for name in std.objectFields(kp.kubernetesControlPlane) } { ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } + { ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } + { ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) } diff --git a/examples/eks-cni-example.jsonnet b/examples/eks-cni-example.jsonnet index 77fa5d0b..c92236fe 100644 --- a/examples/eks-cni-example.jsonnet +++ b/examples/eks-cni-example.jsonnet @@ -5,7 +5,7 @@ local kp = (import 'kube-prometheus/main.libsonnet') + namespace: 'monitoring', }, }, - prometheus+: { + kubernetesControlPlane+: { prometheusRuleEksCNI+: { spec+: { groups+: [ diff --git a/examples/weave-net-example.jsonnet b/examples/weave-net-example.jsonnet index a7eca242..eeeb622d 100644 --- a/examples/weave-net-example.jsonnet +++ b/examples/weave-net-example.jsonnet @@ -5,7 +5,7 @@ local kp = (import 'kube-prometheus/main.libsonnet') + namespace: 'monitoring', }, }, - prometheus+: { + kubernetesControlPlane+: { prometheusRuleWeaveNet+: { spec+: { groups: std.map( From bf9a917cfa6974848e233fd78bfe06e164227941 Mon Sep 17 00:00:00 2001 From: paulfantom Date: Mon, 22 Feb 2021 16:38:19 +0100 Subject: [PATCH 4/5] examples: adapt examples to stop modifying prometheus object when it is not needed --- ...additional-namespaces-servicemonitor.jsonnet | 5 +++-- examples/additional-namespaces.jsonnet | 2 +- examples/alertmanager-config-external.jsonnet | 2 +- examples/etcd.jsonnet | 2 +- examples/kustomize.jsonnet | 2 +- examples/minikube.jsonnet | 6 +++--- ...etheus-additional-alert-rule-example.jsonnet | 17 ++++++++++++----- ...us-additional-recording-rule-example.jsonnet | 17 ++++++++++++----- ...eus-additional-rendered-rule-example.jsonnet | 17 ++++++++++++----- 9 files changed, 46 insertions(+), 24 deletions(-) diff --git a/examples/additional-namespaces-servicemonitor.jsonnet b/examples/additional-namespaces-servicemonitor.jsonnet index 6cfe37db..ec978da7 100644 --- a/examples/additional-namespaces-servicemonitor.jsonnet +++ b/examples/additional-namespaces-servicemonitor.jsonnet @@ -7,7 +7,7 @@ local kp = (import 'kube-prometheus/main.libsonnet') + { namespaces+: ['my-namespace', 'my-second-namespace'], }, }, - prometheus+: { + exampleApplication: { serviceMonitorMyNamespace: { apiVersion: 'monitoring.coreos.com/v1', kind: 'ServiceMonitor', @@ -39,4 +39,5 @@ local kp = (import 'kube-prometheus/main.libsonnet') + { { ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } + { ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } + { ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } + -{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } +{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } + +{ ['example-application-' + name]: kp.exampleApplication[name] for name in std.objectFields(kp.exampleApplication) } diff --git a/examples/additional-namespaces.jsonnet b/examples/additional-namespaces.jsonnet index 85cae475..45c606a6 100644 --- a/examples/additional-namespaces.jsonnet +++ b/examples/additional-namespaces.jsonnet @@ -4,7 +4,7 @@ local kp = (import 'kube-prometheus/main.libsonnet') + { namespace: 'monitoring', }, - prometheus+:: { + prometheus+: { namespaces+: ['my-namespace', 'my-second-namespace'], }, }, diff --git a/examples/alertmanager-config-external.jsonnet b/examples/alertmanager-config-external.jsonnet index 5d96d23d..49f6b558 100644 --- a/examples/alertmanager-config-external.jsonnet +++ b/examples/alertmanager-config-external.jsonnet @@ -1,5 +1,5 @@ ((import 'kube-prometheus/main.libsonnet') + { - _config+:: { + values+:: { alertmanager+: { config: importstr 'alertmanager-config.yaml', }, diff --git a/examples/etcd.jsonnet b/examples/etcd.jsonnet index e494b6ad..7126ee31 100644 --- a/examples/etcd.jsonnet +++ b/examples/etcd.jsonnet @@ -6,7 +6,7 @@ local kp = (import 'kube-prometheus/main.libsonnet') + }, // Reference info: https://github.com/coreos/kube-prometheus/blob/master/README.md#static-etcd-configuration - etcd+:: { + etcd+: { // Configure this to be the IP(s) to scrape - i.e. your etcd node(s) (use commas to separate multiple values). ips: ['127.0.0.1'], diff --git a/examples/kustomize.jsonnet b/examples/kustomize.jsonnet index ab548b05..455b38bd 100644 --- a/examples/kustomize.jsonnet +++ b/examples/kustomize.jsonnet @@ -26,7 +26,7 @@ local manifests = { ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } + { ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) } + { ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } + - { ['kubernetes-' + name]: kp.kubernetesMixin[name] for name in std.objectFields(kp.kubernetesMixin) }; + { ['kubernetes-' + name]: kp.kubernetesControlPlane[name] for name in std.objectFields(kp.kubernetesControlPlane) }; local kustomizationResourceFile(name) = './manifests/' + name + '.yaml'; local kustomization = { diff --git a/examples/minikube.jsonnet b/examples/minikube.jsonnet index dd2f77b4..87b88d69 100644 --- a/examples/minikube.jsonnet +++ b/examples/minikube.jsonnet @@ -8,10 +8,10 @@ local kp = common+: { namespace: 'monitoring', }, - alertmanager+:: { + alertmanager+: { config: importstr 'alertmanager-config.yaml', }, - grafana+:: { + grafana+: { config: { // http://docs.grafana.org/installation/configuration/ sections: { // Do not require grafana users to login/authenticate @@ -40,7 +40,7 @@ local kp = }, }, }, - alertmanager+:: { + alertmanager+: { alertmanager+: { // Reference info: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#alertmanagerspec spec+: { diff --git a/examples/prometheus-additional-alert-rule-example.jsonnet b/examples/prometheus-additional-alert-rule-example.jsonnet index 63ec2ea7..483b9cb1 100644 --- a/examples/prometheus-additional-alert-rule-example.jsonnet +++ b/examples/prometheus-additional-alert-rule-example.jsonnet @@ -4,10 +4,16 @@ local kp = (import 'kube-prometheus/main.libsonnet') + { namespace: 'monitoring', }, }, - prometheus+: { - prometheusRule+: { - spec+: { - groups+: [ + exampleApplication: { + prometheusRuleExample: { + apiVersion: 'monitoring.coreos.com/v1', + kind: 'PrometheusRule', + metadata: { + name: 'my-prometheus-rule', + namespace: $.values.common.namespace, + }, + spec: { + groups: [ { name: 'example-group', rules: [ @@ -36,4 +42,5 @@ local kp = (import 'kube-prometheus/main.libsonnet') + { { ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } + { ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } + { ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) } + -{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } +{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } + +{ ['example-application-' + name]: kp.exampleApplication[name] for name in std.objectFields(kp.exampleApplication) } diff --git a/examples/prometheus-additional-recording-rule-example.jsonnet b/examples/prometheus-additional-recording-rule-example.jsonnet index c2abc4d3..5e67b03f 100644 --- a/examples/prometheus-additional-recording-rule-example.jsonnet +++ b/examples/prometheus-additional-recording-rule-example.jsonnet @@ -4,10 +4,16 @@ local kp = (import 'kube-prometheus/main.libsonnet') + { namespace: 'monitoring', }, }, - prometheus+: { - prometheusRule+: { - spec+: { - groups+: [ + exampleApplication: { + prometheusRuleExample: { + apiVersion: 'monitoring.coreos.com/v1', + kind: 'PrometheusRule', + metadata: { + name: 'my-prometheus-rule', + namespace: $.values.common.namespace, + }, + spec: { + groups: [ { name: 'example-group', rules: [ @@ -30,4 +36,5 @@ local kp = (import 'kube-prometheus/main.libsonnet') + { { ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } + { ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } + { ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) } + -{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } +{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } + +{ ['example-application-' + name]: kp.exampleApplication[name] for name in std.objectFields(kp.exampleApplication) } diff --git a/examples/prometheus-additional-rendered-rule-example.jsonnet b/examples/prometheus-additional-rendered-rule-example.jsonnet index 29676851..66c7937c 100644 --- a/examples/prometheus-additional-rendered-rule-example.jsonnet +++ b/examples/prometheus-additional-rendered-rule-example.jsonnet @@ -4,10 +4,16 @@ local kp = (import 'kube-prometheus/main.libsonnet') + { namespace: 'monitoring', }, }, - prometheus+: { - prometheusRule+: { - spec+: { - groups+: (import 'existingrule.json').groups, + exampleApplication: { + prometheusRuleExample: { + apiVersion: 'monitoring.coreos.com/v1', + kind: 'PrometheusRule', + metadata: { + name: 'my-prometheus-rule', + namespace: $.values.common.namespace, + }, + spec: { + groups: (import 'existingrule.json').groups, }, }, }, @@ -20,4 +26,5 @@ local kp = (import 'kube-prometheus/main.libsonnet') + { { ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } + { ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } + { ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) } + -{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } +{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } + +{ ['example-application-' + name]: kp.exampleApplication[name] for name in std.objectFields(kp.exampleApplication) } From 66e4a7ba154124aa4b1a2bdccf5ed235dd5e2c23 Mon Sep 17 00:00:00 2001 From: paulfantom Date: Mon, 22 Feb 2021 16:38:34 +0100 Subject: [PATCH 5/5] *: regenerate --- README.md | 11 ++-- docs/EKS-cni-support.md | 2 +- ...prometheus-rules-and-grafana-dashboards.md | 53 +++++++++++++------ docs/weave-net-support.md | 2 +- kustomization.yaml | 10 ++-- manifests/kubernetes-prometheusRule.yaml | 3 +- ...> kubernetes-serviceMonitorApiserver.yaml} | 0 ... => kubernetes-serviceMonitorCoreDNS.yaml} | 0 ...-serviceMonitorKubeControllerManager.yaml} | 0 ...bernetes-serviceMonitorKubeScheduler.yaml} | 0 ... => kubernetes-serviceMonitorKubelet.yaml} | 0 11 files changed, 51 insertions(+), 30 deletions(-) rename manifests/{prometheus-serviceMonitorApiserver.yaml => kubernetes-serviceMonitorApiserver.yaml} (100%) rename manifests/{prometheus-serviceMonitorCoreDNS.yaml => kubernetes-serviceMonitorCoreDNS.yaml} (100%) rename manifests/{prometheus-serviceMonitorKubeControllerManager.yaml => kubernetes-serviceMonitorKubeControllerManager.yaml} (100%) rename manifests/{prometheus-serviceMonitorKubeScheduler.yaml => kubernetes-serviceMonitorKubeScheduler.yaml} (100%) rename manifests/{prometheus-serviceMonitorKubelet.yaml => kubernetes-serviceMonitorKubelet.yaml} (100%) diff --git a/README.md b/README.md index dfaea106..592a0d35 100644 --- a/README.md +++ b/README.md @@ -243,7 +243,7 @@ local kp = { ['blackbox-exporter-' + name]: kp.blackboxExporter[name] for name in std.objectFields(kp.blackboxExporter) } + { ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } + { ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } + -{ ['kubernetes-' + name]: kp.kubernetesMixin[name] for name in std.objectFields(kp.kubernetesMixin) } +{ ['kubernetes-' + name]: kp.kubernetesControlPlane[name] for name in std.objectFields(kp.kubernetesControlPlane) } { ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } + { ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } + { ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) } @@ -586,7 +586,7 @@ In the above example the configuration has been inlined, but can just as well be [embedmd]:# (examples/alertmanager-config-external.jsonnet) ```jsonnet ((import 'kube-prometheus/main.libsonnet') + { - _config+:: { + values+:: { alertmanager+: { config: importstr 'alertmanager-config.yaml', }, @@ -606,7 +606,7 @@ local kp = (import 'kube-prometheus/main.libsonnet') + { namespace: 'monitoring', }, - prometheus+:: { + prometheus+: { namespaces+: ['my-namespace', 'my-second-namespace'], }, }, @@ -640,7 +640,7 @@ local kp = (import 'kube-prometheus/main.libsonnet') + { namespaces+: ['my-namespace', 'my-second-namespace'], }, }, - prometheus+: { + exampleApplication: { serviceMonitorMyNamespace: { apiVersion: 'monitoring.coreos.com/v1', kind: 'ServiceMonitor', @@ -672,7 +672,8 @@ local kp = (import 'kube-prometheus/main.libsonnet') + { { ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } + { ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } + { ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } + -{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } +{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } + +{ ['example-application-' + name]: kp.exampleApplication[name] for name in std.objectFields(kp.exampleApplication) } ``` > NOTE: make sure your service resources have the right labels (eg. `'app': 'myapp'`) applied. Prometheus uses kubernetes labels to discover resources inside the namespaces. diff --git a/docs/EKS-cni-support.md b/docs/EKS-cni-support.md index 4cb36bc9..266d5fcb 100644 --- a/docs/EKS-cni-support.md +++ b/docs/EKS-cni-support.md @@ -14,7 +14,7 @@ local kp = (import 'kube-prometheus/main.libsonnet') + namespace: 'monitoring', }, }, - prometheus+: { + kubernetesControlPlane+: { prometheusRuleEksCNI+: { spec+: { groups+: [ diff --git a/docs/developing-prometheus-rules-and-grafana-dashboards.md b/docs/developing-prometheus-rules-and-grafana-dashboards.md index 59447941..814ccf88 100644 --- a/docs/developing-prometheus-rules-and-grafana-dashboards.md +++ b/docs/developing-prometheus-rules-and-grafana-dashboards.md @@ -41,7 +41,7 @@ local kp = { ['blackbox-exporter-' + name]: kp.blackboxExporter[name] for name in std.objectFields(kp.blackboxExporter) } + { ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } + { ['kube-state-metrics-' + name]: kp.kubeStateMetrics[name] for name in std.objectFields(kp.kubeStateMetrics) } + -{ ['kubernetes-' + name]: kp.kubernetesMixin[name] for name in std.objectFields(kp.kubernetesMixin) } +{ ['kubernetes-' + name]: kp.kubernetesControlPlane[name] for name in std.objectFields(kp.kubernetesControlPlane) } { ['node-exporter-' + name]: kp.nodeExporter[name] for name in std.objectFields(kp.nodeExporter) } + { ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } + { ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) } @@ -65,10 +65,16 @@ local kp = (import 'kube-prometheus/main.libsonnet') + { namespace: 'monitoring', }, }, - prometheus+: { - prometheusRule+: { - spec+: { - groups+: [ + exampleApplication: { + prometheusRuleExample: { + apiVersion: 'monitoring.coreos.com/v1', + kind: 'PrometheusRule', + metadata: { + name: 'my-prometheus-rule', + namespace: $.values.common.namespace, + }, + spec: { + groups: [ { name: 'example-group', rules: [ @@ -97,7 +103,8 @@ local kp = (import 'kube-prometheus/main.libsonnet') + { { ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } + { ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } + { ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) } + -{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } +{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } + +{ ['example-application-' + name]: kp.exampleApplication[name] for name in std.objectFields(kp.exampleApplication) } ``` ### Recording rules @@ -114,10 +121,16 @@ local kp = (import 'kube-prometheus/main.libsonnet') + { namespace: 'monitoring', }, }, - prometheus+: { - prometheusRule+: { - spec+: { - groups+: [ + exampleApplication: { + prometheusRuleExample: { + apiVersion: 'monitoring.coreos.com/v1', + kind: 'PrometheusRule', + metadata: { + name: 'my-prometheus-rule', + namespace: $.values.common.namespace, + }, + spec: { + groups: [ { name: 'example-group', rules: [ @@ -140,7 +153,8 @@ local kp = (import 'kube-prometheus/main.libsonnet') + { { ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } + { ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } + { ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) } + -{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } +{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } + +{ ['example-application-' + name]: kp.exampleApplication[name] for name in std.objectFields(kp.exampleApplication) } ``` ### Pre-rendered rules @@ -167,10 +181,16 @@ local kp = (import 'kube-prometheus/main.libsonnet') + { namespace: 'monitoring', }, }, - prometheus+: { - prometheusRule+: { - spec+: { - groups+: (import 'existingrule.json').groups, + exampleApplication: { + prometheusRuleExample: { + apiVersion: 'monitoring.coreos.com/v1', + kind: 'PrometheusRule', + metadata: { + name: 'my-prometheus-rule', + namespace: $.values.common.namespace, + }, + spec: { + groups: (import 'existingrule.json').groups, }, }, }, @@ -183,7 +203,8 @@ local kp = (import 'kube-prometheus/main.libsonnet') + { { ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } + { ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } + { ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) } + -{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } +{ ['grafana-' + name]: kp.grafana[name] for name in std.objectFields(kp.grafana) } + +{ ['example-application-' + name]: kp.exampleApplication[name] for name in std.objectFields(kp.exampleApplication) } ``` ### Changing default rules diff --git a/docs/weave-net-support.md b/docs/weave-net-support.md index 8766bfc8..e8c2dfce 100644 --- a/docs/weave-net-support.md +++ b/docs/weave-net-support.md @@ -24,7 +24,7 @@ local kp = (import 'kube-prometheus/main.libsonnet') + namespace: 'monitoring', }, }, - prometheus+: { + kubernetesControlPlane+: { prometheusRuleWeaveNet+: { spec+: { groups: std.map( diff --git a/kustomization.yaml b/kustomization.yaml index 2ebd021b..8cc44572 100644 --- a/kustomization.yaml +++ b/kustomization.yaml @@ -30,6 +30,11 @@ resources: - ./manifests/kube-state-metrics-serviceAccount.yaml - ./manifests/kube-state-metrics-serviceMonitor.yaml - ./manifests/kubernetes-prometheusRule.yaml +- ./manifests/kubernetes-serviceMonitorApiserver.yaml +- ./manifests/kubernetes-serviceMonitorCoreDNS.yaml +- ./manifests/kubernetes-serviceMonitorKubeControllerManager.yaml +- ./manifests/kubernetes-serviceMonitorKubeScheduler.yaml +- ./manifests/kubernetes-serviceMonitorKubelet.yaml - ./manifests/node-exporter-clusterRole.yaml - ./manifests/node-exporter-clusterRoleBinding.yaml - ./manifests/node-exporter-daemonset.yaml @@ -62,11 +67,6 @@ resources: - ./manifests/prometheus-service.yaml - ./manifests/prometheus-serviceAccount.yaml - ./manifests/prometheus-serviceMonitor.yaml -- ./manifests/prometheus-serviceMonitorApiserver.yaml -- ./manifests/prometheus-serviceMonitorCoreDNS.yaml -- ./manifests/prometheus-serviceMonitorKubeControllerManager.yaml -- ./manifests/prometheus-serviceMonitorKubeScheduler.yaml -- ./manifests/prometheus-serviceMonitorKubelet.yaml - ./manifests/setup/0namespace-namespace.yaml - ./manifests/setup/prometheus-operator-0alertmanagerConfigCustomResourceDefinition.yaml - ./manifests/setup/prometheus-operator-0alertmanagerCustomResourceDefinition.yaml diff --git a/manifests/kubernetes-prometheusRule.yaml b/manifests/kubernetes-prometheusRule.yaml index d3ee9527..4dc01f2f 100644 --- a/manifests/kubernetes-prometheusRule.yaml +++ b/manifests/kubernetes-prometheusRule.yaml @@ -2,12 +2,11 @@ apiVersion: monitoring.coreos.com/v1 kind: PrometheusRule metadata: labels: - app.kubernetes.io/component: exporter app.kubernetes.io/name: kube-prometheus app.kubernetes.io/part-of: kube-prometheus prometheus: k8s role: alert-rules - name: kubernetes-rules + name: kubernetes-monitoring-rules namespace: monitoring spec: groups: diff --git a/manifests/prometheus-serviceMonitorApiserver.yaml b/manifests/kubernetes-serviceMonitorApiserver.yaml similarity index 100% rename from manifests/prometheus-serviceMonitorApiserver.yaml rename to manifests/kubernetes-serviceMonitorApiserver.yaml diff --git a/manifests/prometheus-serviceMonitorCoreDNS.yaml b/manifests/kubernetes-serviceMonitorCoreDNS.yaml similarity index 100% rename from manifests/prometheus-serviceMonitorCoreDNS.yaml rename to manifests/kubernetes-serviceMonitorCoreDNS.yaml diff --git a/manifests/prometheus-serviceMonitorKubeControllerManager.yaml b/manifests/kubernetes-serviceMonitorKubeControllerManager.yaml similarity index 100% rename from manifests/prometheus-serviceMonitorKubeControllerManager.yaml rename to manifests/kubernetes-serviceMonitorKubeControllerManager.yaml diff --git a/manifests/prometheus-serviceMonitorKubeScheduler.yaml b/manifests/kubernetes-serviceMonitorKubeScheduler.yaml similarity index 100% rename from manifests/prometheus-serviceMonitorKubeScheduler.yaml rename to manifests/kubernetes-serviceMonitorKubeScheduler.yaml diff --git a/manifests/prometheus-serviceMonitorKubelet.yaml b/manifests/kubernetes-serviceMonitorKubelet.yaml similarity index 100% rename from manifests/prometheus-serviceMonitorKubelet.yaml rename to manifests/kubernetes-serviceMonitorKubelet.yaml