From eac0eb5cb1dccfb288e59a42ab8d354d149e8f0f Mon Sep 17 00:00:00 2001 From: paulfantom Date: Tue, 2 Nov 2021 09:54:27 +0100 Subject: [PATCH 1/7] examples: add example usage of prometheus-agent Signed-off-by: paulfantom --- examples/prometheus-agent.jsonnet | 41 +++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 examples/prometheus-agent.jsonnet diff --git a/examples/prometheus-agent.jsonnet b/examples/prometheus-agent.jsonnet new file mode 100644 index 00000000..6fc2fed3 --- /dev/null +++ b/examples/prometheus-agent.jsonnet @@ -0,0 +1,41 @@ +local kp = + (import 'kube-prometheus/main.libsonnet') + + { + values+:: { + common+: { + namespace: 'monitoring', + }, + prometheus+: { + version: '2.32.0', + resources: { + requests: { memory: '100Mi' }, + }, + enableFeatures: ['agent'] + }, + }, + prometheus+: { + prometheus+: { + alerting:: {}, + remoteWrite: { + // Remote-write config + }, + }, + }, + }; + +{ 'setup/0namespace-namespace': kp.kubePrometheus.namespace } + +{ + ['setup/prometheus-operator-' + name]: kp.prometheusOperator[name] + for name in std.filter((function(name) name != 'serviceMonitor' && name != 'prometheusRule'), std.objectFields(kp.prometheusOperator)) +} + +// serviceMonitor and prometheusRule are separated so that they can be created after the CRDs are ready +{ 'prometheus-operator-serviceMonitor': kp.prometheusOperator.serviceMonitor } + +{ 'prometheus-operator-prometheusRule': kp.prometheusOperator.prometheusRule } + +{ 'kube-prometheus-prometheusRule': kp.kubePrometheus.prometheusRule } + +{ ['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.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) } From 25d5f86c80004ebb328e6ce7cbe74eb0a96a7c28 Mon Sep 17 00:00:00 2001 From: ArthurSens Date: Sat, 6 Nov 2021 20:52:35 +0000 Subject: [PATCH 2/7] examples/prometheus-agent: Fix broken configurations Signed-off-by: ArthurSens --- examples/prometheus-agent.jsonnet | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/examples/prometheus-agent.jsonnet b/examples/prometheus-agent.jsonnet index 6fc2fed3..1043496f 100644 --- a/examples/prometheus-agent.jsonnet +++ b/examples/prometheus-agent.jsonnet @@ -4,20 +4,24 @@ local kp = values+:: { common+: { namespace: 'monitoring', + versions+: { + prometheus: '2.32.0', + }, }, prometheus+: { - version: '2.32.0', resources: { requests: { memory: '100Mi' }, }, - enableFeatures: ['agent'] + enableFeatures: ['agent'], }, }, prometheus+: { prometheus+: { - alerting:: {}, - remoteWrite: { - // Remote-write config + spec+: { + alerting:: {}, + remoteWrite: [{ + url: 'http://remote-write-url.com', + }], }, }, }, From 6437e1414aa2adb03b178ab23a59af7e355b32e7 Mon Sep 17 00:00:00 2001 From: ArthurSens Date: Tue, 30 Nov 2021 17:13:12 +0000 Subject: [PATCH 3/7] examples/prometheus-agent: Override agent-only flags Signed-off-by: ArthurSens --- examples/prometheus-agent.jsonnet | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/examples/prometheus-agent.jsonnet b/examples/prometheus-agent.jsonnet index 1043496f..52a64409 100644 --- a/examples/prometheus-agent.jsonnet +++ b/examples/prometheus-agent.jsonnet @@ -5,7 +5,7 @@ local kp = common+: { namespace: 'monitoring', versions+: { - prometheus: '2.32.0', + prometheus: '2.32.0-beta.0', }, }, prometheus+: { @@ -18,10 +18,22 @@ local kp = prometheus+: { prometheus+: { spec+: { + replicas: 1, alerting:: {}, remoteWrite: [{ url: 'http://remote-write-url.com', }], + containers+: [ + { + name: 'prometheus', + args+: [ + '--config.file=/etc/prometheus/config_out/prometheus.env.yaml', + '--storage.agent.path=/prometheus', + '--enable-feature=agent', + '--web.enable-lifecycle', + ], + }, + ], }, }, }, From d60c5f6b69e6e93d1f4c21eefce71ce34d276800 Mon Sep 17 00:00:00 2001 From: ArthurSens Date: Tue, 30 Nov 2021 17:24:34 +0000 Subject: [PATCH 4/7] examples/prometheus-agent: Hide ruleSelector Signed-off-by: ArthurSens --- examples/prometheus-agent.jsonnet | 1 + 1 file changed, 1 insertion(+) diff --git a/examples/prometheus-agent.jsonnet b/examples/prometheus-agent.jsonnet index 52a64409..db56bb9d 100644 --- a/examples/prometheus-agent.jsonnet +++ b/examples/prometheus-agent.jsonnet @@ -20,6 +20,7 @@ local kp = spec+: { replicas: 1, alerting:: {}, + ruleSelector:: {}, remoteWrite: [{ url: 'http://remote-write-url.com', }], From 049882b85b0da20bac1ba9e3de847e874e3c1a57 Mon Sep 17 00:00:00 2001 From: ArthurSens Date: Tue, 14 Dec 2021 15:03:20 +0000 Subject: [PATCH 5/7] docs/customization: Add prometheus-agent example Signed-off-by: ArthurSens --- docs/customizations/prometheus-agent.md | 64 +++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 docs/customizations/prometheus-agent.md diff --git a/docs/customizations/prometheus-agent.md b/docs/customizations/prometheus-agent.md new file mode 100644 index 00000000..b234033b --- /dev/null +++ b/docs/customizations/prometheus-agent.md @@ -0,0 +1,64 @@ +### Prometheus-agent mode + +***ATTENTION***: Although it is possible to run Prometheus in Agent mode with Prometheus-Operator, it requires strategic merge patches. This practice is not recommended and we do not provide support if Prometheus doesn't work as you expect. **Try it at your own risk!** + +```jsonnet mdox-exec="cat examples/prometheus-agent.jsonnet" +local kp = + (import 'kube-prometheus/main.libsonnet') + + { + values+:: { + common+: { + namespace: 'monitoring', + versions+: { + prometheus: '2.32.0-beta.0', + }, + }, + prometheus+: { + resources: { + requests: { memory: '100Mi' }, + }, + enableFeatures: ['agent'], + }, + }, + prometheus+: { + prometheus+: { + spec+: { + replicas: 1, + alerting:: {}, + ruleSelector:: {}, + remoteWrite: [{ + url: 'http://remote-write-url.com', + }], + containers+: [ + { + name: 'prometheus', + args+: [ + '--config.file=/etc/prometheus/config_out/prometheus.env.yaml', + '--storage.agent.path=/prometheus', + '--enable-feature=agent', + '--web.enable-lifecycle', + ], + }, + ], + }, + }, + }, + }; + +{ 'setup/0namespace-namespace': kp.kubePrometheus.namespace } + +{ + ['setup/prometheus-operator-' + name]: kp.prometheusOperator[name] + for name in std.filter((function(name) name != 'serviceMonitor' && name != 'prometheusRule'), std.objectFields(kp.prometheusOperator)) +} + +// serviceMonitor and prometheusRule are separated so that they can be created after the CRDs are ready +{ 'prometheus-operator-serviceMonitor': kp.prometheusOperator.serviceMonitor } + +{ 'prometheus-operator-prometheusRule': kp.prometheusOperator.prometheusRule } + +{ 'kube-prometheus-prometheusRule': kp.kubePrometheus.prometheusRule } + +{ ['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.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) } +``` From f01d3e6c8740198bf46636cd92804fcba03145e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Krupa=20=28paulfantom=29?= Date: Tue, 4 Jan 2022 09:43:55 +0100 Subject: [PATCH 6/7] examples: prometheus version no longer needed for agent snippet --- examples/prometheus-agent.jsonnet | 3 --- 1 file changed, 3 deletions(-) diff --git a/examples/prometheus-agent.jsonnet b/examples/prometheus-agent.jsonnet index db56bb9d..373bf487 100644 --- a/examples/prometheus-agent.jsonnet +++ b/examples/prometheus-agent.jsonnet @@ -4,9 +4,6 @@ local kp = values+:: { common+: { namespace: 'monitoring', - versions+: { - prometheus: '2.32.0-beta.0', - }, }, prometheus+: { resources: { From 8c8a9662b16ffce1fff61cf2e306a7339a0e78b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Krupa=20=28paulfantom=29?= Date: Tue, 4 Jan 2022 09:44:24 +0100 Subject: [PATCH 7/7] docs: regenerate --- docs/customizations/prometheus-agent.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/docs/customizations/prometheus-agent.md b/docs/customizations/prometheus-agent.md index b234033b..499b92d0 100644 --- a/docs/customizations/prometheus-agent.md +++ b/docs/customizations/prometheus-agent.md @@ -9,9 +9,6 @@ local kp = values+:: { common+: { namespace: 'monitoring', - versions+: { - prometheus: '2.32.0-beta.0', - }, }, prometheus+: { resources: {