From 616c351fa7d68f2a3c1160e159683aedf153384c Mon Sep 17 00:00:00 2001 From: Steve Wilkerson Date: Sat, 24 Mar 2018 12:25:11 -0500 Subject: [PATCH] Dynamically generate list of rules files for prometheus This enables the dynamic generation of the list of rules files for prometheus, driven by the rules added in the appropriate tree under .Values.conf.prometheus.rules. This removes the necessity of adding the file name manually in addition to defining the rules in the rules tree, which should reduce overhead associated with adding new rules for prometheus to evaluate Change-Id: Ib768a252c5ea4f2d099df534c3ffcfb2949d7481 --- prometheus/templates/configmap-etc.yaml | 12 ++++++++++++ prometheus/values.yaml | 7 ------- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/prometheus/templates/configmap-etc.yaml b/prometheus/templates/configmap-etc.yaml index 57d9a0cafc..0f203faeac 100644 --- a/prometheus/templates/configmap-etc.yaml +++ b/prometheus/templates/configmap-etc.yaml @@ -16,6 +16,18 @@ limitations under the License. {{- if .Values.manifests.configmap_etc }} {{- $envAll := . }} + +{{- if empty $envAll.Values.conf.prometheus.scrape_configs.rule_files -}} +{{- $_ := set $envAll.Values "__rule_files" ( list ) }} +{{- $rulesKeys := keys $envAll.Values.conf.prometheus.rules -}} +{{- range $rule := $rulesKeys }} +{{- $rulesFile := printf "/etc/config/rules/%s.rules" $rule }} +{{- $__rule_files := append $envAll.Values.__rule_files $rulesFile }} +{{- $_ := set $envAll.Values "__rule_files" $__rule_files }} +{{ end }} +{{- set .Values.conf.prometheus.scrape_configs "rule_files" $envAll.Values.__rule_files | quote | trunc 0 -}} +{{- end -}} + --- apiVersion: v1 kind: ConfigMap diff --git a/prometheus/values.yaml b/prometheus/values.yaml index 10fffb5849..14e41f8942 100644 --- a/prometheus/values.yaml +++ b/prometheus/values.yaml @@ -200,13 +200,6 @@ conf: global: scrape_interval: 60s evaluation_interval: 60s - rule_files: - - /etc/config/rules/alertmanager.rules - - /etc/config/rules/etcd3.rules - - /etc/config/rules/kubernetes.rules - - /etc/config/rules/kube_apiserver.rules - - /etc/config/rules/kube_controller_manager.rules - - /etc/config/rules/kubelet.rules scrape_configs: - job_name: kubelet scheme: https