feat(matrix): wire Synapse into monitoring stack

- New headless Service matrix-synapse-metrics exposing port 9090
  (Synapse's /_synapse/metrics listener), labeled matrix_metrics=enabled
- VictoriaMetrics scrape job 'matrix' targets endpoints in matrix ns
  with that label + port name 'metrics'
- Grafana picks up the official Synapse dashboard from
  element-hq/synapse v1.152.0 contrib/grafana/synapse.json via URL

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Felix Wolf 2026-05-03 18:11:07 +02:00
parent 137705bfe0
commit 0095c7ee7f
11 changed files with 123 additions and 4 deletions

View file

@ -64,6 +64,9 @@ dashboards:
gnetId: 15757 gnetId: 15757
revision: 37 revision: 37
datasource: VictoriaMetrics datasource: VictoriaMetrics
matrix-synapse:
url: https://raw.githubusercontent.com/element-hq/synapse/v1.152.0/contrib/grafana/synapse.json
datasource: VictoriaMetrics
ocis: ocis:
datasource: VictoriaMetrics datasource: VictoriaMetrics
json: |- json: |-

View file

@ -0,0 +1,24 @@
#@ load("@ytt:data", "data")
#@ ns = data.values.application.namespace
---
apiVersion: v1
kind: Service
metadata:
name: matrix-synapse-metrics
namespace: #@ ns
labels:
matrix_metrics: enabled
spec:
type: ClusterIP
clusterIP: None
selector:
app.kubernetes.io/component: synapse
app.kubernetes.io/instance: matrix-synapse
app.kubernetes.io/name: matrix-synapse
ports:
- name: metrics
port: 9090
targetPort: metrics
protocol: TCP

View file

@ -94,3 +94,17 @@ server:
target_label: ocis_service target_label: ocis_service
- source_labels: [__meta_kubernetes_pod_name] - source_labels: [__meta_kubernetes_pod_name]
target_label: pod target_label: pod
- job_name: synapse
metrics_path: /_synapse/metrics
kubernetes_sd_configs:
- role: endpoints
namespaces:
names: [matrix]
relabel_configs:
- source_labels: [__meta_kubernetes_service_label_matrix_metrics, __meta_kubernetes_endpoint_port_name]
action: keep
regex: enabled;metrics
- source_labels: [__meta_kubernetes_pod_name]
target_label: pod
- target_label: index
replacement: "0"

View file

@ -19,7 +19,7 @@ data:
name: VictoriaMetrics name: VictoriaMetrics
type: prometheus type: prometheus
url: http://victoria-metrics-single-server.monitoring.svc:8428 url: http://victoria-metrics-single-server.monitoring.svc:8428
download_dashboards.sh: "#!/usr/bin/env sh\nset -euf\nmkdir -p /var/lib/grafana/dashboards/default\n\ncurl -skf \\\n--connect-timeout 60 \\\n--max-time 60 \\\n-H \"Accept: application/json\" \\\n-H \"Content-Type: application/json;charset=UTF-8\" \\\n \"https://grafana.com/api/dashboards/15757/revisions/37/download\" \\\n | sed '/-- .* --/! s/\"datasource\":.*,/\"datasource\": \"VictoriaMetrics\",/g' \\\n> \"/var/lib/grafana/dashboards/default/kubernetes-cluster.json\"\n \ncurl -skf \\\n--connect-timeout 60 \\\n--max-time 60 \\\n-H \"Accept: application/json\" \\\n-H \"Content-Type: application/json;charset=UTF-8\" \\\n \"https://grafana.com/api/dashboards/1860/revisions/37/download\" \\\n | sed '/-- .* --/! s/\"datasource\":.*,/\"datasource\": \"VictoriaMetrics\",/g' \\\n> \"/var/lib/grafana/dashboards/default/node-exporter.json\"\n" download_dashboards.sh: "#!/usr/bin/env sh\nset -euf\nmkdir -p /var/lib/grafana/dashboards/default\n\ncurl -skf \\\n--connect-timeout 60 \\\n--max-time 60 \\\n-H \"Accept: application/json\" \\\n-H \"Content-Type: application/json;charset=UTF-8\" \\\n \"https://grafana.com/api/dashboards/15757/revisions/37/download\" \\\n | sed '/-- .* --/! s/\"datasource\":.*,/\"datasource\": \"VictoriaMetrics\",/g' \\\n> \"/var/lib/grafana/dashboards/default/kubernetes-cluster.json\"\n \ncurl -skf \\\n--connect-timeout 60 \\\n--max-time 60 \\\n-H \"Accept: application/json\" \\\n-H \"Content-Type: application/json;charset=UTF-8\" \\\n \"https://raw.githubusercontent.com/element-hq/synapse/v1.152.0/contrib/grafana/synapse.json\" \\\n | sed '/-- .* --/! s/\"datasource\":.*,/\"datasource\": \"VictoriaMetrics\",/g' \\\n> \"/var/lib/grafana/dashboards/default/matrix-synapse.json\"\n \ncurl -skf \\\n--connect-timeout 60 \\\n--max-time 60 \\\n-H \"Accept: application/json\" \\\n-H \"Content-Type: application/json;charset=UTF-8\" \\\n \"https://grafana.com/api/dashboards/1860/revisions/37/download\" \\\n | sed '/-- .* --/! s/\"datasource\":.*,/\"datasource\": \"VictoriaMetrics\",/g' \\\n> \"/var/lib/grafana/dashboards/default/node-exporter.json\"\n"
grafana.ini: | grafana.ini: |
[analytics] [analytics]
check_for_updates = true check_for_updates = true

View file

@ -22,7 +22,7 @@ spec:
template: template:
metadata: metadata:
annotations: annotations:
checksum/config: f0cad22500d4e1577b09e33968d5ed873452b63eee6d4fedf9db55f640704755 checksum/config: 5be4357fd6e211fab2024add34069a0a3555e629a11081fb4461a2c09fdeff49
checksum/dashboards-json-config: 02278b031cbf8831bf02b7a4256e61be096aaeb31d9a25dabd282b6933b1abcb checksum/dashboards-json-config: 02278b031cbf8831bf02b7a4256e61be096aaeb31d9a25dabd282b6933b1abcb
checksum/sc-dashboard-provider-config: e70bf6a851099d385178a76de9757bb0bef8299da6d8443602590e44f05fdf24 checksum/sc-dashboard-provider-config: e70bf6a851099d385178a76de9757bb0bef8299da6d8443602590e44f05fdf24
kubectl.kubernetes.io/default-container: grafana kubectl.kubernetes.io/default-container: grafana

View file

@ -0,0 +1,21 @@
apiVersion: v1
kind: Service
metadata:
annotations:
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
labels:
matrix_metrics: enabled
name: matrix-synapse-metrics
namespace: matrix
spec:
clusterIP: None
ports:
- name: metrics
port: 9090
protocol: TCP
targetPort: metrics
selector:
app.kubernetes.io/component: synapse
app.kubernetes.io/instance: matrix-synapse
app.kubernetes.io/name: matrix-synapse
type: ClusterIP

View file

@ -101,6 +101,24 @@ data:
- source_labels: - source_labels:
- __meta_kubernetes_pod_name - __meta_kubernetes_pod_name
target_label: pod target_label: pod
- job_name: synapse
kubernetes_sd_configs:
- namespaces:
names:
- matrix
role: endpoints
metrics_path: /_synapse/metrics
relabel_configs:
- action: keep
regex: enabled;metrics
source_labels:
- __meta_kubernetes_service_label_matrix_metrics
- __meta_kubernetes_endpoint_port_name
- source_labels:
- __meta_kubernetes_pod_name
target_label: pod
- replacement: "0"
target_label: index
kind: ConfigMap kind: ConfigMap
metadata: metadata:
annotations: annotations:

View file

@ -19,7 +19,7 @@ data:
name: VictoriaMetrics name: VictoriaMetrics
type: prometheus type: prometheus
url: http://victoria-metrics-single-server.monitoring.svc:8428 url: http://victoria-metrics-single-server.monitoring.svc:8428
download_dashboards.sh: "#!/usr/bin/env sh\nset -euf\nmkdir -p /var/lib/grafana/dashboards/default\n\ncurl -skf \\\n--connect-timeout 60 \\\n--max-time 60 \\\n-H \"Accept: application/json\" \\\n-H \"Content-Type: application/json;charset=UTF-8\" \\\n \"https://grafana.com/api/dashboards/15757/revisions/37/download\" \\\n | sed '/-- .* --/! s/\"datasource\":.*,/\"datasource\": \"VictoriaMetrics\",/g' \\\n> \"/var/lib/grafana/dashboards/default/kubernetes-cluster.json\"\n \ncurl -skf \\\n--connect-timeout 60 \\\n--max-time 60 \\\n-H \"Accept: application/json\" \\\n-H \"Content-Type: application/json;charset=UTF-8\" \\\n \"https://grafana.com/api/dashboards/1860/revisions/37/download\" \\\n | sed '/-- .* --/! s/\"datasource\":.*,/\"datasource\": \"VictoriaMetrics\",/g' \\\n> \"/var/lib/grafana/dashboards/default/node-exporter.json\"\n" download_dashboards.sh: "#!/usr/bin/env sh\nset -euf\nmkdir -p /var/lib/grafana/dashboards/default\n\ncurl -skf \\\n--connect-timeout 60 \\\n--max-time 60 \\\n-H \"Accept: application/json\" \\\n-H \"Content-Type: application/json;charset=UTF-8\" \\\n \"https://grafana.com/api/dashboards/15757/revisions/37/download\" \\\n | sed '/-- .* --/! s/\"datasource\":.*,/\"datasource\": \"VictoriaMetrics\",/g' \\\n> \"/var/lib/grafana/dashboards/default/kubernetes-cluster.json\"\n \ncurl -skf \\\n--connect-timeout 60 \\\n--max-time 60 \\\n-H \"Accept: application/json\" \\\n-H \"Content-Type: application/json;charset=UTF-8\" \\\n \"https://raw.githubusercontent.com/element-hq/synapse/v1.152.0/contrib/grafana/synapse.json\" \\\n | sed '/-- .* --/! s/\"datasource\":.*,/\"datasource\": \"VictoriaMetrics\",/g' \\\n> \"/var/lib/grafana/dashboards/default/matrix-synapse.json\"\n \ncurl -skf \\\n--connect-timeout 60 \\\n--max-time 60 \\\n-H \"Accept: application/json\" \\\n-H \"Content-Type: application/json;charset=UTF-8\" \\\n \"https://grafana.com/api/dashboards/1860/revisions/37/download\" \\\n | sed '/-- .* --/! s/\"datasource\":.*,/\"datasource\": \"VictoriaMetrics\",/g' \\\n> \"/var/lib/grafana/dashboards/default/node-exporter.json\"\n"
grafana.ini: | grafana.ini: |
[analytics] [analytics]
check_for_updates = true check_for_updates = true

View file

@ -22,7 +22,7 @@ spec:
template: template:
metadata: metadata:
annotations: annotations:
checksum/config: de8d6f16e9721409f5848bcc101e6aa9815e6455bd4fb9b59306159e705ac1cb checksum/config: 3091c3340f9e9518f161b4ddf15db275c8757370b7e8c8d7af912dd555ca3ff6
checksum/dashboards-json-config: 02278b031cbf8831bf02b7a4256e61be096aaeb31d9a25dabd282b6933b1abcb checksum/dashboards-json-config: 02278b031cbf8831bf02b7a4256e61be096aaeb31d9a25dabd282b6933b1abcb
checksum/sc-dashboard-provider-config: e70bf6a851099d385178a76de9757bb0bef8299da6d8443602590e44f05fdf24 checksum/sc-dashboard-provider-config: e70bf6a851099d385178a76de9757bb0bef8299da6d8443602590e44f05fdf24
kubectl.kubernetes.io/default-container: grafana kubectl.kubernetes.io/default-container: grafana

View file

@ -0,0 +1,21 @@
apiVersion: v1
kind: Service
metadata:
annotations:
a8r.io/repository: ssh://git@git.tr1ceracop.de:222/gitea_admin/k8s-and-chill.git
labels:
matrix_metrics: enabled
name: matrix-synapse-metrics
namespace: matrix
spec:
clusterIP: None
ports:
- name: metrics
port: 9090
protocol: TCP
targetPort: metrics
selector:
app.kubernetes.io/component: synapse
app.kubernetes.io/instance: matrix-synapse
app.kubernetes.io/name: matrix-synapse
type: ClusterIP

View file

@ -101,6 +101,24 @@ data:
- source_labels: - source_labels:
- __meta_kubernetes_pod_name - __meta_kubernetes_pod_name
target_label: pod target_label: pod
- job_name: synapse
kubernetes_sd_configs:
- namespaces:
names:
- matrix
role: endpoints
metrics_path: /_synapse/metrics
relabel_configs:
- action: keep
regex: enabled;metrics
source_labels:
- __meta_kubernetes_service_label_matrix_metrics
- __meta_kubernetes_endpoint_port_name
- source_labels:
- __meta_kubernetes_pod_name
target_label: pod
- replacement: "0"
target_label: index
kind: ConfigMap kind: ConfigMap
metadata: metadata:
annotations: annotations: