| {{- if .Values.prometheus.prometheusRule.enabled }} |
| apiVersion: monitoring.coreos.com/v1 |
| kind: PrometheusRule |
| metadata: |
| name: {{ template "metallb.fullname" . }} |
| labels: |
| {{- include "metallb.labels" . | nindent 4 }} |
| {{- if .Values.prometheus.prometheusRule.additionalLabels }} |
| {{ toYaml .Values.prometheus.prometheusRule.additionalLabels | indent 4 }} |
| {{- end }} |
| {{- if .Values.prometheus.prometheusRule.annotations }} |
| annotations: |
| {{ toYaml .Values.prometheus.prometheusRule.annotations | indent 4 }} |
| {{- end }} |
| spec: |
| groups: |
| - name: {{ template "metallb.fullname" . }}.rules |
| rules: |
| {{- if .Values.prometheus.prometheusRule.staleConfig.enabled }} |
| - alert: MetalLBStaleConfig |
| annotations: |
| message: {{`'{{ $labels.job }} - MetalLB {{ $labels.container }} on {{ $labels.pod |
| }} has a stale config for > 1 minute'`}} |
| expr: metallb_k8s_client_config_stale_bool{job="{{ include "metallb.name" . }}"} == 1 |
| for: 1m |
| {{- with .Values.prometheus.prometheusRule.staleConfig.labels }} |
| labels: |
| {{- toYaml . | nindent 8 }} |
| {{- end }} |
| {{- end }} |
| {{- if .Values.prometheus.prometheusRule.configNotLoaded.enabled }} |
| - alert: MetalLBConfigNotLoaded |
| annotations: |
| message: {{`'{{ $labels.job }} - MetalLB {{ $labels.container }} on {{ $labels.pod |
| }} has not loaded for > 1 minute'`}} |
| expr: metallb_k8s_client_config_loaded_bool{job="{{ include "metallb.name" . }}"} == 0 |
| for: 1m |
| {{- with .Values.prometheus.prometheusRule.configNotLoaded.labels }} |
| labels: |
| {{- toYaml . | nindent 8 }} |
| {{- end }} |
| {{- end }} |
| {{- if .Values.prometheus.prometheusRule.addressPoolExhausted.enabled }} |
| - alert: MetalLBAddressPoolExhausted |
| annotations: |
| message: {{`'{{ $labels.job }} - MetalLB {{ $labels.container }} on {{ $labels.pod |
| }} has exhausted address pool {{ $labels.pool }} for > 1 minute'`}} |
| expr: metallb_allocator_addresses_in_use_total >= on(pool) metallb_allocator_addresses_total |
| for: 1m |
| {{- with .Values.prometheus.prometheusRule.addressPoolExhausted.labels }} |
| labels: |
| {{- toYaml . | nindent 8 }} |
| {{- end }} |
| {{- end }} |
| |
| {{- if .Values.prometheus.prometheusRule.addressPoolUsage.enabled }} |
| {{- range .Values.prometheus.prometheusRule.addressPoolUsage.thresholds }} |
| - alert: MetalLBAddressPoolUsage{{ .percent }}Percent |
| annotations: |
| message: {{`'{{ $labels.job }} - MetalLB {{ $labels.container }} on {{ $labels.pod |
| }} has address pool {{ $labels.pool }} past `}}{{ .percent }}{{`% usage for > 1 minute'`}} |
| expr: ( metallb_allocator_addresses_in_use_total / on(pool) metallb_allocator_addresses_total ) * 100 > {{ .percent }} |
| {{- with .labels }} |
| labels: |
| {{- toYaml . | nindent 8 }} |
| {{- end }} |
| {{- end }} |
| {{- end }} |
| {{- if .Values.prometheus.prometheusRule.bgpSessionDown.enabled }} |
| - alert: MetalLBBGPSessionDown |
| annotations: |
| message: {{`'{{ $labels.job }} - MetalLB {{ $labels.container }} on {{ $labels.pod |
| }} has BGP session {{ $labels.peer }} down for > 1 minute'`}} |
| expr: metallb_bgp_session_up{job="{{ include "metallb.name" . }}"} == 0 |
| for: 1m |
| {{- with .Values.prometheus.prometheusRule.bgpSessionDown.labels }} |
| labels: |
| {{- toYaml . | nindent 8 }} |
| {{- end }} |
| {{- end }} |
| {{- with .Values.prometheus.prometheusRule.extraAlerts }} |
| {{- toYaml . | nindent 4 }} |
| {{- end}} |
| {{- end }} |