| Giorgi Lekveishvili | 285ab62 | 2023-11-22 13:50:45 +0400 | [diff] [blame] | 1 | {{- if .Values.prometheus.prometheusRule.enabled }} |
| 2 | apiVersion: monitoring.coreos.com/v1 |
| 3 | kind: PrometheusRule |
| 4 | metadata: |
| 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 }} |
| 15 | spec: |
| 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 }} |