Merge pull request #871 from paulfantom/mixins-global

Remove mutating global state in monitoring mixins imports
This commit is contained in:
Paweł Krupa
2021-01-13 09:39:34 +01:00
committed by GitHub
4 changed files with 136 additions and 79 deletions

View File

@@ -6,17 +6,12 @@ local kubeStateMetrics = import './kube-state-metrics/kube-state-metrics.libsonn
local nodeExporter = import './node-exporter/node-exporter.libsonnet';
local prometheusAdapter = import './prometheus-adapter/prometheus-adapter.libsonnet';
local monitoringMixins = import './mixins/monitoring-mixins.libsonnet';
(import 'github.com/brancz/kubernetes-grafana/grafana/grafana.libsonnet') +
(import 'github.com/kubernetes/kube-state-metrics/jsonnet/kube-state-metrics-mixin/mixin.libsonnet') +
(import 'github.com/prometheus/node_exporter/docs/node-mixin/mixin.libsonnet') +
(import 'github.com/prometheus/alertmanager/doc/alertmanager-mixin/mixin.libsonnet') +
(import 'github.com/prometheus-operator/prometheus-operator/jsonnet/prometheus-operator/prometheus-operator.libsonnet') +
(import 'github.com/prometheus-operator/prometheus-operator/jsonnet/mixin/mixin.libsonnet') +
(import './prometheus/prometheus.libsonnet') +
(import 'github.com/kubernetes-monitoring/kubernetes-mixin/mixin.libsonnet') +
(import 'github.com/prometheus/prometheus/documentation/prometheus-mixin/mixin.libsonnet') +
(import './alerts/alerts.libsonnet') +
(import './rules/rules.libsonnet') +
{
alertmanager: alertmanager({
name: 'main',
@@ -45,6 +40,11 @@ local prometheusAdapter = import './prometheus-adapter/prometheus-adapter.libson
image: 'directxman12/k8s-prometheus-adapter:v0.8.2',
prometheusURL: 'http://prometheus-' + $._config.prometheus.name + '.' + $._config.namespace + '.svc.cluster.local:9090/',
}),
mixins+:: monitoringMixins({
namespace: $._config.namespace,
alertmanagerName: 'main',
prometheusName: 'k8s',
}),
kubePrometheus+:: {
namespace: {
apiVersion: 'v1',
@@ -176,40 +176,6 @@ local prometheusAdapter = import './prometheus-adapter/prometheus-adapter.libson
'TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305',
],
runbookURLPattern: 'https://github.com/prometheus-operator/kube-prometheus/wiki/%s',
cadvisorSelector: 'job="kubelet", metrics_path="/metrics/cadvisor"',
kubeletSelector: 'job="kubelet", metrics_path="/metrics"',
kubeStateMetricsSelector: 'job="kube-state-metrics"',
nodeExporterSelector: 'job="node-exporter"',
fsSpaceFillingUpCriticalThreshold: 15,
notKubeDnsSelector: 'job!="kube-dns"',
kubeSchedulerSelector: 'job="kube-scheduler"',
kubeControllerManagerSelector: 'job="kube-controller-manager"',
kubeApiserverSelector: 'job="apiserver"',
coreDNSSelector: 'job="kube-dns"',
podLabel: 'pod',
alertmanagerName: '{{ $labels.namespace }}/{{ $labels.pod}}',
alertmanagerClusterLabels: 'namespace,service',
alertmanagerSelector: 'job="alertmanager-' + $._config.alertmanager.name + '",namespace="' + $._config.namespace + '"',
prometheusSelector: 'job="prometheus-' + $._config.prometheus.name + '",namespace="' + $._config.namespace + '"',
prometheusName: '{{$labels.namespace}}/{{$labels.pod}}',
prometheusOperatorSelector: 'job="prometheus-operator",namespace="' + $._config.namespace + '"',
jobs: {
Kubelet: $._config.kubeletSelector,
KubeScheduler: $._config.kubeSchedulerSelector,
KubeControllerManager: $._config.kubeControllerManagerSelector,
KubeAPI: $._config.kubeApiserverSelector,
KubeStateMetrics: $._config.kubeStateMetricsSelector,
NodeExporter: $._config.nodeExporterSelector,
Alertmanager: $._config.alertmanagerSelector,
Prometheus: $._config.prometheusSelector,
PrometheusOperator: $._config.prometheusOperatorSelector,
CoreDNS: $._config.coreDNSSelector,
},
resources+:: {
'addon-resizer': {
requests: { cpu: '10m', memory: '30Mi' },
@@ -220,7 +186,25 @@ local prometheusAdapter = import './prometheus-adapter/prometheus-adapter.libson
limits: { cpu: '20m', memory: '40Mi' },
},
},
prometheus+:: { rules: $.prometheusRules + $.prometheusAlerts },
local allRules =
$.mixins.nodeExporter.prometheusRules +
$.mixins.kubernetes.prometheusRules +
$.mixins.base.prometheusRules +
$.mixins.kubeStateMetrics.prometheusAlerts +
$.mixins.nodeExporter.prometheusAlerts +
$.mixins.alertmanager.prometheusAlerts +
$.mixins.prometheusOperator.prometheusAlerts +
$.mixins.kubernetes.prometheusAlerts +
$.mixins.prometheus.prometheusAlerts +
$.mixins.base.prometheusAlerts,
local allDashboards =
$.mixins.nodeExporter.grafanaDashboards +
$.mixins.kubernetes.grafanaDashboards +
$.mixins.prometheus.grafanaDashboards,
prometheus+:: { rules: allRules },
grafana+:: {
labels: {
'app.kubernetes.io/name': 'grafana',
@@ -228,7 +212,7 @@ local prometheusAdapter = import './prometheus-adapter/prometheus-adapter.libson
'app.kubernetes.io/component': 'grafana',
'app.kubernetes.io/part-of': 'kube-prometheus',
},
dashboards: $.grafanaDashboards,
dashboards: allDashboards,
},
},
}

View File

@@ -0,0 +1,77 @@
local defaults = {
namespace: error 'must provide namespace',
prometheusName: error 'must provide Prometheus resource name',
alertmanagerName: error 'must provide Alertmanager resource name',
};
function(params) {
local m = self,
config:: defaults + params,
base+:
(import '../alerts/general.libsonnet') +
(import '../alerts/node.libsonnet') +
(import '../rules/node-rules.libsonnet') +
(import '../rules/general.libsonnet') {
_config+:: {
nodeExporterSelector: 'job="node-exporter"',
hostNetworkInterfaceSelector: 'device!~"veth.+"',
},
},
kubernetes:
(import 'github.com/kubernetes-monitoring/kubernetes-mixin/mixin.libsonnet') {
_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.+"',
},
},
kubeStateMetrics:
(import 'github.com/kubernetes/kube-state-metrics/jsonnet/kube-state-metrics-mixin/mixin.libsonnet') {
_config+:: {
kubeStateMetricsSelector: 'job="kube-state-metrics"',
},
},
prometheusOperator:
(import 'github.com/prometheus-operator/prometheus-operator/jsonnet/mixin/mixin.libsonnet') {
_config+:: {
prometheusOperatorSelector: 'job="prometheus-operator",namespace="' + m.config.namespace + '"',
},
},
prometheus:
(import 'github.com/prometheus/prometheus/documentation/prometheus-mixin/mixin.libsonnet') {
_config+:: {
prometheusSelector: 'job="prometheus-' + m.config.prometheusName + '",namespace="' + m.config.namespace + '"',
prometheusName: '{{$labels.namespace}}/{{$labels.pod}}',
},
},
alertmanager:
(import 'github.com/prometheus/alertmanager/doc/alertmanager-mixin/mixin.libsonnet') {
_config+:: {
alertmanagerName: '{{ $labels.namespace }}/{{ $labels.pod}}',
alertmanagerClusterLabels: 'namespace,service',
alertmanagerSelector: 'job="alertmanager-' + m.config.alertmanagerName + '",namespace="' + m.config.namespace + '"',
},
},
nodeExporter:
(import 'github.com/prometheus/node_exporter/docs/node-mixin/mixin.libsonnet') {
_config+:: {
nodeExporterSelector: 'job="node-exporter"',
fsSpaceFillingUpCriticalThreshold: 15,
diskDeviceSelector: 'device=~"mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|dasd.+"',
},
},
}

