cluster

Infrastructure files for Nordgedanken and Midnightthoughts.
git clone git://archive.git.mtrnord.blog/MTRNord/cluster.git
Log | Files | Refs | README

commit 5059de35567e1903fcfb451908785cabd3325638
parent 5066880d56ca8ba0c9aa303c45c9963aba4de996
Author: MTRNord <mtrnord1@gmail.com>
Date:   Fri, 27 Sep 2024 02:23:32 +0200

Meow

Diffstat:
Mapps/base/victoria-metrics-k8s-stack/release.yaml | 51+++++++++++++++++++--------------------------------
Mapps/base/victoria-metrics-k8s-stack/rules.yaml | 1992++++++++++++++++++++++++++++++++++++++++---------------------------------------
2 files changed, 1021 insertions(+), 1022 deletions(-)

diff --git a/apps/base/victoria-metrics-k8s-stack/release.yaml b/apps/base/victoria-metrics-k8s-stack/release.yaml @@ -7,7 +7,7 @@ spec: interval: 5m chart: spec: - version: 0.20.1 + version: 0.25.17 chart: victoria-metrics-k8s-stack sourceRef: kind: HelmRepository @@ -20,6 +20,11 @@ spec: # Force recreation due to Helm not properly patching Deployment with e.g. added port, # causing spurious drift detection force: true + valuesFrom: + - kind: ConfigMap + name: grafana-rules + valuesKey: rules.yaml + targetPath: grafana.alerting."rules.yaml" # https://github.com/prometheus-community/helm-charts/blob/main/charts/kube-prometheus-stack/values.yaml values: vmsingle: @@ -30,10 +35,8 @@ spec: operator: disable_prometheus_converter: false grafana: - adminPassword: ENC[AES256_GCM,data:P/fKbIc8YcDUIt3+uEbEWbpkdGgXm8Y6yeiOkD80qoJgzSFQLjBICKDmJ8WmjLjiE2ShUcPZcq4WpDP3oYfdKQ==,iv:3Z0lvW6pox4Hmc58p2A436NKf7+4/u8mYmcDN/HBLfk=,tag:ujUP5VUJuvUpONEx9ziiRg==,type:str] + adminPassword: ENC[AES256_GCM,data:0b/hfNHyH8V/pfaL80C4Mg2I06UGERrAB4/F2m3f1SxD82zU5nYTfJoA3Isia2+h+hOSG750V+xgETnJvK6jLw==,iv:p/0gV/N58cqrB7PTaioqOmUgTfpK5Yvk+iDNAW3LntA=,tag:zVgQv2U8hXc6xcdz2gLNKA==,type:str] alerting: - rules.yaml: - file: rules.yaml contactpoints.yaml: apiVersion: 1 contactPoints: @@ -53,7 +56,7 @@ spec: - uid: adz30e8814wshd type: pagerduty settings: - integrationKey: ENC[AES256_GCM,data:zvld3/CbWl7RdutJUYk7WKIuAZc5rV9r+p3VSwHfP88=,iv:esAWA1qdvmfNkT4pkPYYtdfjF/sGdEsU5nk7VtArAh0=,tag:RaOdLlOKQTb6NtS1hOq/5Q==,type:str] + integrationKey: ENC[AES256_GCM,data:t41yH1YiQyW6MN4quqjWNIt4CYdlW8nw/jSbH+hLGVc=,iv:DYCXs8/Xy9FoXb2NraeZgPb4mZOn6/KMbBYX97QKPqg=,tag:RvcXwZ3Epf8EMRRPyRG7ZQ==,type:str] disableResolveMessage: false - orgId: 1 name: PagerDuty Draupnir4All @@ -61,7 +64,7 @@ spec: - uid: 3 type: pagerduty settings: - integrationKey: ENC[AES256_GCM,data:h/31zNsQaGxVArt2xi4VtBtRDW/UodL9i5h4YroakzY=,iv:OpqKxhByJf3hR38aRUdZMF7irV2aVR5/VxQACQ198co=,tag:fuI0gOvc7mTltMY4E9yFHw==,type:str] + integrationKey: ENC[AES256_GCM,data:M4lSqEnFdssd/CursS2IyvU8GeIrrsiEZOX5TIR5vRs=,iv:b4PssYDQY0Kiomf2pY4mYwn7qO4WMeKwUm+YAZLePDw=,tag:o7TsZl8P/iecCSoouLiM6w==,type:str] disableResolveMessage: false policies.yaml: apiVersion: 1 @@ -292,16 +295,6 @@ spec: value: Prometheus - name: DS_LOKI value: loki - asterisk: - url: https://git.nordgedanken.dev/kubernetes/grafana/raw/branch/main/asterisk.json - datasource: - - name: DS_PROMETHEUS - value: Prometheus - traefik: - url: https://git.nordgedanken.dev/kubernetes/grafana/raw/branch/main/traefik.json - datasource: - - name: DS_PROMETHEUS - value: Prometheus postgres-dashboard: url: https://raw.githubusercontent.com/prometheus-community/postgres_exporter/master/postgres_mixin/dashboards/postgres-overview.json datasource: @@ -361,16 +354,10 @@ spec: value: zammad-es-cti_log matrix: synapse-dashboard: - #url: https://git.nordgedanken.dev/kubernetes/grafana/raw/branch/main/synapse.json url: https://raw.githubusercontent.com/element-hq/synapse/develop/contrib/grafana/synapse.json datasource: - name: DS_PROMETHEUS value: Prometheus - draupnir4all: - url: https://git.nordgedanken.dev/kubernetes/grafana/raw/branch/main/draupnir4all.json - datasource: - - name: DS_PROMETHEUS - value: Prometheus matrix-media-repo-dashboard: url: https://raw.githubusercontent.com/t2bot/matrix-media-repo/main/docs/grafana.json datasource: @@ -395,7 +382,7 @@ spec: host: smtp.fastmail.com:465 from_address: ops@nordgedanken.dev paths: - data: ENC[AES256_GCM,data:3TNvJfpZk+hxkAkGkzeUrOM=,iv:KRaZcynIqLoLWbl8C5b6JGjfRRKGpPuPZpFMItkAItM=,tag:Tvta6eiklS0uIu74asEtFA==,type:str] + data: ENC[AES256_GCM,data:Nwfk4zMsu8+YU87Lm1mMoi8=,iv:kpujRNTf+4ing2CNTEg6u7U41Zo3b5j1Nne8Fwg0eBg=,tag:M7BgZv1uDgc7XxBAwhZn9g==,type:str] logs: /var/log/grafana plugins: /var/lib/grafana/plugins provisioning: /etc/grafana/provisioning @@ -411,8 +398,8 @@ spec: auth.generic_oauth: name: authentik enabled: true - client_id: ENC[AES256_GCM,data:2k/mlcOp9sRpzTaEmiM/6I8OtxhH65k0U6Kg+LHe+YgIzq/hKNNJvtseqd3DcCCiIqQ=,iv:B05jv9ISZPgvDFwedupbB474oE36QGMMjhmBNxl47aQ=,tag:/O9LMAlDsGalN1tY9iCt7A==,type:str] - client_secret: ENC[AES256_GCM,data:HAaBT6n8C2lg6UfW9Ai+GQWDlh4tUeJP+mzlHZUaDm3Q6CclANwhgKjCb0Frz8vAhQblS06k,iv:CgRJYEvcP4fuqmERJVrZqZ9l83m+/jC5H8k5CVYHXAM=,tag:wTIaKpAxImXt2SM+OdHmaQ==,type:str] + client_id: ENC[AES256_GCM,data:vbjkXdou2Omq06b+3zPGzCZ2PF2/sbRgx2qXFrz7lnEeR5E6pJrwtoUo0Gcxhk3vk7Q=,iv:AlX/++KA+4RsR7PN8a7pWV9e5qN/TapaBH4iKSeZQ08=,tag:+P3QUSVNiRG3Uxch8w/h3w==,type:str] + client_secret: ENC[AES256_GCM,data:/zEugS7WUIzr9b6dR7ZdTa2ivclXKhEEXipGlDFgx7R2joPvoncmFq5GitxCd8vsIHQYRB1Y,iv:n5IEfrpYU4wZuXhnMeJVwh4edOJdRxniLa8MSyEpvVc=,tag:44gEVd7GifHEbbb6NR7oNA==,type:str] scopes: openid email profile auth_url: https://auth.midnightthoughts.space/application/o/authorize/ token_url: https://auth.midnightthoughts.space/application/o/token/ @@ -449,14 +436,14 @@ sops: - recipient: age1esjyg2qfy49awv0ptkzvpk425adczjr38m37w2mmcahzc4p8n54sll2nzh enc: | -----BEGIN AGE ENCRYPTED FILE----- - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB1UGw5MDZuQWt3S0RHQWda - bE1kbjEyUEtPaXN0OEZBTkNkcjlqdGRpYkNjClZjUmYwTm5NMi9BS1IzRXRsUmdN - aDV3Ump3VHJJL2ZFdXJNcGo5YlR0V2sKLS0tIDgzT3dUbk9oNlRKeVNvcXNxaUFl - cDNPN1M3UEUwSU84K016c2s0dnVGcGsKxPUVHbKyPA8PcNdztXcqGggSpFK0YsTl - GNGkDWj19q8tsiOY5ho2A7EqtmsqTsVVUWaUNepYc8wGcVBc9gUcug== + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBDOGRjQUhYTUMxQWU4UzNB + ZnRLYzc0djBOV1d5ckRyTi95cTMzaFMreFMwCmFJVVh3MUxDWG1mN3BUUXpieFlu + L1BPM1d6S2dWdFBLdFBpQlUxeEJqRTgKLS0tIGpNaHJVVUVlM1BidEQ0ZTFQUVg0 + anJyU3BZK2tKQ0ZYb3MxbXNqeElwN1UK9Xg1yuLGjwAzh5nkXcrfejTuejTgnWfM + ro0fy6SWB1jZL+Ciqp1xDRP7HcoZ6uXp9l3OoQWGGMoM+oi2CPDfsQ== -----END AGE ENCRYPTED FILE----- - lastmodified: "2024-09-27T00:06:32Z" - mac: ENC[AES256_GCM,data:Dp9AEsvZpK7ic/JBEZsspNvcU0O0A/Z2Ssu63XLzbEhNtUvIxujMjlGSCMeb8bGVIk83JjAHXGTH3XU9mugdcBVNOEMl8B42T4YPRuWZpgzMj4VaCO7qzXpS6BQIhOxRSQ2af8vwsBNCDM0L2lgrzSdj2jIPKU4CkadUUyBC4R8=,iv:xTeXHfYsVUK17UauKw2FhYdzP20zCyzG40rp8Tsx4/o=,tag:/YM4eoVG60VdlUPV1FLeew==,type:str] + lastmodified: "2024-09-27T00:23:26Z" + mac: ENC[AES256_GCM,data:2RDkt0H+aHJgTshmGSbX2BbcEqLABHDBxPZ33xqzyqNe53WuVuqaNuOXHiKgof7N2GzTHgTNlmLVNVZo8THpqj8F/M/dD/LReRTbMPf7VTkmsHBohmoNmlkoXsNtkhm8Myn++J81GiD/L3zlqeiSjHKYlvv9XKEF2Bq/21w6nOk=,iv:+PlpU1xgzfR54/dLiqdrk5QmItK4MYvs2m/g72Tn6Ig=,tag:v2CURmyH3NBkeLLzLxbD2Q==,type:str] pgp: [] encrypted_regex: ^(admin_password|extraCommands|key|clickhouseDatabaseURL|databaseURL|client_id|client_secret|secret_key_base|otp_secret|private_key|public_key|primaryKey|deterministicKey|keyDerivationSalt|token|clientId|secretKey|installationId|installationKey|uriOverride|adminToken.value|password.value|sql_password|erlangCookie|AUTHENTICATION_PASSWORD|ROOM_API_SECRET_KEY|adminPassword|configPassword|adminUser|configUser|APP_KEY|api_key|api_secret|keys|livekit_key|livekit_secret|secret_key|admin_pass|admin_email|mariadbPassword|mariadbRootPassword|privateKey|data|stringData|PASSWD|password|pass|postgresPassword|postgresqlPassword|redminePassword|smtpPassword|registration_shared_secret|shared_secret|secret|admin_token|integrationKey|rootPassword)$ version: 3.8.1 diff --git a/apps/base/victoria-metrics-k8s-stack/rules.yaml b/apps/base/victoria-metrics-k8s-stack/rules.yaml @@ -1,990 +1,1002 @@ -apiVersion: 1 -groups: - - orgId: 1 - name: CertManager - folder: Cluster - interval: 5m - rules: - - uid: ddz3zj028wb28b - title: CertManagerHittingRateLimits - condition: B - data: - - refId: A - relativeTimeRange: - from: 600 - to: 0 - datasourceUid: prometheus - model: - editorMode: code - expr: |- - sum by (host) ( - rate(certmanager_http_acme_client_request_count{status="429"}[5m]) - ) > 0 - instant: true - intervalMs: 1000 - legendFormat: __auto - maxDataPoints: 43200 - range: false - refId: A - - refId: B - relativeTimeRange: - from: 600 - to: 0 - datasourceUid: __expr__ - model: - conditions: - - evaluator: - params: [] - type: gt - operator: - type: and - query: - params: - - B - reducer: - params: [] - type: last - type: query - datasource: - type: __expr__ - uid: __expr__ - expression: A - intervalMs: 1000 - maxDataPoints: 43200 - reducer: last - refId: B - type: reduce - noDataState: Ok - execErrState: Error - for: 5m - annotations: - description: Depending on the rate limit, cert-manager may be unable to generate certificates for up to a week. - summary: Cert manager hitting LetsEncrypt rate limits. - labels: {} - isPaused: false - - orgId: 1 - name: Resources - folder: Cluster - interval: 15m - rules: - - uid: bdz3y4mow1o1se - title: KubePersistentVolumeFillingUp - condition: B - data: - - refId: A - relativeTimeRange: - from: 600 - to: 0 - datasourceUid: prometheus - model: - datasource: - type: prometheus - uid: prometheus - editorMode: code - expr: |- - ( - kubelet_volume_stats_available_bytes{job="kubelet", namespace=~".*", metrics_path="/metrics"} - / - kubelet_volume_stats_capacity_bytes{job="kubelet", namespace=~".*", metrics_path="/metrics"} - ) < 0.03 - and - kubelet_volume_stats_used_bytes{job="kubelet", namespace=~".*", metrics_path="/metrics"} > 0 - unless on(cluster, namespace, persistentvolumeclaim) - kube_persistentvolumeclaim_access_mode{ access_mode="ReadOnlyMany"} == 1 - unless on(cluster, namespace, persistentvolumeclaim) - kube_persistentvolumeclaim_labels{label_excluded_from_alerts="true"} == 1 - instant: true - intervalMs: 1000 - legendFormat: __auto - maxDataPoints: 43200 - range: false - refId: A - - refId: B - datasourceUid: __expr__ - model: - conditions: - - evaluator: - params: - - 0 - - 0 - type: gt - operator: - type: and - query: - params: [] - reducer: - params: [] - type: avg - type: query - datasource: - name: Expression - type: __expr__ - uid: __expr__ - expression: A - intervalMs: 1000 - maxDataPoints: 43200 - reducer: last - refId: B - type: reduce - noDataState: OK - execErrState: Error - for: 20m - annotations: - runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubepersistentvolumefillingup - summary: |- - The PersistentVolume claimed by {{ $labels.persistentvolumeclaim }} - in Namespace {{ $labels.namespace }} - {{ with $labels.cluster - }} - on Cluster {{ . }} - {{ - end }} - is only {{ $value | humanizePercentage }} - free. - labels: {} - isPaused: false - - uid: cdz3yt59a0miob - title: KubePersistentVolumeErrors - condition: B - data: - - refId: A - relativeTimeRange: - from: 600 - to: 0 - datasourceUid: prometheus - model: - editorMode: code - expr: |- - kube_persistentvolume_status_phase{phase=~"Failed|Pending",job="kube-state-metrics"} - > 0 - instant: true - intervalMs: 1000 - legendFormat: __auto - maxDataPoints: 43200 - range: false - refId: A - - refId: B - relativeTimeRange: - from: 600 - to: 0 - datasourceUid: __expr__ - model: - conditions: - - evaluator: - params: [] - type: gt - operator: - type: and - query: - params: - - B - reducer: - params: [] - type: last - type: query - datasource: - type: __expr__ - uid: __expr__ - expression: A - intervalMs: 1000 - maxDataPoints: 43200 - reducer: last - refId: B - type: reduce - noDataState: OK - execErrState: Error - for: 20m - annotations: - runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubepersistentvolumeerrors - summary: |- - The persistent volume {{ $labels.persistentvolume }} - {{ with $labels.cluster - }} - on Cluster {{ . }} - {{ - end }} - has status {{ $labels.phase }} - . - isPaused: false - - uid: cdz3ywkoiwgzka - title: KubePersistentVolumeInodesFillingUp - condition: B - data: - - refId: A - relativeTimeRange: - from: 600 - to: 0 - datasourceUid: prometheus - model: - editorMode: code - expr: |- - ( - kubelet_volume_stats_inodes_free{job="kubelet", namespace=~".*", metrics_path="/metrics"} - / - kubelet_volume_stats_inodes{job="kubelet", namespace=~".*", metrics_path="/metrics"} - ) < 0.15 - and - kubelet_volume_stats_inodes_used{job="kubelet", namespace=~".*", metrics_path="/metrics"} > 0 - and - predict_linear(kubelet_volume_stats_inodes_free{job="kubelet", namespace=~".*", metrics_path="/metrics"}[6h], 4 * 24 * 3600) < 0 - unless on(cluster, namespace, persistentvolumeclaim) - kube_persistentvolumeclaim_access_mode{ access_mode="ReadOnlyMany"} == 1 - unless on(cluster, namespace, persistentvolumeclaim) - kube_persistentvolumeclaim_labels{label_excluded_from_alerts="true"} == 1 - instant: true - intervalMs: 1000 - legendFormat: __auto - maxDataPoints: 43200 - range: false - refId: A - - refId: B - relativeTimeRange: - from: 600 - to: 0 - datasourceUid: __expr__ - model: - conditions: - - evaluator: - params: [] - type: gt - operator: - type: and - query: - params: - - B - reducer: - params: [] - type: last - type: query - datasource: - type: __expr__ - uid: __expr__ - expression: A - intervalMs: 1000 - maxDataPoints: 43200 - reducer: last - refId: B - type: reduce - noDataState: Ok - execErrState: Error - for: 20m - annotations: - runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubepersistentvolumeinodesfillingup - summary: |- - Based on recent sampling, the PersistentVolume claimed by {{ $labels.persistentvolumeclaim }} - in Namespace {{ $labels.namespace }} - {{ with $labels.cluster - }} - on Cluster {{ . }} - {{ - end }} - is expected to run out of inodes within four days. Currently {{ $value | humanizePercentage }} - of its inodes are free. - isPaused: false - - orgId: 1 - name: Draupnir4All - folder: Matrix - interval: 1m - rules: - - uid: adz3nhdki7d34d - title: Draupnir4All Synapse "Failed" - condition: B - data: - - refId: A - queryType: instant - relativeTimeRange: - from: 600 - to: 0 - datasourceUid: loki - model: - datasource: - type: loki - uid: loki - editorMode: builder - expr: count_over_time({app="kube-event-exporter"} | json | namespace = `matrix` | reason = `Failed` | name =~ `.*draupnir-synapse.*` [5m]) - intervalMs: 1000 - maxDataPoints: 43200 - queryType: instant - refId: A - - refId: B - datasourceUid: __expr__ - model: - conditions: - - evaluator: - params: - - 0 - - 0 - type: gt - operator: - type: and - query: - params: [] - reducer: - params: [] - type: avg - type: query - datasource: - name: Expression - type: __expr__ - uid: __expr__ - expression: A - intervalMs: 1000 - maxDataPoints: 43200 - reducer: max - refId: B - type: reduce - - refId: C - datasourceUid: __expr__ - model: - conditions: - - evaluator: - params: - - 0 - - 0 - type: gt - operator: - type: and - query: - params: [] - reducer: - params: [] - type: avg - type: query - datasource: - name: Expression - type: __expr__ - uid: __expr__ - expression: B - intervalMs: 1000 - maxDataPoints: 43200 - refId: C - type: threshold - noDataState: OK - execErrState: Error - for: 1m - annotations: {} - labels: - service_id: draupnir4all - isPaused: false - - uid: ddz3nijqshjb4e - title: Draupnir4All Synapse "BackOff" - condition: B - data: - - refId: A - queryType: instant - relativeTimeRange: - from: 600 - to: 0 - datasourceUid: loki - model: - datasource: - type: loki - uid: loki - editorMode: builder - expr: count_over_time({app="kube-event-exporter"} | json | namespace = `matrix` | reason = `BackOff` | name =~ `.*draupnir-synapse.*` [5m]) - intervalMs: 1000 - maxDataPoints: 43200 - queryType: instant - refId: A - - refId: B - relativeTimeRange: - from: 600 - to: 0 - datasourceUid: __expr__ - model: - conditions: - - evaluator: - params: - - 0 - - 0 - type: gt - operator: - type: and - query: - params: [] - reducer: - params: [] - type: avg - type: query - datasource: - name: Expression - type: __expr__ - uid: __expr__ - expression: A - intervalMs: 1000 - maxDataPoints: 43200 - reducer: max - refId: B - type: reduce - - refId: C - relativeTimeRange: - from: 600 - to: 0 - datasourceUid: __expr__ - model: - conditions: - - evaluator: - params: - - 0 - - 0 - type: gt - operator: - type: and - query: - params: [] - reducer: - params: [] - type: avg - type: query - datasource: - name: Expression - type: __expr__ - uid: __expr__ - expression: B - intervalMs: 1000 - maxDataPoints: 43200 - refId: C - type: threshold - noDataState: OK - execErrState: Error - for: 1m - annotations: {} - labels: - service_id: draupnir4all - isPaused: false - - uid: cdz3njjeosphce - title: Draupnir4All "BackOff" - condition: B - data: - - refId: A - queryType: instant - relativeTimeRange: - from: 600 - to: 0 - datasourceUid: loki - model: - datasource: - type: loki - uid: loki - editorMode: builder - expr: count_over_time({app="kube-event-exporter"} | json | namespace = `matrix` | reason = `BackOff` | name =~ `.*draupnir4all.*` [5m]) - intervalMs: 1000 - maxDataPoints: 43200 - queryType: instant - refId: A - - refId: B - relativeTimeRange: - from: 600 - to: 0 - datasourceUid: __expr__ - model: - conditions: - - evaluator: - params: - - 0 - - 0 - type: gt - operator: - type: and - query: - params: [] - reducer: - params: [] - type: avg - type: query - datasource: - name: Expression - type: __expr__ - uid: __expr__ - expression: A - intervalMs: 1000 - maxDataPoints: 43200 - reducer: max - refId: B - type: reduce - - refId: C - relativeTimeRange: - from: 600 - to: 0 - datasourceUid: __expr__ - model: - conditions: - - evaluator: - params: - - 0 - - 0 - type: gt - operator: - type: and - query: - params: [] - reducer: - params: [] - type: avg - type: query - datasource: - name: Expression - type: __expr__ - uid: __expr__ - expression: B - intervalMs: 1000 - maxDataPoints: 43200 - refId: C - type: threshold - noDataState: OK - execErrState: Error - for: 1m - annotations: {} - labels: - service_id: draupnir4all - isPaused: false - - uid: adz3nkklsv2tcd - title: Draupnir4All "Failed" - condition: B - data: - - refId: A - queryType: instant - relativeTimeRange: - from: 600 - to: 0 - datasourceUid: loki - model: - datasource: - type: loki - uid: loki - editorMode: builder - expr: count_over_time({app="kube-event-exporter"} | json | namespace = `matrix` | reason = `Failed` | name =~ `.*draupnir4all.*` [5m]) - intervalMs: 1000 - maxDataPoints: 43200 - queryType: instant - refId: A - - refId: B - relativeTimeRange: - from: 600 - to: 0 - datasourceUid: __expr__ - model: - conditions: - - evaluator: - params: - - 0 - - 0 - type: gt - operator: - type: and - query: - params: [] - reducer: - params: [] - type: avg - type: query - datasource: - name: Expression - type: __expr__ - uid: __expr__ - expression: A - intervalMs: 1000 - maxDataPoints: 43200 - reducer: max - refId: B - type: reduce - - refId: C - relativeTimeRange: - from: 600 - to: 0 - datasourceUid: __expr__ - model: - conditions: - - evaluator: - params: - - 0 - - 0 - type: gt - operator: - type: and - query: - params: [] - reducer: - params: [] - type: avg - type: query - datasource: - name: Expression - type: __expr__ - uid: __expr__ - expression: B - intervalMs: 1000 - maxDataPoints: 43200 - refId: C - type: threshold - noDataState: OK - execErrState: Error - for: 1m - annotations: {} - labels: - service_id: draupnir4all - isPaused: false - - orgId: 1 - name: Kube-system - folder: Cluster - interval: 1m - rules: - - uid: d2b94d3a-2483-4be4-bf2a-2fd9f9fac406 - title: Coredns Failure - condition: Thresh - isPaused: false - data: - - refId: Count - queryType: range - relativeTimeRange: - from: 600 - to: 0 - datasourceUid: loki - model: - datasource: - type: loki - uid: loki - editorMode: builder - expr: rate({namespace="kube-system", app="coredns"} |= `i/o timeout` [15m]) - hide: false - intervalMs: 1000 - maxDataPoints: 43200 - queryType: range - range: true - refId: Count - - refId: Thresh - relativeTimeRange: - from: 600 - to: 0 - datasourceUid: __expr__ - model: - conditions: - - evaluator: - params: - - 1 - type: gt - operator: - type: and - query: - params: - - C - reducer: - params: [] - type: last - type: query - datasource: - type: __expr__ - uid: __expr__ - expression: A - hide: false - intervalMs: 1000 - maxDataPoints: 43200 - refId: Thresh - type: threshold - - refId: A - relativeTimeRange: - from: 600 - to: 0 - datasourceUid: __expr__ - model: - conditions: - - evaluator: - params: - - 0 - - 0 - type: gt - operator: - type: and - query: - params: [] - reducer: - params: [] - type: avg - type: query - datasource: - name: Expression - type: __expr__ - uid: __expr__ - expression: Count - intervalMs: 1000 - maxDataPoints: 43200 - reducer: last - refId: A - settings: - mode: replaceNN - replaceWithValue: 0 - type: reduce - noDataState: OK - execErrState: Error - for: 2m - annotations: - summary: High amount of i/o timeouts in coredns - - orgId: 1 - name: Matrix Synapse - folder: Matrix - interval: 1m - rules: - - uid: b6db960c-c0bd-4d4f-b0f1-e1f216ec81cc - title: DNSQueryRefusedError - condition: Thresh - isPaused: false - data: - - refId: Count - queryType: range - relativeTimeRange: - from: 600 - to: 0 - datasourceUid: loki - model: - datasource: - type: loki - uid: loki - editorMode: builder - expr: rate({namespace="matrix", app="matrix-synapse"} |= `DNSQueryRefusedError` [15m]) - hide: false - intervalMs: 1000 - maxDataPoints: 43200 - queryType: range - range: true - refId: Count - - refId: Thresh - relativeTimeRange: - from: 600 - to: 0 - datasourceUid: __expr__ - model: - conditions: - - evaluator: - params: - - 1 - type: gt - operator: - type: and - query: - params: - - C - reducer: - params: [] - type: last - type: query - datasource: - type: __expr__ - uid: __expr__ - expression: A - hide: false - intervalMs: 1000 - maxDataPoints: 43200 - refId: Thresh - type: threshold - - refId: A - relativeTimeRange: - from: 600 - to: 0 - datasourceUid: __expr__ - model: - conditions: - - evaluator: - params: - - 0 - - 0 - type: gt - operator: - type: and - query: - params: [] - reducer: - params: [] - type: avg - type: query - datasource: - name: Expression - type: __expr__ - uid: __expr__ - expression: Count - intervalMs: 1000 - maxDataPoints: 43200 - reducer: last - refId: A - settings: - mode: replaceNN - replaceWithValue: 0 - type: reduce - noDataState: OK - execErrState: Error - for: 2m - annotations: - summary: Matrix Synapse DNS Errors are higher than usual - - uid: de30a1da-84da-45f4-a4a5-d641dbd92e6c - title: psycopg2.errors.ReadOnlySqlTransaction - condition: Thresh - isPaused: false - data: - - refId: Count - queryType: range - relativeTimeRange: - from: 600 - to: 0 - datasourceUid: loki - model: - datasource: - type: loki - uid: loki - editorMode: builder - expr: rate({namespace="matrix", app="matrix-synapse"} |= `psycopg2.errors.ReadOnlySqlTransaction` [15m]) - hide: false - intervalMs: 1000 - maxDataPoints: 43200 - queryType: range - range: true - refId: Count - - refId: Thresh - relativeTimeRange: - from: 600 - to: 0 - datasourceUid: __expr__ - model: - conditions: - - evaluator: - params: - - 0.1 - type: gt - operator: - type: and - query: - params: - - C - reducer: - params: [] - type: last - type: query - datasource: - type: __expr__ - uid: __expr__ - expression: A - hide: false - intervalMs: 1000 - maxDataPoints: 43200 - refId: Thresh - type: threshold - - refId: A - relativeTimeRange: - from: 600 - to: 0 - datasourceUid: __expr__ - model: - conditions: - - evaluator: - params: - - 0 - - 0 - type: gt - operator: - type: and - query: - params: [] - reducer: - params: [] - type: avg - type: query - datasource: - name: Expression - type: __expr__ - uid: __expr__ - expression: Count - intervalMs: 1000 - maxDataPoints: 43200 - reducer: last - refId: A - settings: - mode: replaceNN - replaceWithValue: 0 - type: reduce - noDataState: OK - execErrState: Error - for: 2m - annotations: - summary: Matrix Database rolled over but synapse crashed - - uid: d16dc343-31d9-466a-bdc1-c2466b0bc18f - title: Unusual synapse logging - condition: Thresh - isPaused: false - data: - - refId: Count - queryType: range - relativeTimeRange: - from: 600 - to: 0 - datasourceUid: loki - model: - datasource: - type: loki - uid: loki - editorMode: builder - expr: sum by(level) (count_over_time({namespace="matrix", app="matrix-synapse"} | pattern `<_> - <component> - <_> - <level> - <trace>- <detail>` | level != `INFO` [$__interval])) - hide: false - intervalMs: 1000 - maxDataPoints: 43200 - queryType: range - range: true - refId: Count - - refId: Thresh - relativeTimeRange: - from: 600 - to: 0 - datasourceUid: __expr__ - model: - conditions: - - evaluator: - params: - - 20 - type: gt - operator: - type: and - query: - params: - - C - reducer: - params: [] - type: last - type: query - datasource: - type: __expr__ - uid: __expr__ - expression: A - hide: false - intervalMs: 1000 - maxDataPoints: 43200 - refId: Thresh - type: threshold - - refId: A - relativeTimeRange: - from: 600 - to: 0 - datasourceUid: __expr__ - model: - conditions: - - evaluator: - params: - - 0 - - 0 - type: gt - operator: - type: and - query: - params: [] - reducer: - params: [] - type: avg - type: query - datasource: - name: Expression - type: __expr__ - uid: __expr__ - expression: Count - intervalMs: 1000 - maxDataPoints: 43200 - reducer: last - refId: A - settings: - mode: replaceNN - replaceWithValue: 0 - type: reduce - noDataState: OK - execErrState: Error - for: 2m - annotations: - summary: Unusual logging for synapse. +apiVersion: v1 +kind: ConfigMap +metadata: + name: grafana-rules + namespace: monitoring +data: + rules.yaml: | + apiVersion: 1 + groups: + - orgId: 1 + name: CertManager + folder: Cluster + interval: 5m + rules: + - uid: ddz3zj028wb28b + title: CertManagerHittingRateLimits + condition: B + data: + - refId: A + relativeTimeRange: + from: 600 + to: 0 + datasourceUid: prometheus + model: + editorMode: code + expr: |- + sum by (host) ( + rate(certmanager_http_acme_client_request_count{status="429"}[5m]) + ) > 0 + instant: true + intervalMs: 1000 + legendFormat: __auto + maxDataPoints: 43200 + range: false + refId: A + - refId: B + relativeTimeRange: + from: 600 + to: 0 + datasourceUid: __expr__ + model: + conditions: + - evaluator: + params: [] + type: gt + operator: + type: and + query: + params: + - B + reducer: + params: [] + type: last + type: query + datasource: + type: __expr__ + uid: __expr__ + expression: A + intervalMs: 1000 + maxDataPoints: 43200 + reducer: last + refId: B + type: reduce + noDataState: Ok + execErrState: Error + for: 5m + annotations: + description: Depending on the rate limit, cert-manager may be unable to generate certificates for up to a week. + summary: Cert manager hitting LetsEncrypt rate limits. + labels: {} + isPaused: false + - orgId: 1 + name: Resources + folder: Cluster + interval: 15m + rules: + - uid: bdz3y4mow1o1se + title: KubePersistentVolumeFillingUp + condition: B + data: + - refId: A + relativeTimeRange: + from: 600 + to: 0 + datasourceUid: prometheus + model: + datasource: + type: prometheus + uid: prometheus + editorMode: code + expr: |- + ( + kubelet_volume_stats_available_bytes{job="kubelet", namespace=~".*", metrics_path="/metrics"} + / + kubelet_volume_stats_capacity_bytes{job="kubelet", namespace=~".*", metrics_path="/metrics"} + ) < 0.03 + and + kubelet_volume_stats_used_bytes{job="kubelet", namespace=~".*", metrics_path="/metrics"} > 0 + unless on(cluster, namespace, persistentvolumeclaim) + kube_persistentvolumeclaim_access_mode{ access_mode="ReadOnlyMany"} == 1 + unless on(cluster, namespace, persistentvolumeclaim) + kube_persistentvolumeclaim_labels{label_excluded_from_alerts="true"} == 1 + instant: true + intervalMs: 1000 + legendFormat: __auto + maxDataPoints: 43200 + range: false + refId: A + - refId: B + datasourceUid: __expr__ + model: + conditions: + - evaluator: + params: + - 0 + - 0 + type: gt + operator: + type: and + query: + params: [] + reducer: + params: [] + type: avg + type: query + datasource: + name: Expression + type: __expr__ + uid: __expr__ + expression: A + intervalMs: 1000 + maxDataPoints: 43200 + reducer: last + refId: B + type: reduce + noDataState: OK + execErrState: Error + for: 20m + annotations: + runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubepersistentvolumefillingup + summary: |- + The PersistentVolume claimed by {{ $labels.persistentvolumeclaim }} + in Namespace {{ $labels.namespace }} + {{ with $labels.cluster - }} + on Cluster {{ . }} + {{ - end }} + is only {{ $value | humanizePercentage }} + free. + labels: {} + isPaused: false + - uid: cdz3yt59a0miob + title: KubePersistentVolumeErrors + condition: B + data: + - refId: A + relativeTimeRange: + from: 600 + to: 0 + datasourceUid: prometheus + model: + editorMode: code + expr: |- + kube_persistentvolume_status_phase{phase=~"Failed|Pending",job="kube-state-metrics"} + > 0 + instant: true + intervalMs: 1000 + legendFormat: __auto + maxDataPoints: 43200 + range: false + refId: A + - refId: B + relativeTimeRange: + from: 600 + to: 0 + datasourceUid: __expr__ + model: + conditions: + - evaluator: + params: [] + type: gt + operator: + type: and + query: + params: + - B + reducer: + params: [] + type: last + type: query + datasource: + type: __expr__ + uid: __expr__ + expression: A + intervalMs: 1000 + maxDataPoints: 43200 + reducer: last + refId: B + type: reduce + noDataState: OK + execErrState: Error + for: 20m + annotations: + runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubepersistentvolumeerrors + summary: |- + The persistent volume {{ $labels.persistentvolume }} + {{ with $labels.cluster - }} + on Cluster {{ . }} + {{ - end }} + has status {{ $labels.phase }} + . + isPaused: false + - uid: cdz3ywkoiwgzka + title: KubePersistentVolumeInodesFillingUp + condition: B + data: + - refId: A + relativeTimeRange: + from: 600 + to: 0 + datasourceUid: prometheus + model: + editorMode: code + expr: |- + ( + kubelet_volume_stats_inodes_free{job="kubelet", namespace=~".*", metrics_path="/metrics"} + / + kubelet_volume_stats_inodes{job="kubelet", namespace=~".*", metrics_path="/metrics"} + ) < 0.15 + and + kubelet_volume_stats_inodes_used{job="kubelet", namespace=~".*", metrics_path="/metrics"} > 0 + and + predict_linear(kubelet_volume_stats_inodes_free{job="kubelet", namespace=~".*", metrics_path="/metrics"}[6h], 4 * 24 * 3600) < 0 + unless on(cluster, namespace, persistentvolumeclaim) + kube_persistentvolumeclaim_access_mode{ access_mode="ReadOnlyMany"} == 1 + unless on(cluster, namespace, persistentvolumeclaim) + kube_persistentvolumeclaim_labels{label_excluded_from_alerts="true"} == 1 + instant: true + intervalMs: 1000 + legendFormat: __auto + maxDataPoints: 43200 + range: false + refId: A + - refId: B + relativeTimeRange: + from: 600 + to: 0 + datasourceUid: __expr__ + model: + conditions: + - evaluator: + params: [] + type: gt + operator: + type: and + query: + params: + - B + reducer: + params: [] + type: last + type: query + datasource: + type: __expr__ + uid: __expr__ + expression: A + intervalMs: 1000 + maxDataPoints: 43200 + reducer: last + refId: B + type: reduce + noDataState: Ok + execErrState: Error + for: 20m + annotations: + runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubepersistentvolumeinodesfillingup + summary: |- + Based on recent sampling, the PersistentVolume claimed by {{ $labels.persistentvolumeclaim }} + in Namespace {{ $labels.namespace }} + {{ with $labels.cluster - }} + on Cluster {{ . }} + {{ - end }} + is expected to run out of inodes within four days. Currently {{ $value | humanizePercentage }} + of its inodes are free. + isPaused: false + - orgId: 1 + name: Draupnir4All + folder: Matrix + interval: 1m + rules: + - uid: adz3nhdki7d34d + title: Draupnir4All Synapse "Failed" + condition: B + data: + - refId: A + queryType: instant + relativeTimeRange: + from: 600 + to: 0 + datasourceUid: loki + model: + datasource: + type: loki + uid: loki + editorMode: builder + expr: count_over_time({app="kube-event-exporter"} | json | namespace = `matrix` | reason = `Failed` | name =~ + `.*draupnir-synapse.*` [5m]) + intervalMs: 1000 + maxDataPoints: 43200 + queryType: instant + refId: A + - refId: B + datasourceUid: __expr__ + model: + conditions: + - evaluator: + params: + - 0 + - 0 + type: gt + operator: + type: and + query: + params: [] + reducer: + params: [] + type: avg + type: query + datasource: + name: Expression + type: __expr__ + uid: __expr__ + expression: A + intervalMs: 1000 + maxDataPoints: 43200 + reducer: max + refId: B + type: reduce + - refId: C + datasourceUid: __expr__ + model: + conditions: + - evaluator: + params: + - 0 + - 0 + type: gt + operator: + type: and + query: + params: [] + reducer: + params: [] + type: avg + type: query + datasource: + name: Expression + type: __expr__ + uid: __expr__ + expression: B + intervalMs: 1000 + maxDataPoints: 43200 + refId: C + type: threshold + noDataState: OK + execErrState: Error + for: 1m + annotations: {} + labels: + service_id: draupnir4all + isPaused: false + - uid: ddz3nijqshjb4e + title: Draupnir4All Synapse "BackOff" + condition: B + data: + - refId: A + queryType: instant + relativeTimeRange: + from: 600 + to: 0 + datasourceUid: loki + model: + datasource: + type: loki + uid: loki + editorMode: builder + expr: count_over_time({app="kube-event-exporter"} | json | namespace = `matrix` | reason = `BackOff` | name + =~ `.*draupnir-synapse.*` [5m]) + intervalMs: 1000 + maxDataPoints: 43200 + queryType: instant + refId: A + - refId: B + relativeTimeRange: + from: 600 + to: 0 + datasourceUid: __expr__ + model: + conditions: + - evaluator: + params: + - 0 + - 0 + type: gt + operator: + type: and + query: + params: [] + reducer: + params: [] + type: avg + type: query + datasource: + name: Expression + type: __expr__ + uid: __expr__ + expression: A + intervalMs: 1000 + maxDataPoints: 43200 + reducer: max + refId: B + type: reduce + - refId: C + relativeTimeRange: + from: 600 + to: 0 + datasourceUid: __expr__ + model: + conditions: + - evaluator: + params: + - 0 + - 0 + type: gt + operator: + type: and + query: + params: [] + reducer: + params: [] + type: avg + type: query + datasource: + name: Expression + type: __expr__ + uid: __expr__ + expression: B + intervalMs: 1000 + maxDataPoints: 43200 + refId: C + type: threshold + noDataState: OK + execErrState: Error + for: 1m + annotations: {} + labels: + service_id: draupnir4all + isPaused: false + - uid: cdz3njjeosphce + title: Draupnir4All "BackOff" + condition: B + data: + - refId: A + queryType: instant + relativeTimeRange: + from: 600 + to: 0 + datasourceUid: loki + model: + datasource: + type: loki + uid: loki + editorMode: builder + expr: count_over_time({app="kube-event-exporter"} | json | namespace = `matrix` | reason = `BackOff` | name + =~ `.*draupnir4all.*` [5m]) + intervalMs: 1000 + maxDataPoints: 43200 + queryType: instant + refId: A + - refId: B + relativeTimeRange: + from: 600 + to: 0 + datasourceUid: __expr__ + model: + conditions: + - evaluator: + params: + - 0 + - 0 + type: gt + operator: + type: and + query: + params: [] + reducer: + params: [] + type: avg + type: query + datasource: + name: Expression + type: __expr__ + uid: __expr__ + expression: A + intervalMs: 1000 + maxDataPoints: 43200 + reducer: max + refId: B + type: reduce + - refId: C + relativeTimeRange: + from: 600 + to: 0 + datasourceUid: __expr__ + model: + conditions: + - evaluator: + params: + - 0 + - 0 + type: gt + operator: + type: and + query: + params: [] + reducer: + params: [] + type: avg + type: query + datasource: + name: Expression + type: __expr__ + uid: __expr__ + expression: B + intervalMs: 1000 + maxDataPoints: 43200 + refId: C + type: threshold + noDataState: OK + execErrState: Error + for: 1m + annotations: {} + labels: + service_id: draupnir4all + isPaused: false + - uid: adz3nkklsv2tcd + title: Draupnir4All "Failed" + condition: B + data: + - refId: A + queryType: instant + relativeTimeRange: + from: 600 + to: 0 + datasourceUid: loki + model: + datasource: + type: loki + uid: loki + editorMode: builder + expr: count_over_time({app="kube-event-exporter"} | json | namespace = `matrix` | reason = `Failed` | name =~ + `.*draupnir4all.*` [5m]) + intervalMs: 1000 + maxDataPoints: 43200 + queryType: instant + refId: A + - refId: B + relativeTimeRange: + from: 600 + to: 0 + datasourceUid: __expr__ + model: + conditions: + - evaluator: + params: + - 0 + - 0 + type: gt + operator: + type: and + query: + params: [] + reducer: + params: [] + type: avg + type: query + datasource: + name: Expression + type: __expr__ + uid: __expr__ + expression: A + intervalMs: 1000 + maxDataPoints: 43200 + reducer: max + refId: B + type: reduce + - refId: C + relativeTimeRange: + from: 600 + to: 0 + datasourceUid: __expr__ + model: + conditions: + - evaluator: + params: + - 0 + - 0 + type: gt + operator: + type: and + query: + params: [] + reducer: + params: [] + type: avg + type: query + datasource: + name: Expression + type: __expr__ + uid: __expr__ + expression: B + intervalMs: 1000 + maxDataPoints: 43200 + refId: C + type: threshold + noDataState: OK + execErrState: Error + for: 1m + annotations: {} + labels: + service_id: draupnir4all + isPaused: false + - orgId: 1 + name: Kube-system + folder: Cluster + interval: 1m + rules: + - uid: d2b94d3a-2483-4be4-bf2a-2fd9f9fac406 + title: Coredns Failure + condition: Thresh + isPaused: false + data: + - refId: Count + queryType: range + relativeTimeRange: + from: 600 + to: 0 + datasourceUid: loki + model: + datasource: + type: loki + uid: loki + editorMode: builder + expr: rate({namespace="kube-system", app="coredns"} |= `i/o timeout` [15m]) + hide: false + intervalMs: 1000 + maxDataPoints: 43200 + queryType: range + range: true + refId: Count + - refId: Thresh + relativeTimeRange: + from: 600 + to: 0 + datasourceUid: __expr__ + model: + conditions: + - evaluator: + params: + - 1 + type: gt + operator: + type: and + query: + params: + - C + reducer: + params: [] + type: last + type: query + datasource: + type: __expr__ + uid: __expr__ + expression: A + hide: false + intervalMs: 1000 + maxDataPoints: 43200 + refId: Thresh + type: threshold + - refId: A + relativeTimeRange: + from: 600 + to: 0 + datasourceUid: __expr__ + model: + conditions: + - evaluator: + params: + - 0 + - 0 + type: gt + operator: + type: and + query: + params: [] + reducer: + params: [] + type: avg + type: query + datasource: + name: Expression + type: __expr__ + uid: __expr__ + expression: Count + intervalMs: 1000 + maxDataPoints: 43200 + reducer: last + refId: A + settings: + mode: replaceNN + replaceWithValue: 0 + type: reduce + noDataState: OK + execErrState: Error + for: 2m + annotations: + summary: High amount of i/o timeouts in coredns + - orgId: 1 + name: Matrix Synapse + folder: Matrix + interval: 1m + rules: + - uid: b6db960c-c0bd-4d4f-b0f1-e1f216ec81cc + title: DNSQueryRefusedError + condition: Thresh + isPaused: false + data: + - refId: Count + queryType: range + relativeTimeRange: + from: 600 + to: 0 + datasourceUid: loki + model: + datasource: + type: loki + uid: loki + editorMode: builder + expr: rate({namespace="matrix", app="matrix-synapse"} |= `DNSQueryRefusedError` [15m]) + hide: false + intervalMs: 1000 + maxDataPoints: 43200 + queryType: range + range: true + refId: Count + - refId: Thresh + relativeTimeRange: + from: 600 + to: 0 + datasourceUid: __expr__ + model: + conditions: + - evaluator: + params: + - 1 + type: gt + operator: + type: and + query: + params: + - C + reducer: + params: [] + type: last + type: query + datasource: + type: __expr__ + uid: __expr__ + expression: A + hide: false + intervalMs: 1000 + maxDataPoints: 43200 + refId: Thresh + type: threshold + - refId: A + relativeTimeRange: + from: 600 + to: 0 + datasourceUid: __expr__ + model: + conditions: + - evaluator: + params: + - 0 + - 0 + type: gt + operator: + type: and + query: + params: [] + reducer: + params: [] + type: avg + type: query + datasource: + name: Expression + type: __expr__ + uid: __expr__ + expression: Count + intervalMs: 1000 + maxDataPoints: 43200 + reducer: last + refId: A + settings: + mode: replaceNN + replaceWithValue: 0 + type: reduce + noDataState: OK + execErrState: Error + for: 2m + annotations: + summary: Matrix Synapse DNS Errors are higher than usual + - uid: de30a1da-84da-45f4-a4a5-d641dbd92e6c + title: psycopg2.errors.ReadOnlySqlTransaction + condition: Thresh + isPaused: false + data: + - refId: Count + queryType: range + relativeTimeRange: + from: 600 + to: 0 + datasourceUid: loki + model: + datasource: + type: loki + uid: loki + editorMode: builder + expr: rate({namespace="matrix", app="matrix-synapse"} |= `psycopg2.errors.ReadOnlySqlTransaction` [15m]) + hide: false + intervalMs: 1000 + maxDataPoints: 43200 + queryType: range + range: true + refId: Count + - refId: Thresh + relativeTimeRange: + from: 600 + to: 0 + datasourceUid: __expr__ + model: + conditions: + - evaluator: + params: + - 0.1 + type: gt + operator: + type: and + query: + params: + - C + reducer: + params: [] + type: last + type: query + datasource: + type: __expr__ + uid: __expr__ + expression: A + hide: false + intervalMs: 1000 + maxDataPoints: 43200 + refId: Thresh + type: threshold + - refId: A + relativeTimeRange: + from: 600 + to: 0 + datasourceUid: __expr__ + model: + conditions: + - evaluator: + params: + - 0 + - 0 + type: gt + operator: + type: and + query: + params: [] + reducer: + params: [] + type: avg + type: query + datasource: + name: Expression + type: __expr__ + uid: __expr__ + expression: Count + intervalMs: 1000 + maxDataPoints: 43200 + reducer: last + refId: A + settings: + mode: replaceNN + replaceWithValue: 0 + type: reduce + noDataState: OK + execErrState: Error + for: 2m + annotations: + summary: Matrix Database rolled over but synapse crashed + - uid: d16dc343-31d9-466a-bdc1-c2466b0bc18f + title: Unusual synapse logging + condition: Thresh + isPaused: false + data: + - refId: Count + queryType: range + relativeTimeRange: + from: 600 + to: 0 + datasourceUid: loki + model: + datasource: + type: loki + uid: loki + editorMode: builder + expr: sum by(level) (count_over_time({namespace="matrix", app="matrix-synapse"} | pattern `<_> - <component> + - <_> - <level> - <trace>- <detail>` | level != `INFO` [$__interval])) + hide: false + intervalMs: 1000 + maxDataPoints: 43200 + queryType: range + range: true + refId: Count + - refId: Thresh + relativeTimeRange: + from: 600 + to: 0 + datasourceUid: __expr__ + model: + conditions: + - evaluator: + params: + - 20 + type: gt + operator: + type: and + query: + params: + - C + reducer: + params: [] + type: last + type: query + datasource: + type: __expr__ + uid: __expr__ + expression: A + hide: false + intervalMs: 1000 + maxDataPoints: 43200 + refId: Thresh + type: threshold + - refId: A + relativeTimeRange: + from: 600 + to: 0 + datasourceUid: __expr__ + model: + conditions: + - evaluator: + params: + - 0 + - 0 + type: gt + operator: + type: and + query: + params: [] + reducer: + params: [] + type: avg + type: query + datasource: + name: Expression + type: __expr__ + uid: __expr__ + expression: Count + intervalMs: 1000 + maxDataPoints: 43200 + reducer: last + refId: A + settings: + mode: replaceNN + replaceWithValue: 0 + type: reduce + noDataState: OK + execErrState: Error + for: 2m + annotations: + summary: Unusual logging for synapse.