diff --git a/clusters/cl01tl/manifests/directus/Deployment-directus.yaml b/clusters/cl01tl/manifests/directus/Deployment-directus.yaml index 1861c0b75..dea48b332 100644 --- a/clusters/cl01tl/manifests/directus/Deployment-directus.yaml +++ b/clusters/cl01tl/manifests/directus/Deployment-directus.yaml @@ -164,7 +164,7 @@ spec: secretKeyRef: key: metric-token name: directus-metric-token - image: ghcr.io/directus/directus:11.17.3@sha256:ae6ab737fd04077d295bbefa545cc4aefccc206e3d0120c83812f9b482a8c9a5 + image: ghcr.io/directus/directus:11.17.4@sha256:eb326f679ae847c0a776f93b972761dc2ebe84980e0b9d274a6bc31cd62809f7 name: main resources: requests: diff --git a/clusters/cl01tl/manifests/directus/PodMonitor-directus-valkey.yaml b/clusters/cl01tl/manifests/directus/PodMonitor-directus-valkey.yaml new file mode 100644 index 000000000..500722199 --- /dev/null +++ b/clusters/cl01tl/manifests/directus/PodMonitor-directus-valkey.yaml @@ -0,0 +1,23 @@ +apiVersion: monitoring.coreos.com/v1 +kind: PodMonitor +metadata: + name: directus-valkey + labels: + helm.sh/chart: valkey-0.9.4 + app.kubernetes.io/name: valkey + app.kubernetes.io/instance: directus + app.kubernetes.io/version: "9.0.3" + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/part-of: valkey + app.kubernetes.io/component: podmonitor +spec: + podMetricsEndpoints: + - port: metrics + interval: 30s + namespaceSelector: + matchNames: + - directus + selector: + matchLabels: + app.kubernetes.io/name: valkey + app.kubernetes.io/instance: directus diff --git a/clusters/cl01tl/manifests/directus/PrometheusRule-directus-valkey.yaml b/clusters/cl01tl/manifests/directus/PrometheusRule-directus-valkey.yaml new file mode 100644 index 000000000..f4f7535f7 --- /dev/null +++ b/clusters/cl01tl/manifests/directus/PrometheusRule-directus-valkey.yaml @@ -0,0 +1,47 @@ +apiVersion: monitoring.coreos.com/v1 +kind: PrometheusRule +metadata: + name: directus-valkey + labels: + helm.sh/chart: valkey-0.9.4 + app.kubernetes.io/name: valkey + app.kubernetes.io/instance: directus + app.kubernetes.io/version: "9.0.3" + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/part-of: valkey +spec: + groups: + - name: directus-valkey + rules: + - alert: ValkeyDown + annotations: + description: Valkey instance {{ $labels.instance }} is down. + summary: Valkey instance {{ $labels.instance }} down + expr: | + redis_up{service="directus-valkey-metrics"} == 0 + for: 2m + labels: + severity: error + - alert: ValkeyMemoryHigh + annotations: + description: | + Valkey instance {{ $labels.instance }} is using {{ $value }}% of its available memory. + summary: Valkey instance {{ $labels.instance }} is using too much memory + expr: | + redis_memory_used_bytes{service="directus-valkey-metrics"} * 100 + / + redis_memory_max_bytes{service="directus-valkey-metrics"} + > 90 <= 100 + for: 2m + labels: + severity: error + - alert: ValkeyKeyEviction + annotations: + description: | + Valkey instance {{ $labels.instance }} has evicted {{ $value }} keys in the last 5 minutes. + summary: Valkey instance {{ $labels.instance }} has evicted keys + expr: | + increase(redis_evicted_keys_total{service="directus-valkey-metrics"}[5m]) > 0 + for: 1s + labels: + severity: error diff --git a/clusters/cl01tl/manifests/directus/Service-directus-valkey-metrics.yaml b/clusters/cl01tl/manifests/directus/Service-directus-valkey-metrics.yaml new file mode 100644 index 000000000..fb9d35d23 --- /dev/null +++ b/clusters/cl01tl/manifests/directus/Service-directus-valkey-metrics.yaml @@ -0,0 +1,23 @@ +apiVersion: v1 +kind: Service +metadata: + name: directus-valkey-metrics + labels: + helm.sh/chart: valkey-0.9.4 + app.kubernetes.io/name: valkey + app.kubernetes.io/instance: directus + app.kubernetes.io/version: "9.0.3" + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: metrics + app.kubernetes.io/part-of: valkey + annotations: +spec: + type: ClusterIP + ports: + - name: metrics + port: 9121 + protocol: TCP + targetPort: metrics + selector: + app.kubernetes.io/name: valkey + app.kubernetes.io/instance: directus diff --git a/clusters/cl01tl/manifests/directus/ServiceMonitor-directus-valkey.yaml b/clusters/cl01tl/manifests/directus/ServiceMonitor-directus-valkey.yaml new file mode 100644 index 000000000..56e961fff --- /dev/null +++ b/clusters/cl01tl/manifests/directus/ServiceMonitor-directus-valkey.yaml @@ -0,0 +1,24 @@ +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: directus-valkey + labels: + helm.sh/chart: valkey-0.9.4 + app.kubernetes.io/name: valkey + app.kubernetes.io/instance: directus + app.kubernetes.io/version: "9.0.3" + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/part-of: valkey + app.kubernetes.io/component: service-monitor +spec: + endpoints: + - port: metrics + interval: 30s + namespaceSelector: + matchNames: + - directus + selector: + matchLabels: + app.kubernetes.io/name: valkey + app.kubernetes.io/instance: directus + app.kubernetes.io/component: metrics diff --git a/clusters/cl01tl/manifests/directus/StatefulSet-directus-valkey.yaml b/clusters/cl01tl/manifests/directus/StatefulSet-directus-valkey.yaml index 8bcc6729a..12f8d096f 100644 --- a/clusters/cl01tl/manifests/directus/StatefulSet-directus-valkey.yaml +++ b/clusters/cl01tl/manifests/directus/StatefulSet-directus-valkey.yaml @@ -110,6 +110,34 @@ spec: mountPath: /data - name: valkey-acl mountPath: /etc/valkey + - name: metrics + image: ghcr.io/oliver006/redis_exporter:v1.82.0@sha256:6a97d4dd743b533e1f950c677b87d880e44df363c61af3f406fc9e53ed65ee03 + imagePullPolicy: "IfNotPresent" + ports: + - name: metrics + containerPort: 9121 + startupProbe: + tcpSocket: + port: metrics + livenessProbe: + tcpSocket: + port: metrics + readinessProbe: + httpGet: + path: / + port: metrics + resources: + requests: + cpu: 1m + memory: 10M + env: + - name: REDIS_ALIAS + value: directus-valkey + - name: REDIS_PASSWORD + valueFrom: + secretKeyRef: + name: directus-valkey-config + key: default volumes: - name: scripts configMap: