jsonnet: wrap mixins into a function and parametrize

Signed-off-by: paulfantom <pawel@krupa.net.pl>
This commit is contained in:
paulfantom
2021-01-11 16:43:31 +01:00
parent 5f9b222c41
commit 55900d9e1c
2 changed files with 32 additions and 30 deletions

View File

@@ -6,7 +6,7 @@ local kubeStateMetrics = import './kube-state-metrics/kube-state-metrics.libsonn
local nodeExporter = import './node-exporter/node-exporter.libsonnet'; local nodeExporter = import './node-exporter/node-exporter.libsonnet';
local prometheusAdapter = import './prometheus-adapter/prometheus-adapter.libsonnet'; local prometheusAdapter = import './prometheus-adapter/prometheus-adapter.libsonnet';
local mixins = import './mixins/monitoring-mixins.libsonnet'; local monitoringMixins = import './mixins/monitoring-mixins.libsonnet';
(import 'github.com/brancz/kubernetes-grafana/grafana/grafana.libsonnet') + (import 'github.com/brancz/kubernetes-grafana/grafana/grafana.libsonnet') +
(import 'github.com/prometheus-operator/prometheus-operator/jsonnet/prometheus-operator/prometheus-operator.libsonnet') + (import 'github.com/prometheus-operator/prometheus-operator/jsonnet/prometheus-operator/prometheus-operator.libsonnet') +
@@ -40,6 +40,11 @@ local mixins = import './mixins/monitoring-mixins.libsonnet';
image: 'directxman12/k8s-prometheus-adapter:v0.8.2', image: 'directxman12/k8s-prometheus-adapter:v0.8.2',
prometheusURL: 'http://prometheus-' + $._config.prometheus.name + '.' + $._config.namespace + '.svc.cluster.local:9090/', prometheusURL: 'http://prometheus-' + $._config.prometheus.name + '.' + $._config.namespace + '.svc.cluster.local:9090/',
}), }),
mixins+:: monitoringMixins({
namespace: $._config.namespace,
alertmanagerName: 'main',
prometheusName: 'k8s',
}),
kubePrometheus+:: { kubePrometheus+:: {
namespace: { namespace: {
apiVersion: 'v1', apiVersion: 'v1',
@@ -183,21 +188,21 @@ local mixins = import './mixins/monitoring-mixins.libsonnet';
}, },
local allRules = local allRules =
mixins.mixins.nodeExporter.prometheusRules + $.mixins.nodeExporter.prometheusRules +
mixins.mixins.kubernetes.prometheusRules + $.mixins.kubernetes.prometheusRules +
mixins.mixins.base.prometheusRules + $.mixins.base.prometheusRules +
mixins.mixins.kubeStateMetrics.prometheusAlerts + $.mixins.kubeStateMetrics.prometheusAlerts +
mixins.mixins.nodeExporter.prometheusAlerts + $.mixins.nodeExporter.prometheusAlerts +
mixins.mixins.alertmanager.prometheusAlerts + $.mixins.alertmanager.prometheusAlerts +
mixins.mixins.prometheusOperator.prometheusAlerts + $.mixins.prometheusOperator.prometheusAlerts +
mixins.mixins.kubernetes.prometheusAlerts + $.mixins.kubernetes.prometheusAlerts +
mixins.mixins.prometheus.prometheusAlerts + $.mixins.prometheus.prometheusAlerts +
mixins.mixins.base.prometheusAlerts, $.mixins.base.prometheusAlerts,
local allDashboards = local allDashboards =
mixins.mixins.nodeExporter.grafanaDashboards + $.mixins.nodeExporter.grafanaDashboards +
mixins.mixins.kubernetes.grafanaDashboards + $.mixins.kubernetes.grafanaDashboards +
mixins.mixins.prometheus.grafanaDashboards, $.mixins.prometheus.grafanaDashboards,
prometheus+:: { rules: allRules }, prometheus+:: { rules: allRules },
grafana+:: { grafana+:: {

View File

@@ -1,11 +1,13 @@
{ local defaults = {
// Add you mixins here. local defaults = self,
mixins+:: { namespace: error 'must provide namespace',
_config:: { // TODO(paulfantom): figure out how to pass this from higher up prometheusName: error 'must provide namespace',
prometheusName: 'k8s', alertmanagerName: error 'must provide namespace',
alertmanagerName: 'main', };
namespace: 'default',
}, function(params) {
local m = self,
config:: defaults + params,
base+: base+:
(import '../alerts/general.libsonnet') + (import '../alerts/general.libsonnet') +
(import '../alerts/node.libsonnet') + (import '../alerts/node.libsonnet') +
@@ -44,16 +46,14 @@
prometheusOperator: prometheusOperator:
(import 'github.com/prometheus-operator/prometheus-operator/jsonnet/mixin/mixin.libsonnet') { (import 'github.com/prometheus-operator/prometheus-operator/jsonnet/mixin/mixin.libsonnet') {
_config+:: { _config+:: {
//prometheusOperatorSelector: 'job="prometheus-operator",namespace="' + $._config.namespace + '"', prometheusOperatorSelector: 'job="prometheus-operator",namespace="' + m.config.namespace + '"',
prometheusOperatorSelector: 'job="prometheus-operator",namespace="monitoring"',
}, },
}, },
prometheus: prometheus:
(import 'github.com/prometheus/prometheus/documentation/prometheus-mixin/mixin.libsonnet') { (import 'github.com/prometheus/prometheus/documentation/prometheus-mixin/mixin.libsonnet') {
_config+:: { _config+:: {
//prometheusSelector: 'job="prometheus-' + $._config.prometheusName + '",namespace="' + $._config.namespace + '"', prometheusSelector: 'job="prometheus-' + m.config.prometheusName + '",namespace="' + m.config.namespace + '"',
prometheusSelector: 'job="prometheus-k8s",namespace="monitoring"',
prometheusName: '{{$labels.namespace}}/{{$labels.pod}}', prometheusName: '{{$labels.namespace}}/{{$labels.pod}}',
}, },
}, },
@@ -63,8 +63,7 @@
_config+:: { _config+:: {
alertmanagerName: '{{ $labels.namespace }}/{{ $labels.pod}}', alertmanagerName: '{{ $labels.namespace }}/{{ $labels.pod}}',
alertmanagerClusterLabels: 'namespace,service', alertmanagerClusterLabels: 'namespace,service',
//alertmanagerSelector: 'job="alertmanager-' + $._config.alertmanagerName + '",namespace="' + $._config.namespace + '"', alertmanagerSelector: 'job="alertmanager-' + m.config.alertmanagerName + '",namespace="' + m.config.namespace + '"',
alertmanagerSelector: 'job="alertmanager-main",namespace="monitoring"',
}, },
}, },
@@ -76,6 +75,4 @@
diskDeviceSelector: 'device=~"mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|dasd.+"', diskDeviceSelector: 'device=~"mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|dasd.+"',
}, },
}, },
},
} }