|
| 1 | +{{- $clusterRef := .Values.rabbitmq.cluster.name | default (include "rabbitmq-cluster.fullname" .) }} |
| 2 | +{{- $vhost := "/" }} |
| 3 | +{{- if $.Values.rabbitmq.vhost.enabled }} |
| 4 | + {{- $vhost = (.Values.rabbitmq.vhost.name | default (include "rabbitmq-cluster.fullname" .)) }} |
| 5 | +{{- end }} |
| 6 | + |
| 7 | +{{- if and .Values.monitoring.enabled (.Capabilities.APIVersions.Has "monitoring.coreos.com/v1") }} |
| 8 | +{{- if .Values.monitoring.serviceMonitor.enabled }} |
| 9 | +--- |
| 10 | +apiVersion: monitoring.coreos.com/v1 |
| 11 | +kind: ServiceMonitor |
| 12 | +metadata: |
| 13 | + name: {{ $clusterRef | quote }} |
| 14 | + labels: |
| 15 | + {{- include "rabbitmq-cluster.labels" . | nindent 4 }} |
| 16 | +spec: |
| 17 | + selector: |
| 18 | + matchLabels: |
| 19 | + {{- include "rabbitmq-cluster.selectorLabels" . | nindent 6 }} |
| 20 | + namespaceSelector: |
| 21 | + matchNames: |
| 22 | + - {{ .Release.Namespace | quote }} |
| 23 | + endpoints: |
| 24 | + - port: prometheus |
| 25 | + scheme: http |
| 26 | + interval: 15s |
| 27 | + scrapeTimeout: 14s |
| 28 | + |
| 29 | + - port: prometheus-tls |
| 30 | + scheme: https |
| 31 | + interval: 15s |
| 32 | + scrapeTimeout: 14s |
| 33 | + tlsConfig: |
| 34 | + insecureSkipVerify: true # set to false and uncomment lines below to enable tls verification |
| 35 | + # ca: |
| 36 | + # secret: |
| 37 | + # key: ca.crt |
| 38 | + # name: tls-secret # name of the secret containing the CA cert which signed the RabbitMQ Prometheus TLS cert |
| 39 | + # serverName: '*.RABBITMQ-INSTANCE-NAME.NAMESPACE.svc.cluster.local' |
| 40 | + |
| 41 | + - port: prometheus |
| 42 | + scheme: http |
| 43 | + path: /metrics/detailed |
| 44 | + params: |
| 45 | + family: |
| 46 | + - queue_coarse_metrics |
| 47 | + - queue_metrics |
| 48 | + interval: 15s |
| 49 | + scrapeTimeout: 14s |
| 50 | + |
| 51 | + - port: prometheus-tls |
| 52 | + scheme: https |
| 53 | + path: /metrics/detailed |
| 54 | + params: |
| 55 | + family: |
| 56 | + - queue_coarse_metrics |
| 57 | + - queue_metrics |
| 58 | + interval: 15s |
| 59 | + scrapeTimeout: 14s |
| 60 | + tlsConfig: |
| 61 | + insecureSkipVerify: true |
| 62 | +{{- end }} {{/* END if servicemonitor enabled */}} |
| 63 | + |
| 64 | +{{- range $queue := .Values.rabbitmq.topology.queues }} |
| 65 | +{{- if ($queue.alert_when_has_messages | default false ) }} |
| 66 | +--- |
| 67 | +apiVersion: monitoring.coreos.com/v1 |
| 68 | +kind: PrometheusRule |
| 69 | +metadata: |
| 70 | + name: {{ (printf "%s-%s-%s-unroutable" $clusterRef $vhost $queue.name) | include "com.klicktipp.slugify-string" | quote }} |
| 71 | + labels: |
| 72 | + {{- include "rabbitmq-cluster.labels" $ | nindent 4 }} |
| 73 | +spec: |
| 74 | + groups: |
| 75 | + - name: rabbitmq.queue.alerts |
| 76 | + rules: |
| 77 | + - alert: RabbitMQQueueNotEmpty |
| 78 | + expr: | |
| 79 | + max( |
| 80 | + rabbitmq_detailed_queue_messages{queue={{ $queue.name | quote }}} |
| 81 | + ) > 0 |
| 82 | + for: 1m |
| 83 | + labels: |
| 84 | + severity: warning |
| 85 | + annotations: |
| 86 | + summary: "RabbitMQ fallback queue has messages" |
| 87 | + description: "Queue {{ $queue.name }} has {{`{{`}} $value {{`}}`}} messages (> 0)." |
| 88 | + |
| 89 | + - alert: RabbitMQQueueHighBacklog |
| 90 | + expr: | |
| 91 | + max( |
| 92 | + rabbitmq_detailed_queue_messages{queue={{ $queue.name | quote }}} |
| 93 | + ) > 1000 |
| 94 | + for: 5m |
| 95 | + labels: |
| 96 | + severity: critical |
| 97 | + annotations: |
| 98 | + summary: "RabbitMQ fallback queue backlog is critical" |
| 99 | + description: "Queue {{ $queue.name }} has {{`{{`}} $value {{`}}`}} messages (> 1000). Immediate action required." |
| 100 | + |
| 101 | +{{- end }} {{/* END if alert_when_has_messages enabled */}} |
| 102 | +{{- end }} {{/* END queue loop */}} |
| 103 | + |
| 104 | +{{- end }} {{/* END if monitoring enabled */}} |
0 commit comments