mirror of
https://github.com/prometheus-operator/kube-prometheus.git
synced 2025-11-08 20:11:01 +01:00
Merge pull request #960 from paulfantom/k8s-control-plane
Do not modify $.prometheus object when it is not needed (k8s control plane)
This commit is contained in:
commit
f691421c91
11
README.md
11
README.md
@ -243,7 +243,7 @@ local kp =
|
|||||||
{ ['blackbox-exporter-' + name]: kp.blackboxExporter[name] for name in std.objectFields(kp.blackboxExporter) } +
|
{ ['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) } +
|
{ ['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) } +
|
{ ['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) } +
|
{ ['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-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +
|
||||||
{ ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) }
|
{ ['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)
|
[embedmd]:# (examples/alertmanager-config-external.jsonnet)
|
||||||
```jsonnet
|
```jsonnet
|
||||||
((import 'kube-prometheus/main.libsonnet') + {
|
((import 'kube-prometheus/main.libsonnet') + {
|
||||||
_config+:: {
|
values+:: {
|
||||||
alertmanager+: {
|
alertmanager+: {
|
||||||
config: importstr 'alertmanager-config.yaml',
|
config: importstr 'alertmanager-config.yaml',
|
||||||
},
|
},
|
||||||
@ -606,7 +606,7 @@ local kp = (import 'kube-prometheus/main.libsonnet') + {
|
|||||||
namespace: 'monitoring',
|
namespace: 'monitoring',
|
||||||
},
|
},
|
||||||
|
|
||||||
prometheus+:: {
|
prometheus+: {
|
||||||
namespaces+: ['my-namespace', 'my-second-namespace'],
|
namespaces+: ['my-namespace', 'my-second-namespace'],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -640,7 +640,7 @@ local kp = (import 'kube-prometheus/main.libsonnet') + {
|
|||||||
namespaces+: ['my-namespace', 'my-second-namespace'],
|
namespaces+: ['my-namespace', 'my-second-namespace'],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
prometheus+: {
|
exampleApplication: {
|
||||||
serviceMonitorMyNamespace: {
|
serviceMonitorMyNamespace: {
|
||||||
apiVersion: 'monitoring.coreos.com/v1',
|
apiVersion: 'monitoring.coreos.com/v1',
|
||||||
kind: 'ServiceMonitor',
|
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) } +
|
{ ['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) } +
|
{ ['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-' + 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.
|
> NOTE: make sure your service resources have the right labels (eg. `'app': 'myapp'`) applied. Prometheus uses kubernetes labels to discover resources inside the namespaces.
|
||||||
|
|||||||
@ -14,7 +14,7 @@ local kp = (import 'kube-prometheus/main.libsonnet') +
|
|||||||
namespace: 'monitoring',
|
namespace: 'monitoring',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
prometheus+: {
|
kubernetesControlPlane+: {
|
||||||
prometheusRuleEksCNI+: {
|
prometheusRuleEksCNI+: {
|
||||||
spec+: {
|
spec+: {
|
||||||
groups+: [
|
groups+: [
|
||||||
|
|||||||
@ -41,7 +41,7 @@ local kp =
|
|||||||
{ ['blackbox-exporter-' + name]: kp.blackboxExporter[name] for name in std.objectFields(kp.blackboxExporter) } +
|
{ ['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) } +
|
{ ['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) } +
|
{ ['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) } +
|
{ ['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-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +
|
||||||
{ ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) }
|
{ ['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',
|
namespace: 'monitoring',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
prometheus+: {
|
exampleApplication: {
|
||||||
prometheusRule+: {
|
prometheusRuleExample: {
|
||||||
spec+: {
|
apiVersion: 'monitoring.coreos.com/v1',
|
||||||
groups+: [
|
kind: 'PrometheusRule',
|
||||||
|
metadata: {
|
||||||
|
name: 'my-prometheus-rule',
|
||||||
|
namespace: $.values.common.namespace,
|
||||||
|
},
|
||||||
|
spec: {
|
||||||
|
groups: [
|
||||||
{
|
{
|
||||||
name: 'example-group',
|
name: 'example-group',
|
||||||
rules: [
|
rules: [
|
||||||
@ -97,7 +103,8 @@ local kp = (import 'kube-prometheus/main.libsonnet') + {
|
|||||||
{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +
|
{ ['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-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +
|
||||||
{ ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) } +
|
{ ['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
|
### Recording rules
|
||||||
@ -114,10 +121,16 @@ local kp = (import 'kube-prometheus/main.libsonnet') + {
|
|||||||
namespace: 'monitoring',
|
namespace: 'monitoring',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
prometheus+: {
|
exampleApplication: {
|
||||||
prometheusRule+: {
|
prometheusRuleExample: {
|
||||||
spec+: {
|
apiVersion: 'monitoring.coreos.com/v1',
|
||||||
groups+: [
|
kind: 'PrometheusRule',
|
||||||
|
metadata: {
|
||||||
|
name: 'my-prometheus-rule',
|
||||||
|
namespace: $.values.common.namespace,
|
||||||
|
},
|
||||||
|
spec: {
|
||||||
|
groups: [
|
||||||
{
|
{
|
||||||
name: 'example-group',
|
name: 'example-group',
|
||||||
rules: [
|
rules: [
|
||||||
@ -140,7 +153,8 @@ local kp = (import 'kube-prometheus/main.libsonnet') + {
|
|||||||
{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +
|
{ ['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-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +
|
||||||
{ ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) } +
|
{ ['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
|
### Pre-rendered rules
|
||||||
@ -167,10 +181,16 @@ local kp = (import 'kube-prometheus/main.libsonnet') + {
|
|||||||
namespace: 'monitoring',
|
namespace: 'monitoring',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
prometheus+: {
|
exampleApplication: {
|
||||||
prometheusRule+: {
|
prometheusRuleExample: {
|
||||||
spec+: {
|
apiVersion: 'monitoring.coreos.com/v1',
|
||||||
groups+: (import 'existingrule.json').groups,
|
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) } +
|
{ ['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-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +
|
||||||
{ ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) } +
|
{ ['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
|
### Changing default rules
|
||||||
|
|
||||||
|
|||||||
@ -24,7 +24,7 @@ local kp = (import 'kube-prometheus/main.libsonnet') +
|
|||||||
namespace: 'monitoring',
|
namespace: 'monitoring',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
prometheus+: {
|
kubernetesControlPlane+: {
|
||||||
prometheusRuleWeaveNet+: {
|
prometheusRuleWeaveNet+: {
|
||||||
spec+: {
|
spec+: {
|
||||||
groups: std.map(
|
groups: std.map(
|
||||||
|
|||||||
@ -29,7 +29,7 @@ local kp =
|
|||||||
{ ['blackbox-exporter-' + name]: kp.blackboxExporter[name] for name in std.objectFields(kp.blackboxExporter) } +
|
{ ['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) } +
|
{ ['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) } +
|
{ ['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) } +
|
{ ['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-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +
|
||||||
{ ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) }
|
{ ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) }
|
||||||
|
|||||||
@ -7,7 +7,7 @@ local kp = (import 'kube-prometheus/main.libsonnet') + {
|
|||||||
namespaces+: ['my-namespace', 'my-second-namespace'],
|
namespaces+: ['my-namespace', 'my-second-namespace'],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
prometheus+: {
|
exampleApplication: {
|
||||||
serviceMonitorMyNamespace: {
|
serviceMonitorMyNamespace: {
|
||||||
apiVersion: 'monitoring.coreos.com/v1',
|
apiVersion: 'monitoring.coreos.com/v1',
|
||||||
kind: 'ServiceMonitor',
|
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) } +
|
{ ['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) } +
|
{ ['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-' + 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) }
|
||||||
|
|||||||
@ -4,7 +4,7 @@ local kp = (import 'kube-prometheus/main.libsonnet') + {
|
|||||||
namespace: 'monitoring',
|
namespace: 'monitoring',
|
||||||
},
|
},
|
||||||
|
|
||||||
prometheus+:: {
|
prometheus+: {
|
||||||
namespaces+: ['my-namespace', 'my-second-namespace'],
|
namespaces+: ['my-namespace', 'my-second-namespace'],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
((import 'kube-prometheus/main.libsonnet') + {
|
((import 'kube-prometheus/main.libsonnet') + {
|
||||||
_config+:: {
|
values+:: {
|
||||||
alertmanager+: {
|
alertmanager+: {
|
||||||
config: importstr 'alertmanager-config.yaml',
|
config: importstr 'alertmanager-config.yaml',
|
||||||
},
|
},
|
||||||
|
|||||||
@ -5,7 +5,7 @@ local kp = (import 'kube-prometheus/main.libsonnet') +
|
|||||||
namespace: 'monitoring',
|
namespace: 'monitoring',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
prometheus+: {
|
kubernetesControlPlane+: {
|
||||||
prometheusRuleEksCNI+: {
|
prometheusRuleEksCNI+: {
|
||||||
spec+: {
|
spec+: {
|
||||||
groups+: [
|
groups+: [
|
||||||
|
|||||||
@ -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
|
// 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).
|
// 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'],
|
ips: ['127.0.0.1'],
|
||||||
|
|
||||||
|
|||||||
@ -26,7 +26,7 @@ local manifests =
|
|||||||
{ ['prometheus-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +
|
{ ['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) } +
|
{ ['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) } +
|
||||||
{ ['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 kustomizationResourceFile(name) = './manifests/' + name + '.yaml';
|
||||||
local kustomization = {
|
local kustomization = {
|
||||||
|
|||||||
@ -8,10 +8,10 @@ local kp =
|
|||||||
common+: {
|
common+: {
|
||||||
namespace: 'monitoring',
|
namespace: 'monitoring',
|
||||||
},
|
},
|
||||||
alertmanager+:: {
|
alertmanager+: {
|
||||||
config: importstr 'alertmanager-config.yaml',
|
config: importstr 'alertmanager-config.yaml',
|
||||||
},
|
},
|
||||||
grafana+:: {
|
grafana+: {
|
||||||
config: { // http://docs.grafana.org/installation/configuration/
|
config: { // http://docs.grafana.org/installation/configuration/
|
||||||
sections: {
|
sections: {
|
||||||
// Do not require grafana users to login/authenticate
|
// Do not require grafana users to login/authenticate
|
||||||
@ -40,7 +40,7 @@ local kp =
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
alertmanager+:: {
|
alertmanager+: {
|
||||||
alertmanager+: {
|
alertmanager+: {
|
||||||
// Reference info: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#alertmanagerspec
|
// Reference info: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#alertmanagerspec
|
||||||
spec+: {
|
spec+: {
|
||||||
|
|||||||
@ -4,10 +4,16 @@ local kp = (import 'kube-prometheus/main.libsonnet') + {
|
|||||||
namespace: 'monitoring',
|
namespace: 'monitoring',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
prometheus+: {
|
exampleApplication: {
|
||||||
prometheusRule+: {
|
prometheusRuleExample: {
|
||||||
spec+: {
|
apiVersion: 'monitoring.coreos.com/v1',
|
||||||
groups+: [
|
kind: 'PrometheusRule',
|
||||||
|
metadata: {
|
||||||
|
name: 'my-prometheus-rule',
|
||||||
|
namespace: $.values.common.namespace,
|
||||||
|
},
|
||||||
|
spec: {
|
||||||
|
groups: [
|
||||||
{
|
{
|
||||||
name: 'example-group',
|
name: 'example-group',
|
||||||
rules: [
|
rules: [
|
||||||
@ -36,4 +42,5 @@ local kp = (import 'kube-prometheus/main.libsonnet') + {
|
|||||||
{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +
|
{ ['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-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +
|
||||||
{ ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) } +
|
{ ['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) }
|
||||||
|
|||||||
@ -4,10 +4,16 @@ local kp = (import 'kube-prometheus/main.libsonnet') + {
|
|||||||
namespace: 'monitoring',
|
namespace: 'monitoring',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
prometheus+: {
|
exampleApplication: {
|
||||||
prometheusRule+: {
|
prometheusRuleExample: {
|
||||||
spec+: {
|
apiVersion: 'monitoring.coreos.com/v1',
|
||||||
groups+: [
|
kind: 'PrometheusRule',
|
||||||
|
metadata: {
|
||||||
|
name: 'my-prometheus-rule',
|
||||||
|
namespace: $.values.common.namespace,
|
||||||
|
},
|
||||||
|
spec: {
|
||||||
|
groups: [
|
||||||
{
|
{
|
||||||
name: 'example-group',
|
name: 'example-group',
|
||||||
rules: [
|
rules: [
|
||||||
@ -30,4 +36,5 @@ local kp = (import 'kube-prometheus/main.libsonnet') + {
|
|||||||
{ ['alertmanager-' + name]: kp.alertmanager[name] for name in std.objectFields(kp.alertmanager) } +
|
{ ['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-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +
|
||||||
{ ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) } +
|
{ ['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) }
|
||||||
|
|||||||
@ -4,10 +4,16 @@ local kp = (import 'kube-prometheus/main.libsonnet') + {
|
|||||||
namespace: 'monitoring',
|
namespace: 'monitoring',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
prometheus+: {
|
exampleApplication: {
|
||||||
prometheusRule+: {
|
prometheusRuleExample: {
|
||||||
spec+: {
|
apiVersion: 'monitoring.coreos.com/v1',
|
||||||
groups+: (import 'existingrule.json').groups,
|
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) } +
|
{ ['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-' + name]: kp.prometheus[name] for name in std.objectFields(kp.prometheus) } +
|
||||||
{ ['prometheus-adapter-' + name]: kp.prometheusAdapter[name] for name in std.objectFields(kp.prometheusAdapter) } +
|
{ ['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) }
|
||||||
|
|||||||
@ -5,7 +5,7 @@ local kp = (import 'kube-prometheus/main.libsonnet') +
|
|||||||
namespace: 'monitoring',
|
namespace: 'monitoring',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
prometheus+: {
|
kubernetesControlPlane+: {
|
||||||
prometheusRuleWeaveNet+: {
|
prometheusRuleWeaveNet+: {
|
||||||
spec+: {
|
spec+: {
|
||||||
groups: std.map(
|
groups: std.map(
|
||||||
|
|||||||
262
jsonnet/kube-prometheus/components/k8s-control-plane.libsonnet
Normal file
262
jsonnet/kube-prometheus/components/k8s-control-plane.libsonnet
Normal file
@ -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',
|
||||||
|
}],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -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,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
@ -1,5 +1,3 @@
|
|||||||
local relabelings = import '../addons/dropping-deprecated-metrics-relabelings.libsonnet';
|
|
||||||
|
|
||||||
local defaults = {
|
local defaults = {
|
||||||
local defaults = self,
|
local defaults = self,
|
||||||
namespace: error 'must provide namespace',
|
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
|
// Include thanos sidecar Service only if thanos config was passed by user
|
||||||
[if std.objectHas(params, 'thanos') && std.length(params.thanos) > 0 then 'serviceThanosSidecar']: {
|
[if std.objectHas(params, 'thanos') && std.length(params.thanos) > 0 then 'serviceThanosSidecar']: {
|
||||||
apiVersion: 'v1',
|
apiVersion: 'v1',
|
||||||
|
|||||||
@ -1,9 +1,9 @@
|
|||||||
local alertmanager = import './components/alertmanager.libsonnet';
|
local alertmanager = import './components/alertmanager.libsonnet';
|
||||||
local blackboxExporter = import './components/blackbox-exporter.libsonnet';
|
local blackboxExporter = import './components/blackbox-exporter.libsonnet';
|
||||||
local grafana = import './components/grafana.libsonnet';
|
local grafana = import './components/grafana.libsonnet';
|
||||||
|
local kubernetesControlPlane = import './components/k8s-control-plane.libsonnet';
|
||||||
local kubeStateMetrics = import './components/kube-state-metrics.libsonnet';
|
local kubeStateMetrics = import './components/kube-state-metrics.libsonnet';
|
||||||
local customMixin = import './components/mixin/custom.libsonnet';
|
local customMixin = import './components/mixin/custom.libsonnet';
|
||||||
local kubernetesMixin = import './components/mixin/kubernetes.libsonnet';
|
|
||||||
local nodeExporter = import './components/node-exporter.libsonnet';
|
local nodeExporter = import './components/node-exporter.libsonnet';
|
||||||
local prometheusAdapter = import './components/prometheus-adapter.libsonnet';
|
local prometheusAdapter = import './components/prometheus-adapter.libsonnet';
|
||||||
local prometheusOperator = import './components/prometheus-operator.libsonnet';
|
local prometheusOperator = import './components/prometheus-operator.libsonnet';
|
||||||
@ -58,7 +58,7 @@ local prometheus = import './components/prometheus.libsonnet';
|
|||||||
image: $.values.common.images.grafana,
|
image: $.values.common.images.grafana,
|
||||||
prometheusName: $.values.prometheus.name,
|
prometheusName: $.values.prometheus.name,
|
||||||
// TODO(paulfantom) This should be done by iterating over all objects and looking for object.mixin.grafanaDashboards
|
// 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: {
|
kubeStateMetrics: {
|
||||||
namespace: $.values.common.namespace,
|
namespace: $.values.common.namespace,
|
||||||
@ -96,7 +96,7 @@ local prometheus = import './components/prometheus.libsonnet';
|
|||||||
},
|
},
|
||||||
mixin+: { ruleLabels: $.values.common.ruleLabels },
|
mixin+: { ruleLabels: $.values.common.ruleLabels },
|
||||||
},
|
},
|
||||||
kubernetesMixin: {
|
kubernetesControlPlane: {
|
||||||
namespace: $.values.common.namespace,
|
namespace: $.values.common.namespace,
|
||||||
mixin+: { ruleLabels: $.values.common.ruleLabels },
|
mixin+: { ruleLabels: $.values.common.ruleLabels },
|
||||||
},
|
},
|
||||||
@ -114,7 +114,7 @@ local prometheus = import './components/prometheus.libsonnet';
|
|||||||
prometheus: prometheus($.values.prometheus),
|
prometheus: prometheus($.values.prometheus),
|
||||||
prometheusAdapter: prometheusAdapter($.values.prometheusAdapter),
|
prometheusAdapter: prometheusAdapter($.values.prometheusAdapter),
|
||||||
prometheusOperator: prometheusOperator($.values.prometheusOperator),
|
prometheusOperator: prometheusOperator($.values.prometheusOperator),
|
||||||
kubernetesMixin: kubernetesMixin($.values.kubernetesMixin),
|
kubernetesControlPlane: kubernetesControlPlane($.values.kubernetesControlPlane),
|
||||||
kubePrometheus: customMixin($.values.kubePrometheus) + {
|
kubePrometheus: customMixin($.values.kubePrometheus) + {
|
||||||
namespace: {
|
namespace: {
|
||||||
apiVersion: 'v1',
|
apiVersion: 'v1',
|
||||||
|
|||||||
@ -14,7 +14,7 @@ local service(name, namespace, labels, selector, ports) = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
{
|
{
|
||||||
prometheus+: {
|
kubernetesControlPlane+: {
|
||||||
kubeControllerManagerPrometheusDiscoveryService: service(
|
kubeControllerManagerPrometheusDiscoveryService: service(
|
||||||
'kube-controller-manager-prometheus-discovery',
|
'kube-controller-manager-prometheus-discovery',
|
||||||
'kube-system',
|
'kube-system',
|
||||||
|
|||||||
@ -14,7 +14,7 @@ local service(name, namespace, labels, selector, ports) = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
{
|
{
|
||||||
prometheus+:: {
|
kubernetesControlPlane+: {
|
||||||
kubeControllerManagerPrometheusDiscoveryService: service(
|
kubeControllerManagerPrometheusDiscoveryService: service(
|
||||||
'kube-controller-manager-prometheus-discovery',
|
'kube-controller-manager-prometheus-discovery',
|
||||||
'kube-system',
|
'kube-system',
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
minimumAvailableIPsTime: '10m',
|
minimumAvailableIPsTime: '10m',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
prometheus+: {
|
kubernetesControlPlane+: {
|
||||||
serviceMonitorCoreDNS+: {
|
serviceMonitorCoreDNS+: {
|
||||||
spec+: {
|
spec+: {
|
||||||
endpoints: [
|
endpoints: [
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
(import '../addons/managed-cluster.libsonnet') + {
|
(import '../addons/managed-cluster.libsonnet') + {
|
||||||
_config+:: {
|
values+:: {
|
||||||
prometheusAdapter+:: {
|
prometheusAdapter+: {
|
||||||
config+: {
|
config+: {
|
||||||
resourceRules:: null,
|
resourceRules:: null,
|
||||||
},
|
},
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
prometheus+:: {
|
kubernetesControlPlane+: {
|
||||||
kubeDnsPrometheusDiscoveryService: {
|
kubeDnsPrometheusDiscoveryService: {
|
||||||
apiVersion: 'v1',
|
apiVersion: 'v1',
|
||||||
kind: 'Service',
|
kind: 'Service',
|
||||||
|
|||||||
@ -14,7 +14,7 @@ local service(name, namespace, labels, selector, ports) = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
{
|
{
|
||||||
prometheus+:: {
|
kubernetesControlPlane+: {
|
||||||
kubeControllerManagerPrometheusDiscoveryService: service(
|
kubeControllerManagerPrometheusDiscoveryService: service(
|
||||||
'kube-controller-manager-prometheus-discovery',
|
'kube-controller-manager-prometheus-discovery',
|
||||||
'kube-system',
|
'kube-system',
|
||||||
|
|||||||
@ -14,7 +14,7 @@ local service(name, namespace, labels, selector, ports) = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
{
|
{
|
||||||
prometheus+: {
|
kubernetesControlPlane+: {
|
||||||
kubeControllerManagerPrometheusDiscoveryService: service(
|
kubeControllerManagerPrometheusDiscoveryService: service(
|
||||||
'kube-controller-manager-prometheus-discovery',
|
'kube-controller-manager-prometheus-discovery',
|
||||||
'kube-system',
|
'kube-system',
|
||||||
|
|||||||
@ -15,7 +15,7 @@ local service(name, namespace, labels, selector, ports) = {
|
|||||||
|
|
||||||
{
|
{
|
||||||
|
|
||||||
prometheus+: {
|
kubernetesControlPlane+: {
|
||||||
kubeControllerManagerPrometheusDiscoveryService: service(
|
kubeControllerManagerPrometheusDiscoveryService: service(
|
||||||
'kube-controller-manager-prometheus-discovery',
|
'kube-controller-manager-prometheus-discovery',
|
||||||
'kube-system',
|
'kube-system',
|
||||||
|
|||||||
@ -30,6 +30,11 @@ resources:
|
|||||||
- ./manifests/kube-state-metrics-serviceAccount.yaml
|
- ./manifests/kube-state-metrics-serviceAccount.yaml
|
||||||
- ./manifests/kube-state-metrics-serviceMonitor.yaml
|
- ./manifests/kube-state-metrics-serviceMonitor.yaml
|
||||||
- ./manifests/kubernetes-prometheusRule.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-clusterRole.yaml
|
||||||
- ./manifests/node-exporter-clusterRoleBinding.yaml
|
- ./manifests/node-exporter-clusterRoleBinding.yaml
|
||||||
- ./manifests/node-exporter-daemonset.yaml
|
- ./manifests/node-exporter-daemonset.yaml
|
||||||
@ -62,11 +67,6 @@ resources:
|
|||||||
- ./manifests/prometheus-service.yaml
|
- ./manifests/prometheus-service.yaml
|
||||||
- ./manifests/prometheus-serviceAccount.yaml
|
- ./manifests/prometheus-serviceAccount.yaml
|
||||||
- ./manifests/prometheus-serviceMonitor.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/0namespace-namespace.yaml
|
||||||
- ./manifests/setup/prometheus-operator-0alertmanagerConfigCustomResourceDefinition.yaml
|
- ./manifests/setup/prometheus-operator-0alertmanagerConfigCustomResourceDefinition.yaml
|
||||||
- ./manifests/setup/prometheus-operator-0alertmanagerCustomResourceDefinition.yaml
|
- ./manifests/setup/prometheus-operator-0alertmanagerCustomResourceDefinition.yaml
|
||||||
|
|||||||
@ -2,12 +2,11 @@ apiVersion: monitoring.coreos.com/v1
|
|||||||
kind: PrometheusRule
|
kind: PrometheusRule
|
||||||
metadata:
|
metadata:
|
||||||
labels:
|
labels:
|
||||||
app.kubernetes.io/component: exporter
|
|
||||||
app.kubernetes.io/name: kube-prometheus
|
app.kubernetes.io/name: kube-prometheus
|
||||||
app.kubernetes.io/part-of: kube-prometheus
|
app.kubernetes.io/part-of: kube-prometheus
|
||||||
prometheus: k8s
|
prometheus: k8s
|
||||||
role: alert-rules
|
role: alert-rules
|
||||||
name: kubernetes-rules
|
name: kubernetes-monitoring-rules
|
||||||
namespace: monitoring
|
namespace: monitoring
|
||||||
spec:
|
spec:
|
||||||
groups:
|
groups:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user