From d94a600f0ca20925f25fc33cb72fb27d8b7ea9e1 Mon Sep 17 00:00:00 2001 From: DaveOHenry <20969773+DaveOHenry@users.noreply.github.com> Date: Wed, 11 Mar 2020 17:55:37 +0100 Subject: [PATCH] [stable/prometheus-redis-exporter] Add support for Prometheus Operator Rules (#21387) * Bump chart version Signed-off-by: dahei * Update README.md Signed-off-by: dahei * Add values and example rules Signed-off-by: dahei * Add prometheusrule template Signed-off-by: dahei * Uncommented parameters / removed trailing space Signed-off-by: dahei --- stable/prometheus-redis-exporter/Chart.yaml | 2 +- stable/prometheus-redis-exporter/README.md | 4 ++ .../templates/prometheusrule.yaml | 23 ++++++++++ stable/prometheus-redis-exporter/values.yaml | 42 +++++++++++++++++++ 4 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 stable/prometheus-redis-exporter/templates/prometheusrule.yaml diff --git a/stable/prometheus-redis-exporter/Chart.yaml b/stable/prometheus-redis-exporter/Chart.yaml index a4fc312d06..6df67c6640 100644 --- a/stable/prometheus-redis-exporter/Chart.yaml +++ b/stable/prometheus-redis-exporter/Chart.yaml @@ -2,7 +2,7 @@ apiVersion: v1 appVersion: 1.3.4 description: Prometheus exporter for Redis metrics name: prometheus-redis-exporter -version: 3.2.3 +version: 3.3.3 home: https://github.com/oliver006/redis_exporter sources: - https://github.com/oliver006/redis_exporter diff --git a/stable/prometheus-redis-exporter/README.md b/stable/prometheus-redis-exporter/README.md index 4b216dde5a..05345e1998 100644 --- a/stable/prometheus-redis-exporter/README.md +++ b/stable/prometheus-redis-exporter/README.md @@ -67,6 +67,10 @@ The following table lists the configurable parameters and their default values. | `serviceMonitor.labels` | Labels for the servicemonitor passed to Prometheus Operator | `{}` | | `serviceMonitor.timeout` | Timeout after which the scrape is ended | | | `serviceMonitor.targetLabels` | Set of labels to transfer on the Kubernetes Service onto the target. | | +| `prometheusRule.enabled` | Set this to true to create prometheusRules for Prometheus operator | `false` | +| `prometheusRule.additionalLabels` | Additional labels that can be used so prometheusRules will be discovered by Prometheus | `{}` | +| `prometheusRule.namespace` | namespace where prometheusRules resource should be created | | +| `prometheusRule.rules` | [rules](https://prometheus.io/docs/prometheus/latest/configuration/alerting_rules/) to be created, check values for an example. | `[]` | | `script.configmap` | Let you run a custom lua script from a configmap. The corresponding environment variable `REDIS_EXPORTER_SCRIPT` will be set automatically || | `script.keyname` | Name of the key inside configmap which contains your script || | `auth.enabled` | Specifies whether redis uses authentication | `false` | diff --git a/stable/prometheus-redis-exporter/templates/prometheusrule.yaml b/stable/prometheus-redis-exporter/templates/prometheusrule.yaml new file mode 100644 index 0000000000..afe50a5585 --- /dev/null +++ b/stable/prometheus-redis-exporter/templates/prometheusrule.yaml @@ -0,0 +1,23 @@ +{{- if .Values.prometheusRule.enabled }} +apiVersion: monitoring.coreos.com/v1 +kind: PrometheusRule +metadata: + name: {{ template "prometheus-redis-exporter.fullname" . }} +{{- with .Values.prometheusRule.namespace }} + namespace: {{ . }} +{{- end }} + labels: + app: {{ template "prometheus-redis-exporter.name" . }} + chart: {{ template "prometheus-redis-exporter.chart" . }} + release: {{ .Release.Name | quote }} + heritage: {{ .Release.Service | quote }} +{{- with .Values.prometheusRule.additionalLabels }} +{{ toYaml . | indent 4 }} +{{- end }} +spec: +{{- with .Values.prometheusRule.rules }} + groups: + - name: {{ template "prometheus-redis-exporter.name" $ }} + rules: {{ tpl (toYaml .) $ | nindent 8 }} +{{- end }} +{{- end }} \ No newline at end of file diff --git a/stable/prometheus-redis-exporter/values.yaml b/stable/prometheus-redis-exporter/values.yaml index 2fce50cd94..ba0219535f 100644 --- a/stable/prometheus-redis-exporter/values.yaml +++ b/stable/prometheus-redis-exporter/values.yaml @@ -54,6 +54,48 @@ serviceMonitor: # Set of labels to transfer on the Kubernetes Service onto the target. # targetLabels: [] +## Custom PrometheusRules to be defined +## The value is evaluated as a template, so, for example, the value can depend on .Release or .Chart +## ref: https://github.com/coreos/prometheus-operator#customresourcedefinitions +prometheusRule: + enabled: false + additionalLabels: {} + namespace: "" + rules: [] + ## These are just examples rules, please adapt them to your needs. + ## Make sure to constraint the rules to the current service. + # - alert: RedisDown + # expr: redis_up{service="{{ template "prometheus-redis-exporter.fullname" . }}"} == 0 + # for: 2m + # labels: + # severity: error + # annotations: + # summary: Redis instance {{ "{{ $labels.instance }}" }} down + # description: Redis instance {{ "{{ $labels.instance }}" }} is down. + # - alert: RedisMemoryHigh + # expr: > + # redis_memory_used_bytes{service="{{ template "prometheus-redis-exporter.fullname" . }}"} * 100 + # / + # redis_memory_max_bytes{service="{{ template "prometheus-redis-exporter.fullname" . }}"} + # > 90 <= 100 + # for: 2m + # labels: + # severity: error + # annotations: + # summary: Redis instance {{ "{{ $labels.instance }}" }} is using too much memory + # description: | + # Redis instance {{ "{{ $labels.instance }}" }} is using {{ "{{ $value }}" }}% of its available memory. + # - alert: RedisKeyEviction + # expr: | + # increase(redis_evicted_keys_total{service="{{ template "prometheus-redis-exporter.fullname" . }}"}[5m]) > 0 + # for: 1s + # labels: + # severity: error + # annotations: + # summary: Redis instance {{ "{{ $labels.instance }}" }} has evicted keys + # description: | + # Redis instance {{ "{{ $labels.instance }}" }} has evicted {{ "{{ $value }}" }} keys in the last 5 minutes. + # Used to mount a LUA-Script via config map and use it for metrics-collection # script: # configmap: prometheus-redis-exporter-script