View File

@@ -22243,7 +22243,7 @@ items:
"timeShift": null,
"title": "CPU Utilisation",
"tooltip": {
"shared": false,
"shared": true,
"sort": 0,
"value_type": "individual"
},
@@ -22329,7 +22329,7 @@ items:
"timeShift": null,
"title": "CPU Saturation (load1 per CPU)",
"tooltip": {
"shared": false,
"shared": true,
"sort": 0,
"value_type": "individual"
},
@@ -22427,7 +22427,7 @@ items:
"timeShift": null,
"title": "Memory Utilisation",
"tooltip": {
"shared": false,
"shared": true,
"sort": 0,
"value_type": "individual"
},
@@ -22513,7 +22513,7 @@ items:
"timeShift": null,
"title": "Memory Saturation (Major Page Faults)",
"tooltip": {
"shared": false,
"shared": true,
"sort": 0,
"value_type": "individual"
},
@@ -22627,7 +22627,7 @@ items:
"timeShift": null,
"title": "Net Utilisation (Bytes Receive/Transmit)",
"tooltip": {
"shared": false,
"shared": true,
"sort": 0,
"value_type": "individual"
},
@@ -22729,7 +22729,7 @@ items:
"timeShift": null,
"title": "Net Saturation (Drops Receive/Transmit)",
"tooltip": {
"shared": false,
"shared": true,
"sort": 0,
"value_type": "individual"
},
@@ -22827,7 +22827,7 @@ items:
"timeShift": null,
"title": "Disk IO Utilisation",
"tooltip": {
"shared": false,
"shared": true,
"sort": 0,
"value_type": "individual"
},
@@ -22913,7 +22913,7 @@ items:
"timeShift": null,
"title": "Disk IO Saturation",
"tooltip": {
"shared": false,
"shared": true,
"sort": 0,
"value_type": "individual"
},
@@ -23011,7 +23011,7 @@ items:
"timeShift": null,
"title": "Disk Space Utilisation",
"tooltip": {
"shared": false,
"shared": true,
"sort": 0,
"value_type": "individual"
},
@@ -23107,9 +23107,9 @@ items:
"30d"
]
},
"timezone": "UTC",
"timezone": "utc",
"title": "USE Method / Cluster",
"uid": "3e97d1d02672cdd0861f4c97c64f89b2",
"uid": "",
"version": 0
}
kind: ConfigMap
@@ -23191,7 +23191,7 @@ items:
"timeShift": null,
"title": "CPU Utilisation",
"tooltip": {
"shared": false,
"shared": true,
"sort": 0,
"value_type": "individual"
},
@@ -23277,7 +23277,7 @@ items:
"timeShift": null,
"title": "CPU Saturation (Load1 per CPU)",
"tooltip": {
"shared": false,
"shared": true,
"sort": 0,
"value_type": "individual"
},
@@ -23375,7 +23375,7 @@ items:
"timeShift": null,
"title": "Memory Utilisation",
"tooltip": {
"shared": false,
"shared": true,
"sort": 0,
"value_type": "individual"
},
@@ -23461,7 +23461,7 @@ items:
"timeShift": null,
"title": "Memory Saturation (Major Page Faults)",
"tooltip": {
"shared": false,
"shared": true,
"sort": 0,
"value_type": "individual"
},
@@ -23575,7 +23575,7 @@ items:
"timeShift": null,
"title": "Net Utilisation (Bytes Receive/Transmit)",
"tooltip": {
"shared": false,
"shared": true,
"sort": 0,
"value_type": "individual"
},
@@ -23677,7 +23677,7 @@ items:
"timeShift": null,
"title": "Net Saturation (Drops Receive/Transmit)",
"tooltip": {
"shared": false,
"shared": true,
"sort": 0,
"value_type": "individual"
},
@@ -23775,7 +23775,7 @@ items:
"timeShift": null,
"title": "Disk IO Utilisation",
"tooltip": {
"shared": false,
"shared": true,
"sort": 0,
"value_type": "individual"
},
@@ -23861,7 +23861,7 @@ items:
"timeShift": null,
"title": "Disk IO Saturation",
"tooltip": {
"shared": false,
"shared": true,
"sort": 0,
"value_type": "individual"
},
@@ -23959,7 +23959,7 @@ items:
"timeShift": null,
"title": "Disk Space Utilisation",
"tooltip": {
"shared": false,
"shared": true,
"sort": 0,
"value_type": "individual"
},
@@ -24082,9 +24082,9 @@ items:
"30d"
]
},
"timezone": "UTC",
"timezone": "utc",
"title": "USE Method / Node",
"uid": "fac67cfbe174d3ef53eb473d73d9212f",
"uid": "",
"version": 0
}
kind: ConfigMap
@@ -24181,7 +24181,7 @@ items:
"timeShift": null,
"title": "CPU Usage",
"tooltip": {
"shared": false,
"shared": true,
"sort": 0,
"value_type": "individual"
},
@@ -24295,7 +24295,7 @@ items:
"timeShift": null,
"title": "Load Average",
"tooltip": {
"shared": false,
"shared": true,
"sort": 0,
"value_type": "individual"
},
@@ -24422,7 +24422,7 @@ items:
"timeShift": null,
"title": "Memory Usage",
"tooltip": {
"shared": false,
"shared": true,
"sort": 0,
"value_type": "individual"
},
@@ -24525,9 +24525,6 @@ items:
],
"thresholds": "80, 90",
"title": "Memory Usage",
"tooltip": {
"shared": false
},
"type": "singlestat",
"valueFontSize": "80%",
"valueMaps": [
@@ -24636,7 +24633,7 @@ items:
"timeShift": null,
"title": "Disk I/O",
"tooltip": {
"shared": false,
"shared": true,
"sort": 0,
"value_type": "individual"
},
@@ -24743,7 +24740,7 @@ items:
"timeShift": null,
"title": "Disk Space Usage",
"tooltip": {
"shared": false,
"shared": true,
"sort": 0,
"value_type": "individual"
},
@@ -24850,7 +24847,7 @@ items:
"timeShift": null,
"title": "Network Received",
"tooltip": {
"shared": false,
"shared": true,
"sort": 0,
"value_type": "individual"
},
@@ -24944,7 +24941,7 @@ items:
"timeShift": null,
"title": "Network Transmitted",
"tooltip": {
"shared": false,
"shared": true,
"sort": 0,
"value_type": "individual"
},
@@ -25067,9 +25064,8 @@ items:
"30d"
]
},
"timezone": "UTC",
"timezone": "browser",
"title": "Nodes",
"uid": "fa49a4706d07a042595b664c87fb33ea",
"version": 0
}
kind: ConfigMap

View File

@@ -13,7 +13,7 @@ spec:
template:
metadata:
annotations:
checksum/grafana-dashboards: ce13f0b50d04c73fb01da858eb1fb608
checksum/grafana-dashboards: a9e19e1ab605dc374f30edda771e6917
checksum/grafana-datasources: 48faab41f579fc8efde6034391496f6a
labels:
app: grafana