From e566e64fe79e0c9a1ad9d701dc271f6f8710841c Mon Sep 17 00:00:00 2001 From: WrenIX Date: Fri, 12 Apr 2024 09:25:43 +0200 Subject: [PATCH] feat(headscale): add default prometheus rules --- headscale/Chart.yaml | 2 +- headscale/templates/prometheus-rules.yaml | 32 +++++++++++++++++++++++ headscale/values.yaml | 8 +++++- 3 files changed, 40 insertions(+), 2 deletions(-) create mode 100644 headscale/templates/prometheus-rules.yaml diff --git a/headscale/Chart.yaml b/headscale/Chart.yaml index 978581e..60f131b 100644 --- a/headscale/Chart.yaml +++ b/headscale/Chart.yaml @@ -3,7 +3,7 @@ name: headscale description: An open source, self-hosted implementation of the Tailscale control server. icon: https://raw.githubusercontent.com/juanfont/headscale/56a7b1e34952c3e0306a134b2be9b4277f5d8d6e/docs/logo/headscale3-dots.svg type: application -version: 0.2.6 +version: 0.3.0 # renovate: image=docker.io/headscale/headscale appVersion: "0.22.3" maintainers: diff --git a/headscale/templates/prometheus-rules.yaml b/headscale/templates/prometheus-rules.yaml new file mode 100644 index 0000000..2bf472a --- /dev/null +++ b/headscale/templates/prometheus-rules.yaml @@ -0,0 +1,32 @@ +{{- if .Values.prometheus.rules.enabled }} +apiVersion: monitoring.coreos.com/v1 +kind: PrometheusRule +metadata: + name: {{ include "headscale.fullname" . }} + labels: + {{- include "headscale.labels" . | nindent 4 }} + {{- with .Values.prometheus.rules.labels }} + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + groups: + {{- if .Values.prometheus.rules.defaults.enabled }} + - name: {{ template "headscale.fullname" . }}-Defaults + rules: + {{- range $key, $value := .Values.prometheus.rules.defaults.lastUpdates }} + - alert: "Headscale: offline machines" + expr: 'time() - sum(headscale_last_update_seconds{ {{ $.Values.prometheus.rules.defaults.filter }} }) without(endpoint,container,pod,instance,service,namespace,job) > {{ $value }}' + for: "1m" + labels: + severity: "{{ $key }}" + {{` + annotations: + summary: "{{ $labels.machine }} of {{ $labels.user }} is offline for {{ parseDuration $value }}" + `}} + {{- end }} + {{- end }} + {{- if .Values.prometheus.rules.additionalRules }} + - name: {{ template "headscale.fullname" . }}-Additional + rules: {{- toYaml .Values.prometheus.rules.additionalRules | nindent 4 }} + {{- end }} +{{- end }} diff --git a/headscale/values.yaml b/headscale/values.yaml index 8e3e0d7..08806e1 100644 --- a/headscale/values.yaml +++ b/headscale/values.yaml @@ -80,7 +80,13 @@ prometheus: rules: enabled: false labels: {} - # current no default alertrules are provided + defaults: + enabled: true + filter: "" + lastUpdates: + critical: 3600 + warning: 600 + info: 60 additionalRules: [] ## Enable persistence using Persistent Volume Claims