{{- 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 }}