blob: 463aacafb3fb3cacd45e5448b443f70e2814588e [file] [log] [blame]
Giorgi Lekveishvili285ab622023-11-22 13:50:45 +04001{{- if .Values.prometheus.prometheusRule.enabled }}
2apiVersion: monitoring.coreos.com/v1
3kind: PrometheusRule
4metadata:
5 name: {{ template "metallb.fullname" . }}
6 labels:
7 {{- include "metallb.labels" . | nindent 4 }}
8 {{- if .Values.prometheus.prometheusRule.additionalLabels }}
9{{ toYaml .Values.prometheus.prometheusRule.additionalLabels | indent 4 }}
10 {{- end }}
11 {{- if .Values.prometheus.prometheusRule.annotations }}
12 annotations:
13{{ toYaml .Values.prometheus.prometheusRule.annotations | indent 4 }}
14 {{- end }}
15spec:
16 groups:
17 - name: {{ template "metallb.fullname" . }}.rules
18 rules:
19 {{- if .Values.prometheus.prometheusRule.staleConfig.enabled }}
20 - alert: MetalLBStaleConfig
21 annotations:
22 message: {{`'{{ $labels.job }} - MetalLB {{ $labels.container }} on {{ $labels.pod
23 }} has a stale config for > 1 minute'`}}
24 expr: metallb_k8s_client_config_stale_bool{job="{{ include "metallb.name" . }}"} == 1
25 for: 1m
26 {{- with .Values.prometheus.prometheusRule.staleConfig.labels }}
27 labels:
28 {{- toYaml . | nindent 8 }}
29 {{- end }}
30 {{- end }}
31 {{- if .Values.prometheus.prometheusRule.configNotLoaded.enabled }}
32 - alert: MetalLBConfigNotLoaded
33 annotations:
34 message: {{`'{{ $labels.job }} - MetalLB {{ $labels.container }} on {{ $labels.pod
35 }} has not loaded for > 1 minute'`}}
36 expr: metallb_k8s_client_config_loaded_bool{job="{{ include "metallb.name" . }}"} == 0
37 for: 1m
38 {{- with .Values.prometheus.prometheusRule.configNotLoaded.labels }}
39 labels:
40 {{- toYaml . | nindent 8 }}
41 {{- end }}
42 {{- end }}
43 {{- if .Values.prometheus.prometheusRule.addressPoolExhausted.enabled }}
44 - alert: MetalLBAddressPoolExhausted
45 annotations:
46 message: {{`'{{ $labels.job }} - MetalLB {{ $labels.container }} on {{ $labels.pod
47 }} has exhausted address pool {{ $labels.pool }} for > 1 minute'`}}
48 expr: metallb_allocator_addresses_in_use_total >= on(pool) metallb_allocator_addresses_total
49 for: 1m
50 {{- with .Values.prometheus.prometheusRule.addressPoolExhausted.labels }}
51 labels:
52 {{- toYaml . | nindent 8 }}
53 {{- end }}
54 {{- end }}
55
56 {{- if .Values.prometheus.prometheusRule.addressPoolUsage.enabled }}
57 {{- range .Values.prometheus.prometheusRule.addressPoolUsage.thresholds }}
58 - alert: MetalLBAddressPoolUsage{{ .percent }}Percent
59 annotations:
60 message: {{`'{{ $labels.job }} - MetalLB {{ $labels.container }} on {{ $labels.pod
61 }} has address pool {{ $labels.pool }} past `}}{{ .percent }}{{`% usage for > 1 minute'`}}
62 expr: ( metallb_allocator_addresses_in_use_total / on(pool) metallb_allocator_addresses_total ) * 100 > {{ .percent }}
63 {{- with .labels }}
64 labels:
65 {{- toYaml . | nindent 8 }}
66 {{- end }}
67 {{- end }}
68 {{- end }}
69 {{- if .Values.prometheus.prometheusRule.bgpSessionDown.enabled }}
70 - alert: MetalLBBGPSessionDown
71 annotations:
72 message: {{`'{{ $labels.job }} - MetalLB {{ $labels.container }} on {{ $labels.pod
73 }} has BGP session {{ $labels.peer }} down for > 1 minute'`}}
74 expr: metallb_bgp_session_up{job="{{ include "metallb.name" . }}"} == 0
75 for: 1m
76 {{- with .Values.prometheus.prometheusRule.bgpSessionDown.labels }}
77 labels:
78 {{- toYaml . | nindent 8 }}
79 {{- end }}
80 {{- end }}
81 {{- with .Values.prometheus.prometheusRule.extraAlerts }}
82 {{- toYaml . | nindent 4 }}
83 {{- end}}
84{{- end }}