98 lines
4.1 KiB
YAML
98 lines
4.1 KiB
YAML
{{- if and .Values.cluster.monitoring.enabled .Values.cluster.monitoring.prometheusRule.enabled -}}
|
|
apiVersion: monitoring.coreos.com/v1
|
|
kind: PrometheusRule
|
|
metadata:
|
|
name: {{ include "cluster.name" . }}-alert-rules
|
|
namespace: {{ .Release.Namespace }}
|
|
labels:
|
|
{{- include "cluster.labels" . | nindent 4 }}
|
|
{{- with .Values.cluster.additionalLabels }}
|
|
{{ toYaml . | nindent 4 }}
|
|
{{- end }}
|
|
spec:
|
|
groups:
|
|
- name: cloudnative-pg/{{ include "cluster.name" . }}
|
|
rules:
|
|
{{- $dict := dict "excludeRules" .Values.cluster.monitoring.prometheusRule.excludeRules -}}
|
|
{{- $_ := set $dict "value" "{{`{{`}} $value {{`}}`}}" -}}
|
|
{{- $_ := set $dict "namespace" .Release.Namespace -}}
|
|
{{- $_ := set $dict "cluster" (printf "%s-cluster" (include "cluster.name" .) ) -}}
|
|
{{- $_ := set $dict "labels" (dict "job" "{{`{{`}} $labels.job {{`}}`}}" "node" "{{`{{`}} $labels.node {{`}}`}}" "pod" "{{`{{`}} $labels.pod {{`}}`}}") -}}
|
|
{{- $_ := set $dict "podSelector" (printf "%s-cluster-([1-9][0-9]*)$" (include "cluster.name" .) ) -}}
|
|
{{- $_ := set $dict "Values" .Values -}}
|
|
{{- $_ := set $dict "Template" .Template -}}
|
|
{{- range $path, $_ := .Files.Glob "prometheus_rules/**.yaml" }}
|
|
{{- $tpl := tpl ($.Files.Get $path) $dict | nindent 10 | trim -}}
|
|
{{- with $tpl }}
|
|
- {{ $tpl }}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
{{- if .Values.cluster.monitoring.prometheusRule.enableDefaultRules }}
|
|
- name: cloudnative-pg/default-rules
|
|
rules:
|
|
- alert: LongRunningTransaction
|
|
annotations:
|
|
description: Pod {{`{{`}} $labels.pod {{`}}`}} is taking more than 5 minutes (300 seconds) for a query.
|
|
summary: A query is taking longer than 5 minutes.
|
|
expr: |-
|
|
cnpg_backends_max_tx_duration_seconds > 300
|
|
for: 1m
|
|
labels:
|
|
severity: warning
|
|
- alert: BackendsWaiting
|
|
annotations:
|
|
description: Pod {{`{{`}} $labels.pod {{`}}`}} has been waiting for longer than 5 minutes
|
|
summary: If a backend is waiting for longer than 5 minutes
|
|
expr: |-
|
|
cnpg_backends_waiting_total > 300
|
|
for: 1m
|
|
labels:
|
|
severity: warning
|
|
- alert: PGDatabaseXidAge
|
|
annotations:
|
|
description: Over 300,000,000 transactions from frozen xid on pod {{`{{`}} $labels.pod {{`}}`}}
|
|
summary: Number of transactions from the frozen XID to the current one
|
|
expr: |-
|
|
cnpg_pg_database_xid_age > 300000000
|
|
for: 1m
|
|
labels:
|
|
severity: warning
|
|
- alert: PGReplication
|
|
annotations:
|
|
description: Standby is lagging behind by over 300 seconds (5 minutes)
|
|
summary: The standby is lagging behind the primary
|
|
expr: |-
|
|
cnpg_pg_replication_lag > 300
|
|
for: 1m
|
|
labels:
|
|
severity: warning
|
|
- alert: LastFailedArchiveTime
|
|
annotations:
|
|
description: Archiving failed for {{`{{`}} $labels.pod {{`}}`}}
|
|
summary: Checks the last time archiving failed. Will be < 0 when it has not failed.
|
|
expr: |-
|
|
(cnpg_pg_stat_archiver_last_failed_time - cnpg_pg_stat_archiver_last_archived_time) > 1
|
|
for: 1m
|
|
labels:
|
|
severity: warning
|
|
- alert: DatabaseDeadlockConflicts
|
|
annotations:
|
|
description: There are over 10 deadlock conflicts in {{`{{`}} $labels.pod {{`}}`}}
|
|
summary: Checks the number of database conflicts
|
|
expr: |-
|
|
cnpg_pg_stat_database_deadlocks > 10
|
|
for: 1m
|
|
labels:
|
|
severity: warning
|
|
- alert: ReplicaFailingReplication
|
|
annotations:
|
|
description: Replica {{`{{`}} $labels.pod {{`}}`}} is failing to replicate
|
|
summary: Checks if the replica is failing to replicate
|
|
expr: |-
|
|
cnpg_pg_replication_in_recovery > cnpg_pg_replication_is_wal_receiver_up
|
|
for: 1m
|
|
labels:
|
|
severity: warning
|
|
{{- end }}
|
|
{{ end }}
|