From d760fb19932968d3707afee049e5134e13767ec8 Mon Sep 17 00:00:00 2001
From: Antoine Lecompte <38678863+nutgood@users.noreply.github.com>
Date: Thu, 20 Aug 2026 09:19:45 -0400
Subject: [PATCH] feat(o11y): scope alerts to project=yucca, CNPG dashboard,
title convention (#508)
---
o11y/README.md | 11 +-
o11y/alerts/backup-health.yaml | 17 +-
o11y/alerts/cilium.yaml | 5 +-
o11y/alerts/database.yaml | 22 +-
o11y/alerts/fabric.yaml | 27 +-
o11y/alerts/kubernetes.yaml | 34 +-
o11y/alerts/michael.yaml | 28 +-
o11y/alerts/telemetry.yaml | 22 +-
o11y/alerts/yucca-services.yaml | 9 +-
o11y/dashboards/.lint | 9 +-
o11y/dashboards/yucca-cilium-operator.json | 2 +-
o11y/dashboards/yucca-cilium.json | 2 +-
o11y/dashboards/yucca-cnpg.json | 9472 +++++++++++++++++
o11y/dashboards/yucca-fabric-htz-fsn1.json | 62 +-
o11y/dashboards/yucca-father-kubernetes.json | 74 +-
o11y/dashboards/yucca-flux-controllers.json | 2 +-
o11y/dashboards/yucca-flux.json | 2 +-
o11y/dashboards/yucca-hubble.json | 2 +-
o11y/dashboards/yucca-k8s-apiserver.json | 2 +-
o11y/dashboards/yucca-k8s-coredns.json | 2 +-
o11y/dashboards/yucca-k8s-global.json | 2 +-
o11y/dashboards/yucca-k8s-namespaces.json | 2 +-
o11y/dashboards/yucca-k8s-nodes.json | 2 +-
o11y/dashboards/yucca-k8s-pods.json | 2 +-
o11y/dashboards/yucca-logs-admin-api.json | 2 +-
o11y/dashboards/yucca-logs-meta.json | 2 +-
.../dashboards/yucca-logs-metrics-worker.json | 2 +-
o11y/dashboards/yucca-logs-michael.json | 2 +-
o11y/dashboards/yucca-logs-web.json | 2 +-
o11y/dashboards/yucca-logs-yucca-api.json | 2 +-
o11y/dashboards/yucca-michael.json | 28 +-
o11y/dashboards/yucca-node-exporter.json | 2 +-
o11y/dashboards/yucca-overview.json | 2 +-
o11y/dashboards/yucca-per-user.json | 126 +-
.../yucca-spice-blockdb-bluefs.json | 56 +-
o11y/dashboards/yucca-spice-ceph-health.json | 86 +-
o11y/dashboards/yucca-spice-nodes.json | 90 +-
.../yucca-spice-recovery-backfill.json | 28 +-
o11y/dashboards/yucca-spice-rgw-capacity.json | 148 +-
o11y/dashboards/yucca-telemetry-pipeline.json | 42 +-
o11y/dashboards/yucca-top-users.json | 94 +-
o11y/dashboards/yucca-vmagent.json | 2 +-
o11y/scripts/import-upstream.py | 204 +-
43 files changed, 10407 insertions(+), 327 deletions(-)
create mode 100644 o11y/dashboards/yucca-cnpg.json
diff --git a/o11y/README.md b/o11y/README.md
index a16ad0a1..cd6fe5b0 100644
--- a/o11y/README.md
+++ b/o11y/README.md
@@ -10,7 +10,10 @@ the alert rules.
## The set
Every series at o11y carries `cluster` (`father` k8s / `spice` ceph / `netops`
-fabric tier / `luke` staging), `site`, `env`. Each dashboard uses a
+fabric tier / `luke` staging), `site`, `env`, and `project="yucca"`. Dashboard
+titles follow o11y's `Component / Subarea` convention (`Yucca / Overview`,
+`Ceph / Health`, `Kubernetes / Views / Global`, `Logs / michael`, …); the
+`yucca` folder is what distinguishes our copies from o11y's own. Each dashboard uses a
`$datasource` variable — no datasource UIDs are baked in. Dashboards with logs
panels additionally use a `$logs_datasource` variable (the VictoriaLogs grafana
datasource); log lines carry the same `cluster`/`site`/`env` fields, stamped by
@@ -80,6 +83,7 @@ one). Provenance and pinned versions live in the script; each dashboard's
| `yucca-cilium.json`, `yucca-cilium-operator.json`, `yucca-hubble.json` | cilium/cilium (pinned to the deployed version; hubble http panels pruned — only dns/drop/tcp/flow/icmp metric sets are enabled) |
| `yucca-node-exporter.json` | rfmoz/grafana-dashboards node-exporter-full |
| `yucca-flux.json`, `yucca-flux-controllers.json` | fluxcd/flux2-monitoring-example |
+| `yucca-cnpg.json` | cloudnative-pg/grafana-dashboards, plus an appended Backups row (Barman Cloud: base-backup/PITR ages, WAL archive queue) mirroring the `yucca-database` alert group |
| `yucca-vmagent.json` | VictoriaMetrics official vmagent board |
Per-user metric inventory (used by the two user dashboards): michael counts
@@ -148,6 +152,11 @@ reason every dashboard's `$datasource` variable carries the
Conventions:
+- **`project="yucca"` on every selector**: the fleet datasource serves every
+ tenant's series (harbor, o11y itself, …), so each rule query is scoped to
+ the project label our vmagents stamp on all yucca-owned data — without it,
+ generic selectors (flux, cert-manager, k8s) fire on other tenants'
+ clusters.
- **Severity**: rules carry a `severity` label (`critical` | `warning`) for
o11y's notification policy to route on. Every rule carries a `description`
annotation that names the cluster/host, so a notification is actionable
diff --git a/o11y/alerts/backup-health.yaml b/o11y/alerts/backup-health.yaml
index d93e3bad..907c9abb 100644
--- a/o11y/alerts/backup-health.yaml
+++ b/o11y/alerts/backup-health.yaml
@@ -42,8 +42,10 @@ spec:
intervalMs: 300000
maxDataPoints: 43200
expr: >-
- absent(last_over_time(rgw_repository_size_bytes[10m])) and on()
- count(count_over_time(rgw_repository_size_bytes[24h])) > 0
+ absent(last_over_time(rgw_repository_size_bytes{project="yucca"}[10m]))
+ and on()
+ count(count_over_time(rgw_repository_size_bytes{project="yucca"}[24h]))
+ > 0
- refId: B
relativeTimeRange:
from: 600
@@ -92,11 +94,12 @@ spec:
maxDataPoints: 43200
expr: >-
count(count by (user_id) ((time() -
- last_over_time(user_last_successful_backup[10m])) > 172800)) /
- count(count by (user_id)
- (last_over_time(user_last_successful_backup[10m]))) > 0.25 and
- on() count(count by (user_id)
- (last_over_time(user_last_successful_backup[10m]))) >= 10
+ last_over_time(user_last_successful_backup{project="yucca"}[10m]))
+ > 172800)) / count(count by (user_id)
+ (last_over_time(user_last_successful_backup{project="yucca"}[10m])))
+ > 0.25 and on() count(count by (user_id)
+ (last_over_time(user_last_successful_backup{project="yucca"}[10m])))
+ >= 10
- refId: B
relativeTimeRange:
from: 600
diff --git a/o11y/alerts/cilium.yaml b/o11y/alerts/cilium.yaml
index 81629ee3..23a43185 100644
--- a/o11y/alerts/cilium.yaml
+++ b/o11y/alerts/cilium.yaml
@@ -39,7 +39,7 @@ spec:
maxDataPoints: 43200
expr: >-
kube_daemonset_status_number_unavailable{namespace="kube-system",
- daemonset="cilium"} > 0
+ daemonset="cilium", project="yucca"} > 0
- refId: B
relativeTimeRange:
from: 600
@@ -86,7 +86,8 @@ spec:
maxDataPoints: 43200
expr: >-
max by (cluster, pod, neighbor)
- (cilium_bgp_control_plane_session_state) == bool 0
+ (cilium_bgp_control_plane_session_state{project="yucca"}) ==
+ bool 0
- refId: B
relativeTimeRange:
from: 600
diff --git a/o11y/alerts/database.yaml b/o11y/alerts/database.yaml
index 3536f45c..6d0740c7 100644
--- a/o11y/alerts/database.yaml
+++ b/o11y/alerts/database.yaml
@@ -40,7 +40,7 @@ spec:
relativeTimeRange:
from: 600
to: 0
- datasourceUid: VictoriaMetrics
+ datasourceUid: VictoriaMetricsFleet
model:
refId: A
instant: true
@@ -50,7 +50,7 @@ spec:
expr: >-
max by (cluster)
(last_over_time(cnpg_collector_pg_wal_archive_status{value="ready",
- cluster=~"father|luke"}[5m])) > 2
+ cluster=~"father|luke", project="yucca"}[5m])) > 2
- refId: B
relativeTimeRange:
from: 600
@@ -89,7 +89,7 @@ spec:
relativeTimeRange:
from: 600
to: 0
- datasourceUid: VictoriaMetrics
+ datasourceUid: VictoriaMetricsFleet
model:
refId: A
instant: true
@@ -98,9 +98,9 @@ spec:
maxDataPoints: 43200
expr: >-
max by (cluster)
- (last_over_time(cnpg_collector_last_failed_backup_timestamp{cluster=~"father|luke"}[5m]))
+ (last_over_time(cnpg_collector_last_failed_backup_timestamp{cluster=~"father|luke", project="yucca"}[5m]))
- max by (cluster)
- (last_over_time(cnpg_collector_last_available_backup_timestamp{cluster=~"father|luke"}[5m]))
+ (last_over_time(cnpg_collector_last_available_backup_timestamp{cluster=~"father|luke", project="yucca"}[5m]))
> 0
- refId: B
relativeTimeRange:
@@ -138,7 +138,7 @@ spec:
relativeTimeRange:
from: 600
to: 0
- datasourceUid: VictoriaMetrics
+ datasourceUid: VictoriaMetricsFleet
model:
refId: A
instant: true
@@ -147,9 +147,9 @@ spec:
maxDataPoints: 43200
expr: >-
(time() - max by (cluster)
- (last_over_time(cnpg_collector_last_available_backup_timestamp{cluster=~"father|luke"}[5m]))
+ (last_over_time(cnpg_collector_last_available_backup_timestamp{cluster=~"father|luke", project="yucca"}[5m]))
> 93600) and max by (cluster)
- (last_over_time(cnpg_collector_last_available_backup_timestamp{cluster=~"father|luke"}[5m]))
+ (last_over_time(cnpg_collector_last_available_backup_timestamp{cluster=~"father|luke", project="yucca"}[5m]))
> 0
- refId: B
relativeTimeRange:
@@ -187,7 +187,7 @@ spec:
relativeTimeRange:
from: 600
to: 0
- datasourceUid: VictoriaMetrics
+ datasourceUid: VictoriaMetricsFleet
model:
refId: A
instant: true
@@ -195,8 +195,8 @@ spec:
intervalMs: 300000
maxDataPoints: 43200
expr: >-
- absent(last_over_time(cnpg_collector_up[10m])) and on()
- count(count_over_time(cnpg_collector_up[24h])) > 0
+ absent(last_over_time(cnpg_collector_up{project="yucca"}[10m])) and on()
+ count(count_over_time(cnpg_collector_up{project="yucca"}[24h])) > 0
- refId: B
relativeTimeRange:
from: 600
diff --git a/o11y/alerts/fabric.yaml b/o11y/alerts/fabric.yaml
index 89b3d658..53d80ca8 100644
--- a/o11y/alerts/fabric.yaml
+++ b/o11y/alerts/fabric.yaml
@@ -53,7 +53,7 @@ spec:
maxDataPoints: 43200
expr: >-
last_over_time(junos_bgp_session_up{cluster="netops",
- group!="cilium-nodes"}[5m]) == bool 0
+ group!="cilium-nodes", project="yucca"}[5m]) == bool 0
- refId: B
relativeTimeRange:
from: 600
@@ -96,7 +96,7 @@ spec:
maxDataPoints: 43200
expr: >-
sum(last_over_time(junos_bgp_session_up{cluster="netops",
- group!="cilium-nodes"}[5m])) == bool 0
+ group!="cilium-nodes", project="yucca"}[5m])) == bool 0
- refId: B
relativeTimeRange:
from: 600
@@ -139,7 +139,7 @@ spec:
maxDataPoints: 43200
expr: >-
last_over_time(junos_bgp_session_up{cluster="netops",
- group="cilium-nodes"}[5m]) == bool 0
+ group="cilium-nodes", project="yucca"}[5m]) == bool 0
- refId: B
relativeTimeRange:
from: 600
@@ -182,8 +182,8 @@ spec:
maxDataPoints: 43200
expr: >-
sum by (target)
- (last_over_time(junos_alarms_red_count{cluster="netops"}[5m])) >
- 0
+ (last_over_time(junos_alarms_red_count{cluster="netops",
+ project="yucca"}[5m])) > 0
- refId: B
relativeTimeRange:
from: 600
@@ -225,8 +225,8 @@ spec:
maxDataPoints: 43200
expr: >-
sum by (target)
- (last_over_time(junos_alarms_yellow_count{cluster="netops"}[5m]))
- > 0
+ (last_over_time(junos_alarms_yellow_count{cluster="netops",
+ project="yucca"}[5m])) > 0
- refId: B
relativeTimeRange:
from: 600
@@ -270,9 +270,9 @@ spec:
expr: >-
sum by (target, name) (
rate(junos_interface_receive_errors{cluster="netops",
- name=~"ae.+|et-.+|xe-.+"}[10m]) +
+ name=~"ae.+|et-.+|xe-.+", project="yucca"}[10m]) +
rate(junos_interface_transmit_errors{cluster="netops",
- name=~"ae.+|et-.+|xe-.+"}[10m])) > 0.01
+ name=~"ae.+|et-.+|xe-.+", project="yucca"}[10m])) > 0.01
- refId: B
relativeTimeRange:
from: 600
@@ -314,7 +314,8 @@ spec:
intervalMs: 300000
maxDataPoints: 43200
expr: >-
- last_over_time(up{cluster="netops", job="junos"}[5m]) == bool 0
+ last_over_time(up{cluster="netops", job="junos",
+ project="yucca"}[5m]) == bool 0
- refId: B
relativeTimeRange:
from: 600
@@ -358,9 +359,9 @@ spec:
intervalMs: 300000
maxDataPoints: 43200
expr: >-
- absent(sflow_ifinoctets{cluster="netops"}) and on()
- count(count_over_time(sflow_ifinoctets{cluster="netops"}[24h]))
- > 0
+ absent(sflow_ifinoctets{cluster="netops", project="yucca"}) and
+ on() count(count_over_time(sflow_ifinoctets{cluster="netops",
+ project="yucca"}[24h])) > 0
- refId: B
relativeTimeRange:
from: 600
diff --git a/o11y/alerts/kubernetes.yaml b/o11y/alerts/kubernetes.yaml
index 1257cbb9..70864a03 100644
--- a/o11y/alerts/kubernetes.yaml
+++ b/o11y/alerts/kubernetes.yaml
@@ -47,7 +47,7 @@ spec:
maxDataPoints: 43200
expr: >-
count by (cluster, customresource_kind, exported_namespace,
- name) (gotk_resource_info{ready="False"}) > 0
+ name) (gotk_resource_info{ready="False", project="yucca"}) > 0
- refId: B
relativeTimeRange:
from: 600
@@ -90,8 +90,8 @@ spec:
maxDataPoints: 43200
expr: >-
sum by (cluster, pod) (rate(
- controller_runtime_reconcile_errors_total{namespace="flux-system"}[10m]))
- > 0.02
+ controller_runtime_reconcile_errors_total{namespace="flux-system",
+ project="yucca"}[10m])) > 0.02
- refId: B
relativeTimeRange:
from: 600
@@ -137,8 +137,9 @@ spec:
maxDataPoints: 43200
expr: >-
((time() + 14 * 86400) - min by (cluster, exported_namespace,
- name) (certmanager_certificate_expiration_timestamp_seconds)) >
- 0
+ name)
+ (certmanager_certificate_expiration_timestamp_seconds{project="yucca"}))
+ > 0
- refId: B
relativeTimeRange:
from: 600
@@ -181,7 +182,8 @@ spec:
maxDataPoints: 43200
expr: >-
max by (cluster, exported_namespace, name)
- (certmanager_certificate_ready_status{condition="False"}) == 1
+ (certmanager_certificate_ready_status{condition="False",
+ project="yucca"}) == 1
- refId: B
relativeTimeRange:
from: 600
@@ -223,7 +225,7 @@ spec:
maxDataPoints: 43200
expr: >-
kube_node_status_condition{cluster=~"father|luke",
- condition="Ready", status="true"} == bool 0
+ condition="Ready", status="true", project="yucca"} == bool 0
- refId: B
relativeTimeRange:
from: 600
@@ -265,8 +267,8 @@ spec:
intervalMs: 300000
maxDataPoints: 43200
expr: >-
- increase(kube_pod_container_status_restarts_total{cluster=~"father|luke"}[30m])
- > 4
+ increase(kube_pod_container_status_restarts_total{cluster=~"father|luke",
+ project="yucca"}[30m]) > 4
- refId: B
relativeTimeRange:
from: 600
@@ -309,9 +311,10 @@ spec:
maxDataPoints: 43200
expr: >-
(1 -
- kubelet_volume_stats_available_bytes{cluster=~"father|luke"} /
- kubelet_volume_stats_capacity_bytes{cluster=~"father|luke"}) >
- 0.9
+ kubelet_volume_stats_available_bytes{cluster=~"father|luke",
+ project="yucca"} /
+ kubelet_volume_stats_capacity_bytes{cluster=~"father|luke",
+ project="yucca"}) > 0.9
- refId: B
relativeTimeRange:
from: 600
@@ -355,9 +358,10 @@ spec:
maxDataPoints: 43200
expr: >-
(1 -
- kubelet_volume_stats_available_bytes{cluster=~"father|luke"} /
- kubelet_volume_stats_capacity_bytes{cluster=~"father|luke"}) >
- 0.95
+ kubelet_volume_stats_available_bytes{cluster=~"father|luke",
+ project="yucca"} /
+ kubelet_volume_stats_capacity_bytes{cluster=~"father|luke",
+ project="yucca"}) > 0.95
- refId: B
relativeTimeRange:
from: 600
diff --git a/o11y/alerts/michael.yaml b/o11y/alerts/michael.yaml
index 886c96cc..c056858f 100644
--- a/o11y/alerts/michael.yaml
+++ b/o11y/alerts/michael.yaml
@@ -40,8 +40,9 @@ spec:
maxDataPoints: 43200
expr: >-
sum by (cluster) (rate({__name__="http.server.request.errors",
- status=~"5.."}[5m])) / sum by (cluster)
- (rate({__name__="http.server.request.count"}[5m])) > 0.05
+ status=~"5..", project="yucca"}[5m])) / sum by (cluster)
+ (rate({__name__="http.server.request.count",
+ project="yucca"}[5m])) > 0.05
- refId: B
relativeTimeRange:
from: 600
@@ -84,8 +85,9 @@ spec:
maxDataPoints: 43200
expr: >-
sum by (cluster) (rate({__name__="http.server.request.errors",
- status=~"5.."}[5m])) / sum by (cluster)
- (rate({__name__="http.server.request.count"}[5m])) > 0.2
+ status=~"5..", project="yucca"}[5m])) / sum by (cluster)
+ (rate({__name__="http.server.request.count",
+ project="yucca"}[5m])) > 0.2
- refId: B
relativeTimeRange:
from: 600
@@ -127,8 +129,8 @@ spec:
intervalMs: 300000
maxDataPoints: 43200
expr: >-
- min by (cluster, backend) ({__name__="s3.backend.healthy"}) ==
- bool 0
+ min by (cluster, backend) ({__name__="s3.backend.healthy",
+ project="yucca"}) == bool 0
- refId: B
relativeTimeRange:
from: 600
@@ -170,7 +172,7 @@ spec:
maxDataPoints: 43200
expr: >-
sum by (cluster) (max by (cluster, backend)
- ({__name__="s3.backend.healthy"})) == bool 0
+ ({__name__="s3.backend.healthy", project="yucca"})) == bool 0
- refId: B
relativeTimeRange:
from: 600
@@ -213,7 +215,8 @@ spec:
maxDataPoints: 43200
expr: >-
sum by (cluster, operation)
- (rate({__name__="storage.backend.errors"}[5m])) > 0.1
+ (rate({__name__="storage.backend.errors", project="yucca"}[5m]))
+ > 0.1
- refId: B
relativeTimeRange:
from: 600
@@ -256,8 +259,8 @@ spec:
intervalMs: 300000
maxDataPoints: 43200
expr: >-
- sum by (cluster)
- (increase({__name__="storage.cluster.unknown"}[10m])) > 0
+ sum by (cluster) (increase({__name__="storage.cluster.unknown",
+ project="yucca"}[10m])) > 0
- refId: B
relativeTimeRange:
from: 600
@@ -300,7 +303,8 @@ spec:
maxDataPoints: 43200
expr: >-
histogram_quantile(0.99, sum by (cluster, le)
- (rate({__name__="http.server.request.ttfb_bucket"}[10m]))) > 10
+ (rate({__name__="http.server.request.ttfb_bucket",
+ project="yucca"}[10m]))) > 10
- refId: B
relativeTimeRange:
from: 600
@@ -342,7 +346,7 @@ spec:
maxDataPoints: 43200
expr: >-
kube_deployment_status_replicas_available{namespace="yucca",
- deployment="yucca-michael"} == bool 0
+ deployment="yucca-michael", project="yucca"} == bool 0
- refId: B
relativeTimeRange:
from: 600
diff --git a/o11y/alerts/telemetry.yaml b/o11y/alerts/telemetry.yaml
index 92a10688..54352095 100644
--- a/o11y/alerts/telemetry.yaml
+++ b/o11y/alerts/telemetry.yaml
@@ -42,8 +42,10 @@ spec:
intervalMs: 300000
maxDataPoints: 43200
expr: >-
- absent(last_over_time(up{cluster="father"}[5m])) and on()
- count(count_over_time(up{cluster="father"}[24h])) > 0
+ absent(last_over_time(up{cluster="father",
+ project="yucca"}[5m])) and on()
+ count(count_over_time(up{cluster="father",
+ project="yucca"}[24h])) > 0
- refId: B
relativeTimeRange:
from: 600
@@ -84,8 +86,9 @@ spec:
intervalMs: 300000
maxDataPoints: 43200
expr: >-
- absent(last_over_time(up{cluster="luke"}[5m])) and on()
- count(count_over_time(up{cluster="luke"}[24h])) > 0
+ absent(last_over_time(up{cluster="luke", project="yucca"}[5m]))
+ and on() count(count_over_time(up{cluster="luke",
+ project="yucca"}[24h])) > 0
- refId: B
relativeTimeRange:
from: 600
@@ -126,8 +129,10 @@ spec:
intervalMs: 300000
maxDataPoints: 43200
expr: >-
- absent(last_over_time(up{cluster="netops"}[5m])) and on()
- count(count_over_time(up{cluster="netops"}[24h])) > 0
+ absent(last_over_time(up{cluster="netops",
+ project="yucca"}[5m])) and on()
+ count(count_over_time(up{cluster="netops",
+ project="yucca"}[24h])) > 0
- refId: B
relativeTimeRange:
from: 600
@@ -169,8 +174,9 @@ spec:
intervalMs: 300000
maxDataPoints: 43200
expr: >-
- absent(last_over_time(up{cluster="spice"}[5m])) and on()
- count(count_over_time(up{cluster="spice"}[24h])) > 0
+ absent(last_over_time(up{cluster="spice", project="yucca"}[5m]))
+ and on() count(count_over_time(up{cluster="spice",
+ project="yucca"}[24h])) > 0
- refId: B
relativeTimeRange:
from: 600
diff --git a/o11y/alerts/yucca-services.yaml b/o11y/alerts/yucca-services.yaml
index 3ad5f326..6323e3e2 100644
--- a/o11y/alerts/yucca-services.yaml
+++ b/o11y/alerts/yucca-services.yaml
@@ -37,8 +37,9 @@ spec:
intervalMs: 300000
maxDataPoints: 43200
expr: >-
- sum by (cluster) (rate(api_request_count{status=~"5.."}[5m])) /
- sum by (cluster) (rate(api_request_count[5m])) > 0.05
+ sum by (cluster) (rate(api_request_count{status=~"5..",
+ project="yucca"}[5m])) / sum by (cluster)
+ (rate(api_request_count{project="yucca"}[5m])) > 0.05
- refId: B
relativeTimeRange:
from: 600
@@ -85,8 +86,8 @@ spec:
maxDataPoints: 43200
expr: >-
kube_deployment_status_replicas_available{namespace="yucca",
- deployment=~"yucca-api|yucca-admin-api|yucca-web|yucca-meta|yucca-metrics-worker"}
- == bool 0
+ deployment=~"yucca-api|yucca-admin-api|yucca-web|yucca-meta|yucca-metrics-worker",
+ project="yucca"} == bool 0
- refId: B
relativeTimeRange:
from: 600
diff --git a/o11y/dashboards/.lint b/o11y/dashboards/.lint
index 43d17318..c753576e 100644
--- a/o11y/dashboards/.lint
+++ b/o11y/dashboards/.lint
@@ -26,13 +26,16 @@ exclusions:
# units upstream ships; re-import would revert any local fix-ups.
panel-units-rule:
entries:
- - dashboard: "Yucca: Hubble"
+ - dashboard: "Cilium / Hubble"
reason: imported upstream dashboard; graph panels predate fieldConfig units
- - dashboard: "Yucca: Cilium operator"
+ - dashboard: "Cilium / Operator"
reason: imported upstream dashboard; graph panels predate fieldConfig units
target-promql-rule:
entries:
- - dashboard: "Yucca: Michael (restic gateway)"
+ - dashboard: "Yucca / Michael"
panel: Top source addresses (selected range)
targetIdx: "0"
reason: LogsQL stats query against $logs_datasource, not PromQL
+ - dashboard: "CloudNativePG"
+ targetIdx: "4"
+ reason: grafana server-side math expression target (__expr__), not PromQL
diff --git a/o11y/dashboards/yucca-cilium-operator.json b/o11y/dashboards/yucca-cilium-operator.json
index d6d2568c..ce8e0342 100644
--- a/o11y/dashboards/yucca-cilium-operator.json
+++ b/o11y/dashboards/yucca-cilium-operator.json
@@ -1050,7 +1050,7 @@
]
},
"timezone": "",
- "title": "Yucca: Cilium operator",
+ "title": "Cilium / Operator",
"uid": "yucca-cilium-operator",
"version": 2,
"description": "Imported from https://raw.githubusercontent.com/cilium/cilium/v1.19.5/install/kubernetes/cilium/files/cilium-operator/dashboards/cilium-operator-dashboard.json by o11y/scripts/import-upstream.py; local edits are overwritten on re-import."
diff --git a/o11y/dashboards/yucca-cilium.json b/o11y/dashboards/yucca-cilium.json
index 47470018..36b56ea6 100644
--- a/o11y/dashboards/yucca-cilium.json
+++ b/o11y/dashboards/yucca-cilium.json
@@ -11047,7 +11047,7 @@
]
},
"timezone": "utc",
- "title": "Yucca: Cilium agent",
+ "title": "Cilium / Agent",
"uid": "yucca-cilium",
"version": 1,
"weekStart": ""
diff --git a/o11y/dashboards/yucca-cnpg.json b/o11y/dashboards/yucca-cnpg.json
new file mode 100644
index 00000000..a67e6727
--- /dev/null
+++ b/o11y/dashboards/yucca-cnpg.json
@@ -0,0 +1,9472 @@
+{
+ "annotations": {
+ "list": [
+ {
+ "builtIn": 1,
+ "datasource": {
+ "type": "datasource",
+ "uid": "grafana"
+ },
+ "enable": true,
+ "hide": true,
+ "iconColor": "rgba(0, 211, 255, 1)",
+ "name": "Annotations & Alerts",
+ "target": {
+ "limit": 100,
+ "matchAny": false,
+ "tags": [],
+ "type": "dashboard"
+ },
+ "type": "dashboard"
+ }
+ ]
+ },
+ "editable": true,
+ "fiscalYearStartMonth": 0,
+ "graphTooltip": 1,
+ "links": [
+ {
+ "asDropdown": false,
+ "icon": "external link",
+ "includeVars": false,
+ "keepTime": false,
+ "tags": [
+ "cloudnativepg"
+ ],
+ "targetBlank": false,
+ "title": "Related Dashboards",
+ "tooltip": "",
+ "type": "dashboards",
+ "url": ""
+ }
+ ],
+ "liveNow": false,
+ "panels": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "gridPos": {
+ "h": 7,
+ "w": 3,
+ "x": 0,
+ "y": 0
+ },
+ "id": 676,
+ "options": {
+ "alertInstanceLabelFilter": "{namespace=~\"$namespace\",pod=~\"$instances\"}",
+ "alertName": "",
+ "dashboardAlerts": false,
+ "folder": "",
+ "groupBy": [],
+ "groupMode": "default",
+ "maxItems": 20,
+ "sortOrder": 1,
+ "stateFilter": {
+ "error": true,
+ "firing": true,
+ "noData": false,
+ "normal": true,
+ "pending": true
+ },
+ "viewMode": "list"
+ },
+ "title": "Alerts",
+ "type": "alertlist"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "gridPos": {
+ "h": 1,
+ "w": 4,
+ "x": 3,
+ "y": 0
+ },
+ "id": 586,
+ "options": {
+ "code": {
+ "language": "plaintext",
+ "showLineNumbers": false,
+ "showMiniMap": false
+ },
+ "content": "",
+ "mode": "markdown"
+ },
+ "pluginVersion": "10.3.3",
+ "title": "Health",
+ "type": "text"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "gridPos": {
+ "h": 1,
+ "w": 12,
+ "x": 7,
+ "y": 0
+ },
+ "id": 336,
+ "options": {
+ "code": {
+ "language": "plaintext",
+ "showLineNumbers": false,
+ "showMiniMap": false
+ },
+ "content": "",
+ "mode": "markdown"
+ },
+ "pluginVersion": "10.3.3",
+ "title": "Overview",
+ "type": "text"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "gridPos": {
+ "h": 1,
+ "w": 2,
+ "x": 19,
+ "y": 0
+ },
+ "id": 352,
+ "options": {
+ "code": {
+ "language": "plaintext",
+ "showLineNumbers": false,
+ "showMiniMap": false
+ },
+ "content": "",
+ "mode": "markdown"
+ },
+ "pluginVersion": "10.3.3",
+ "title": "Storage",
+ "type": "text"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "gridPos": {
+ "h": 1,
+ "w": 3,
+ "x": 21,
+ "y": 0
+ },
+ "id": 354,
+ "options": {
+ "code": {
+ "language": "plaintext",
+ "showLineNumbers": false,
+ "showMiniMap": false
+ },
+ "content": "",
+ "mode": "markdown"
+ },
+ "pluginVersion": "10.3.3",
+ "title": "Backups",
+ "type": "text"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "description": "Cluster Replication Health represents the availability of replica servers available to replace the primary in case of a failure.",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [
+ {
+ "options": {
+ "0": {
+ "color": "green",
+ "index": 1,
+ "text": "Healthy"
+ },
+ "-1": {
+ "color": "red",
+ "index": 0,
+ "text": "None"
+ }
+ },
+ "type": "value"
+ },
+ {
+ "options": {
+ "from": 2,
+ "result": {
+ "color": "orange",
+ "index": 2,
+ "text": "Degraded"
+ },
+ "to": 999
+ },
+ "type": "range"
+ }
+ ],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ }
+ ]
+ },
+ "unitScale": true
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 2,
+ "w": 2,
+ "x": 3,
+ "y": 1
+ },
+ "id": 585,
+ "options": {
+ "colorMode": "background",
+ "graphMode": "none",
+ "justifyMode": "auto",
+ "orientation": "auto",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showPercentChange": false,
+ "textMode": "auto",
+ "wideLayout": true
+ },
+ "pluginVersion": "10.3.3",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "editorMode": "code",
+ "expr": "(max(cnpg_pg_replication_streaming_replicas{namespace=~\"$namespace\", pod=~\"$instances\", cluster=~\"$k8s_cluster\"}) - sum(cnpg_pg_replication_is_wal_receiver_up{namespace=~\"$namespace\", pod=~\"$instances\", cluster=~\"$k8s_cluster\"})) + (clamp_max(max(cnpg_pg_replication_streaming_replicas{namespace=~\"$namespace\", pod=~\"$instances\", cluster=~\"$k8s_cluster\"}), 1) - 1)",
+ "legendFormat": "Replication",
+ "range": true,
+ "refId": "A"
+ }
+ ],
+ "type": "stat"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "description": "High lag indicates issue with replication. Network or storage interfaces may not have enough bandwidth to handle incoming traffic and replication at the same time.",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [
+ {
+ "options": {
+ "match": "null",
+ "result": {
+ "color": "text",
+ "index": 0,
+ "text": "No data"
+ }
+ },
+ "type": "special"
+ },
+ {
+ "options": {
+ "from": 0,
+ "result": {
+ "color": "green",
+ "index": 1,
+ "text": "Healthy"
+ },
+ "to": 0.1
+ },
+ "type": "range"
+ },
+ {
+ "options": {
+ "from": 0.1,
+ "result": {
+ "color": "yellow",
+ "index": 2,
+ "text": "Sub-second"
+ },
+ "to": 1
+ },
+ "type": "range"
+ },
+ {
+ "options": {
+ "from": 1,
+ "result": {
+ "color": "orange",
+ "index": 3,
+ "text": "Delayed"
+ },
+ "to": 5
+ },
+ "type": "range"
+ },
+ {
+ "options": {
+ "from": 5,
+ "result": {
+ "color": "red",
+ "index": 4,
+ "text": "High"
+ },
+ "to": 4294967295
+ },
+ "type": "range"
+ }
+ ],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ }
+ ]
+ },
+ "unitScale": true
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 2,
+ "w": 1,
+ "x": 5,
+ "y": 1
+ },
+ "id": 590,
+ "options": {
+ "colorMode": "background",
+ "graphMode": "none",
+ "justifyMode": "auto",
+ "orientation": "auto",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showPercentChange": false,
+ "textMode": "value_and_name",
+ "wideLayout": true
+ },
+ "pluginVersion": "10.3.3",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "editorMode": "code",
+ "expr": "max(cnpg_pg_replication_lag{namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"}) + max(cnpg_pg_stat_replication_write_lag_seconds{namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"}) + max(cnpg_pg_stat_replication_flush_lag_seconds{namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"}) + max(cnpg_pg_stat_replication_replay_lag_seconds{namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"})",
+ "hide": false,
+ "instant": false,
+ "legendFormat": "Lag",
+ "range": true,
+ "refId": "LAG"
+ }
+ ],
+ "type": "stat"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "description": "Low disk space or low inode count will result in data loss.",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [
+ {
+ "options": {
+ "match": "null",
+ "result": {
+ "color": "text",
+ "index": 0,
+ "text": "No data"
+ }
+ },
+ "type": "special"
+ },
+ {
+ "options": {
+ "from": 0,
+ "result": {
+ "color": "green",
+ "index": 1,
+ "text": "Healthy"
+ },
+ "to": 0.8
+ },
+ "type": "range"
+ },
+ {
+ "options": {
+ "from": 0.8,
+ "result": {
+ "color": "orange",
+ "index": 2,
+ "text": "Warning"
+ },
+ "to": 0.9
+ },
+ "type": "range"
+ },
+ {
+ "options": {
+ "from": 0.9,
+ "result": {
+ "color": "red",
+ "index": 3,
+ "text": "Critical"
+ },
+ "to": 0.98
+ },
+ "type": "range"
+ },
+ {
+ "options": {
+ "from": 0.98,
+ "result": {
+ "color": "red",
+ "index": 4,
+ "text": "Data Loss"
+ },
+ "to": 1
+ },
+ "type": "range"
+ },
+ {
+ "options": {
+ "from": 1,
+ "result": {
+ "color": "red",
+ "index": 5,
+ "text": "Full"
+ },
+ "to": 4294967295
+ },
+ "type": "range"
+ }
+ ],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ }
+ ]
+ },
+ "unitScale": true
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 2,
+ "w": 1,
+ "x": 6,
+ "y": 1
+ },
+ "id": 613,
+ "options": {
+ "colorMode": "background",
+ "graphMode": "none",
+ "justifyMode": "auto",
+ "orientation": "auto",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showPercentChange": false,
+ "textMode": "value_and_name",
+ "wideLayout": true
+ },
+ "pluginVersion": "10.3.3",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "editorMode": "code",
+ "expr": "max((max(max by(persistentvolumeclaim) (1 - kubelet_volume_stats_available_bytes{namespace=\"$namespace\", persistentvolumeclaim=~\"$instances\", cluster=~\"$k8s_cluster\"} / kubelet_volume_stats_capacity_bytes{namespace=\"$namespace\", persistentvolumeclaim=~\"$instances\", cluster=~\"$k8s_cluster\"}))) OR (max by(persistentvolumeclaim) (kubelet_volume_stats_inodes_used{namespace=\"$namespace\", persistentvolumeclaim=~\"$instances\", cluster=~\"$k8s_cluster\"} / kubelet_volume_stats_inodes{namespace=\"$namespace\", persistentvolumeclaim=~\"$instances\", cluster=~\"$k8s_cluster\"})))",
+ "hide": false,
+ "legendFormat": "Storage",
+ "range": true,
+ "refId": "STORAGE"
+ }
+ ],
+ "type": "stat"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "description": "",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "dark-blue",
+ "value": null
+ }
+ ]
+ },
+ "unit": "dateTimeFromNow",
+ "unitScale": true
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 2,
+ "x": 7,
+ "y": 1
+ },
+ "id": 338,
+ "options": {
+ "colorMode": "background",
+ "graphMode": "none",
+ "justifyMode": "auto",
+ "orientation": "horizontal",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showPercentChange": false,
+ "text": {},
+ "textMode": "value",
+ "wideLayout": true
+ },
+ "pluginVersion": "10.3.3",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "editorMode": "code",
+ "exemplar": false,
+ "expr": "max(cnpg_pg_postmaster_start_time{namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"})*1000",
+ "format": "time_series",
+ "hide": false,
+ "instant": true,
+ "interval": "",
+ "intervalFactor": 1,
+ "legendFormat": "",
+ "refId": "A"
+ }
+ ],
+ "title": "Last failover",
+ "transformations": [],
+ "type": "stat"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ }
+ ]
+ },
+ "unitScale": true
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 6,
+ "w": 2,
+ "x": 9,
+ "y": 1
+ },
+ "id": 342,
+ "interval": "1m",
+ "options": {
+ "colorMode": "value",
+ "graphMode": "area",
+ "justifyMode": "auto",
+ "orientation": "auto",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showPercentChange": false,
+ "textMode": "auto",
+ "wideLayout": true
+ },
+ "pluginVersion": "10.3.3",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "editorMode": "code",
+ "exemplar": true,
+ "expr": "sum(rate(cnpg_pg_stat_database_xact_commit{namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"}[$__rate_interval])) + sum(rate(cnpg_pg_stat_database_xact_rollback{namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"}[$__rate_interval]))",
+ "interval": "",
+ "legendFormat": "TPS",
+ "range": true,
+ "refId": "TPS"
+ }
+ ],
+ "title": "TPS",
+ "type": "stat"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "description": "CPU Utilisation from Requests",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [
+ {
+ "options": {
+ "match": "null",
+ "result": {
+ "color": "text",
+ "index": 0,
+ "text": "Missing request"
+ }
+ },
+ "type": "special"
+ }
+ ],
+ "max": 1,
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "orange",
+ "value": 0.8
+ },
+ {
+ "color": "red",
+ "value": 0.9
+ }
+ ]
+ },
+ "unit": "percentunit",
+ "unitScale": true
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 4,
+ "w": 2,
+ "x": 11,
+ "y": 1
+ },
+ "id": 344,
+ "interval": "1m",
+ "links": [],
+ "options": {
+ "minVizHeight": 75,
+ "minVizWidth": 75,
+ "orientation": "horizontal",
+ "reduceOptions": {
+ "calcs": [
+ "mean"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showThresholdLabels": false,
+ "showThresholdMarkers": true,
+ "sizing": "auto"
+ },
+ "pluginVersion": "10.3.3",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "editorMode": "code",
+ "expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{namespace=\"$namespace\", pod=~\"$instances\", cluster=~\"$k8s_cluster\"}) / sum(kube_pod_container_resource_requests{job=\"kube-state-metrics\", namespace=\"$namespace\", resource=\"cpu\", pod=~\"$instances\", cluster=~\"$k8s_cluster\"})",
+ "format": "time_series",
+ "instant": true,
+ "intervalFactor": 2,
+ "refId": "A"
+ }
+ ],
+ "title": "CPU Utilisation",
+ "type": "gauge"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "description": "Memory Utilisation from Requests",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [
+ {
+ "options": {
+ "match": "null",
+ "result": {
+ "color": "text",
+ "index": 0,
+ "text": "Missing request"
+ }
+ },
+ "type": "special"
+ }
+ ],
+ "max": 1,
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "orange",
+ "value": 0.8
+ },
+ {
+ "color": "red",
+ "value": 0.9
+ }
+ ]
+ },
+ "unit": "percentunit",
+ "unitScale": true
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 4,
+ "w": 2,
+ "x": 13,
+ "y": 1
+ },
+ "id": 348,
+ "interval": "1m",
+ "links": [],
+ "options": {
+ "minVizHeight": 75,
+ "minVizWidth": 75,
+ "orientation": "horizontal",
+ "reduceOptions": {
+ "calcs": [
+ "mean"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showThresholdLabels": false,
+ "showThresholdMarkers": true,
+ "sizing": "auto"
+ },
+ "pluginVersion": "10.3.3",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "editorMode": "code",
+ "expr": "sum(container_memory_working_set_bytes{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", namespace=\"$namespace\",container!=\"\", image!=\"\", pod=~\"$instances\", cluster=~\"$k8s_cluster\"}) / sum(max by(pod) (kube_pod_container_resource_requests{job=\"kube-state-metrics\", namespace=\"$namespace\", resource=\"memory\", pod=~\"$instances\", cluster=~\"$k8s_cluster\"}))",
+ "format": "time_series",
+ "instant": true,
+ "intervalFactor": 2,
+ "refId": "A"
+ }
+ ],
+ "title": "Memory Utilisation",
+ "type": "gauge"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [],
+ "max": 30,
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "yellow",
+ "value": 1
+ },
+ {
+ "color": "orange",
+ "value": 10
+ },
+ {
+ "color": "red",
+ "value": 20
+ }
+ ]
+ },
+ "unit": "s",
+ "unitScale": true
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 2,
+ "x": 15,
+ "y": 1
+ },
+ "id": 465,
+ "options": {
+ "colorMode": "value",
+ "graphMode": "area",
+ "justifyMode": "auto",
+ "orientation": "auto",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showPercentChange": false,
+ "textMode": "auto",
+ "wideLayout": true
+ },
+ "pluginVersion": "10.3.3",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "editorMode": "code",
+ "exemplar": false,
+ "expr": "max(cnpg_pg_replication_lag{namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"})",
+ "instant": true,
+ "legendFormat": "__auto",
+ "range": false,
+ "refId": "A"
+ }
+ ],
+ "title": "Replication Lag",
+ "type": "stat"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "yellow",
+ "value": 1
+ },
+ {
+ "color": "orange",
+ "value": 10
+ },
+ {
+ "color": "red",
+ "value": 20
+ }
+ ]
+ },
+ "unit": "s",
+ "unitScale": true
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 2,
+ "x": 17,
+ "y": 1
+ },
+ "id": 467,
+ "options": {
+ "colorMode": "value",
+ "graphMode": "area",
+ "justifyMode": "auto",
+ "orientation": "auto",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showPercentChange": false,
+ "textMode": "auto",
+ "wideLayout": true
+ },
+ "pluginVersion": "10.3.3",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "editorMode": "code",
+ "expr": "max(cnpg_pg_stat_replication_write_lag_seconds{namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"})",
+ "legendFormat": "__auto",
+ "range": true,
+ "refId": "A"
+ }
+ ],
+ "title": "Write Lag",
+ "type": "stat"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [],
+ "max": 1,
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "orange",
+ "value": 0.8
+ },
+ {
+ "color": "red",
+ "value": 0.9
+ }
+ ]
+ },
+ "unit": "percentunit",
+ "unitScale": true
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 4,
+ "w": 2,
+ "x": 19,
+ "y": 1
+ },
+ "id": 356,
+ "options": {
+ "minVizHeight": 75,
+ "minVizWidth": 75,
+ "orientation": "auto",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showThresholdLabels": false,
+ "showThresholdMarkers": true,
+ "sizing": "auto"
+ },
+ "pluginVersion": "10.3.3",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "editorMode": "code",
+ "exemplar": false,
+ "expr": "max(max by(persistentvolumeclaim) (1 - kubelet_volume_stats_available_bytes{namespace=\"$namespace\", persistentvolumeclaim=~\"$instances\", cluster=~\"$k8s_cluster\"} / kubelet_volume_stats_capacity_bytes{namespace=\"$namespace\", persistentvolumeclaim=~\"$instances\", cluster=~\"$k8s_cluster\"}))",
+ "format": "time_series",
+ "instant": true,
+ "interval": "",
+ "legendFormat": "DATA",
+ "range": false,
+ "refId": "DATA"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "editorMode": "code",
+ "exemplar": false,
+ "expr": "max(max by(persistentvolumeclaim) (1 - kubelet_volume_stats_available_bytes{namespace=\"$namespace\", persistentvolumeclaim=~\"(${instances})-wal\", cluster=~\"$k8s_cluster\"} / kubelet_volume_stats_capacity_bytes{namespace=\"$namespace\", persistentvolumeclaim=~\"(${instances})-wal\", cluster=~\"$k8s_cluster\"}))",
+ "format": "time_series",
+ "instant": true,
+ "interval": "",
+ "legendFormat": "WAL",
+ "range": false,
+ "refId": "WAL"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "editorMode": "code",
+ "exemplar": false,
+ "expr": "max(\n sum by (namespace,persistentvolumeclaim) (kubelet_volume_stats_used_bytes{namespace=\"$namespace\", persistentvolumeclaim=~\"(${instances})-tbs.*\", cluster=~\"$k8s_cluster\"}) \n /\n sum by (namespace,persistentvolumeclaim) (kubelet_volume_stats_capacity_bytes{namespace=\"$namespace\", persistentvolumeclaim=~\"(${instances})-tbs.*\", cluster=~\"$k8s_cluster\"}) \n *\n on(namespace, persistentvolumeclaim) group_left(volume)\n kube_pod_spec_volumes_persistentvolumeclaims_info{pod=~\"$instances\", cluster=~\"$k8s_cluster\"}\n)",
+ "hide": false,
+ "instant": true,
+ "legendFormat": "Tablespaces (max)",
+ "range": false,
+ "refId": "Max Tablespace"
+ }
+ ],
+ "title": "Volume Space Usage",
+ "type": "gauge"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "description": "Elapsed time since the last successful base backup.",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [
+ {
+ "options": {
+ "from": 1,
+ "result": {
+ "color": "semi-dark-orange",
+ "index": 0,
+ "text": "Invalid date"
+ },
+ "to": 1e+42
+ },
+ "type": "range"
+ },
+ {
+ "options": {
+ "from": -2147483648,
+ "result": {
+ "color": "red",
+ "index": 1,
+ "text": "N/A"
+ },
+ "to": -1577847600
+ },
+ "type": "range"
+ }
+ ],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "semi-dark-red",
+ "value": -108000
+ },
+ {
+ "color": "semi-dark-orange",
+ "value": -107999
+ },
+ {
+ "color": "#EAB839",
+ "value": -89999
+ },
+ {
+ "color": "green",
+ "value": -86399
+ }
+ ]
+ },
+ "unit": "dtdurations",
+ "unitScale": true
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 2,
+ "w": 3,
+ "x": 21,
+ "y": 1
+ },
+ "id": 360,
+ "options": {
+ "colorMode": "value",
+ "graphMode": "none",
+ "justifyMode": "auto",
+ "orientation": "auto",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showPercentChange": false,
+ "textMode": "auto",
+ "wideLayout": true
+ },
+ "pluginVersion": "10.3.3",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "editorMode": "code",
+ "exemplar": false,
+ "expr": "-(time() - max({__name__=~\"cnpg_collector_last_available_backup_timestamp|barman_cloud_cloudnative_pg_io_last_available_backup_timestamp\",namespace=\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"}))",
+ "instant": true,
+ "legendFormat": "__auto",
+ "range": false,
+ "refId": "A"
+ }
+ ],
+ "title": "Last Base Backup",
+ "type": "stat"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "description": "High resource usage (CPU, Memory, DB Connections)",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [
+ {
+ "options": {
+ "match": "null",
+ "result": {
+ "color": "text",
+ "index": 0,
+ "text": "No data"
+ }
+ },
+ "type": "special"
+ },
+ {
+ "options": {
+ "from": 0,
+ "result": {
+ "color": "green",
+ "index": 1,
+ "text": "Healthy"
+ },
+ "to": 0.8
+ },
+ "type": "range"
+ },
+ {
+ "options": {
+ "from": 0.8,
+ "result": {
+ "color": "orange",
+ "index": 2,
+ "text": "Warning"
+ },
+ "to": 0.9
+ },
+ "type": "range"
+ },
+ {
+ "options": {
+ "from": 0.9,
+ "result": {
+ "color": "red",
+ "index": 3,
+ "text": "Critical"
+ },
+ "to": 0.98
+ },
+ "type": "range"
+ },
+ {
+ "options": {
+ "from": 0.98,
+ "result": {
+ "color": "red",
+ "index": 4,
+ "text": "Data Loss"
+ },
+ "to": 999
+ },
+ "type": "range"
+ }
+ ],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ }
+ ]
+ },
+ "unitScale": true
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 2,
+ "w": 4,
+ "x": 3,
+ "y": 3
+ },
+ "id": 591,
+ "options": {
+ "colorMode": "background",
+ "graphMode": "none",
+ "justifyMode": "auto",
+ "orientation": "auto",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showPercentChange": false,
+ "textMode": "value_and_name",
+ "wideLayout": true
+ },
+ "pluginVersion": "10.3.3",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "editorMode": "code",
+ "expr": "(sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{ namespace=\"$namespace\", pod=~\"$instances\", cluster=~\"$k8s_cluster\"}) / sum(kube_pod_container_resource_requests{job=\"kube-state-metrics\", namespace=\"$namespace\", resource=\"cpu\", pod=~\"$instances\", cluster=~\"$k8s_cluster\"}))",
+ "hide": false,
+ "legendFormat": "CPU",
+ "range": true,
+ "refId": "CPU"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "editorMode": "code",
+ "expr": "(sum(container_memory_working_set_bytes{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", namespace=\"$namespace\",container!=\"\", image!=\"\", pod=~\"$instances\", cluster=~\"$k8s_cluster\"}) / sum(max by(pod) (kube_pod_container_resource_requests{job=\"kube-state-metrics\", namespace=\"$namespace\", resource=\"memory\", pod=~\"$instances\", cluster=~\"$k8s_cluster\"})))",
+ "hide": false,
+ "instant": false,
+ "legendFormat": "Memory",
+ "range": true,
+ "refId": "MEM"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "editorMode": "code",
+ "expr": " (max(sum by (pod) (cnpg_backends_total{namespace=~\"$namespace\", pod=~\"$instances\", cluster=~\"$k8s_cluster\"}) / sum by (pod) (cnpg_pg_settings_setting{name=\"max_connections\", namespace=~\"$namespace\", pod=~\"$instances\", cluster=~\"$k8s_cluster\"})))",
+ "hide": false,
+ "instant": false,
+ "legendFormat": "Connections",
+ "range": true,
+ "refId": "CONNS"
+ }
+ ],
+ "type": "stat"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "description": "Computes the time since the last known WAL archival in the primary.\nWe ensure to ignore the metric in the replicas by using (1 - cnpg_pg_replication_in_recovery ) as a multiplicative factor. It will be 0 for replicas, 1 for the primary.",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [
+ {
+ "options": {
+ "match": "null",
+ "result": {
+ "color": "red",
+ "index": 0,
+ "text": "No backups"
+ }
+ },
+ "type": "special"
+ },
+ {
+ "options": {
+ "from": -1e+22,
+ "result": {
+ "color": "text",
+ "index": 1,
+ "text": "No data"
+ },
+ "to": 0
+ },
+ "type": "range"
+ }
+ ],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ }
+ ]
+ },
+ "unit": "dtdurations",
+ "unitScale": true
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 2,
+ "w": 3,
+ "x": 21,
+ "y": 3
+ },
+ "id": 362,
+ "options": {
+ "colorMode": "value",
+ "graphMode": "none",
+ "justifyMode": "auto",
+ "orientation": "auto",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showPercentChange": false,
+ "textMode": "auto",
+ "wideLayout": true
+ },
+ "pluginVersion": "10.3.3",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "editorMode": "code",
+ "exemplar": false,
+ "expr": "max((1 - cnpg_pg_replication_in_recovery{namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"}) * (time() - timestamp(cnpg_pg_stat_archiver_seconds_since_last_archival{namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"}) +\ncnpg_pg_stat_archiver_seconds_since_last_archival{namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"}))",
+ "format": "time_series",
+ "instant": true,
+ "interval": "",
+ "legendFormat": "__auto",
+ "range": false,
+ "refId": "A"
+ }
+ ],
+ "title": "Last archived WAL",
+ "type": "stat"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "description": "",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "dark-blue",
+ "value": null
+ }
+ ]
+ },
+ "unit": "string",
+ "unitScale": true
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 2,
+ "x": 7,
+ "y": 4
+ },
+ "id": 340,
+ "options": {
+ "colorMode": "background",
+ "graphMode": "none",
+ "justifyMode": "auto",
+ "orientation": "horizontal",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "/^full$/",
+ "values": false
+ },
+ "showPercentChange": false,
+ "text": {},
+ "textMode": "value",
+ "wideLayout": true
+ },
+ "pluginVersion": "10.3.3",
+ "repeatDirection": "v",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "editorMode": "builder",
+ "exemplar": false,
+ "expr": "cnpg_collector_postgres_version{namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"}",
+ "format": "table",
+ "hide": false,
+ "instant": true,
+ "interval": "",
+ "intervalFactor": 1,
+ "legendFormat": "{{pod}}",
+ "range": false,
+ "refId": "A"
+ }
+ ],
+ "title": "Version",
+ "transformations": [],
+ "type": "stat"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "yellow",
+ "value": 1
+ },
+ {
+ "color": "orange",
+ "value": 10
+ },
+ {
+ "color": "red",
+ "value": 20
+ }
+ ]
+ },
+ "unit": "s",
+ "unitScale": true
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 2,
+ "x": 15,
+ "y": 4
+ },
+ "id": 466,
+ "options": {
+ "colorMode": "value",
+ "graphMode": "area",
+ "justifyMode": "auto",
+ "orientation": "auto",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showPercentChange": false,
+ "textMode": "auto",
+ "wideLayout": true
+ },
+ "pluginVersion": "10.3.3",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "editorMode": "code",
+ "expr": "max(cnpg_pg_stat_replication_flush_lag_seconds{namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"})",
+ "legendFormat": "__auto",
+ "range": true,
+ "refId": "A"
+ }
+ ],
+ "title": "Flush Lag",
+ "type": "stat"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "yellow",
+ "value": 1
+ },
+ {
+ "color": "orange",
+ "value": 10
+ },
+ {
+ "color": "red",
+ "value": 20
+ }
+ ]
+ },
+ "unit": "s",
+ "unitScale": true
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 2,
+ "x": 17,
+ "y": 4
+ },
+ "id": 468,
+ "options": {
+ "colorMode": "value",
+ "graphMode": "area",
+ "justifyMode": "auto",
+ "orientation": "auto",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showPercentChange": false,
+ "textMode": "auto",
+ "wideLayout": true
+ },
+ "pluginVersion": "10.3.3",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "editorMode": "code",
+ "expr": "max(cnpg_pg_stat_replication_replay_lag_seconds{namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"})",
+ "legendFormat": "__auto",
+ "range": true,
+ "refId": "A"
+ }
+ ],
+ "title": "Replay Lag",
+ "type": "stat"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "description": "Base Backups are considered healthy when there has been at least one base backup in the last 24 hours.",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [
+ {
+ "options": {
+ "match": "null",
+ "result": {
+ "color": "orange",
+ "index": 0,
+ "text": "None"
+ }
+ },
+ "type": "special"
+ },
+ {
+ "options": {
+ "from": 0,
+ "result": {
+ "color": "green",
+ "index": 1,
+ "text": "Healthy"
+ },
+ "to": 90000
+ },
+ "type": "range"
+ },
+ {
+ "options": {
+ "from": 90000,
+ "result": {
+ "color": "orange",
+ "index": 2,
+ "text": "Degraded"
+ },
+ "to": 108000
+ },
+ "type": "range"
+ },
+ {
+ "options": {
+ "from": 108000,
+ "result": {
+ "color": "red",
+ "index": 3,
+ "text": "None recent"
+ },
+ "to": 4294967295
+ },
+ "type": "range"
+ }
+ ],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ }
+ ]
+ },
+ "unitScale": true
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "WAL"
+ },
+ "properties": [
+ {
+ "id": "mappings",
+ "value": [
+ {
+ "options": {
+ "match": "null",
+ "result": {
+ "color": "orange",
+ "index": 0,
+ "text": "None"
+ }
+ },
+ "type": "special"
+ },
+ {
+ "options": {
+ "from": 0,
+ "result": {
+ "color": "green",
+ "index": 1,
+ "text": "Healthy"
+ },
+ "to": 360
+ },
+ "type": "range"
+ },
+ {
+ "options": {
+ "from": 360,
+ "result": {
+ "color": "orange",
+ "index": 2,
+ "text": "Delayed"
+ },
+ "to": 900
+ },
+ "type": "range"
+ },
+ {
+ "options": {
+ "from": 900,
+ "result": {
+ "color": "red",
+ "index": 3,
+ "text": "Unsynced"
+ },
+ "to": 4294967295
+ },
+ "type": "range"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "gridPos": {
+ "h": 2,
+ "w": 1,
+ "x": 3,
+ "y": 5
+ },
+ "id": 588,
+ "options": {
+ "colorMode": "background",
+ "graphMode": "none",
+ "justifyMode": "auto",
+ "orientation": "auto",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showPercentChange": false,
+ "textMode": "value_and_name",
+ "wideLayout": true
+ },
+ "pluginVersion": "10.3.3",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "editorMode": "code",
+ "expr": "time() - max({__name__=~\"cnpg_collector_last_available_backup_timestamp|barman_cloud_cloudnative_pg_io_last_available_backup_timestamp\",namespace=\"$namespace\", pod=~\"$instances\", cluster=~\"$k8s_cluster\"})",
+ "legendFormat": "Backups",
+ "range": true,
+ "refId": "BACKUPS"
+ }
+ ],
+ "type": "stat"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "description": "WAL is considered Healthy when the last WAL is 0min to 6min old, Delayed when it is less than 15min and Unsynced for >15min. Idle databases with no pending WAL files are shown as Healthy.",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [
+ {
+ "options": {
+ "match": "null",
+ "result": {
+ "color": "orange",
+ "index": 0,
+ "text": "None"
+ }
+ },
+ "type": "special"
+ },
+ {
+ "options": {
+ "from": 0,
+ "result": {
+ "color": "green",
+ "index": 1,
+ "text": "Healthy"
+ },
+ "to": 360
+ },
+ "type": "range"
+ },
+ {
+ "options": {
+ "from": 360,
+ "result": {
+ "color": "orange",
+ "index": 2,
+ "text": "Delayed"
+ },
+ "to": 900
+ },
+ "type": "range"
+ },
+ {
+ "options": {
+ "from": 900,
+ "result": {
+ "color": "red",
+ "index": 3,
+ "text": "Unsynced"
+ },
+ "to": 4294967295
+ },
+ "type": "range"
+ }
+ ],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ }
+ ]
+ },
+ "unitScale": true
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "WAL"
+ },
+ "properties": [
+ {
+ "id": "mappings",
+ "value": [
+ {
+ "options": {
+ "match": "null",
+ "result": {
+ "color": "orange",
+ "index": 0,
+ "text": "None"
+ }
+ },
+ "type": "special"
+ },
+ {
+ "options": {
+ "from": 0,
+ "result": {
+ "color": "green",
+ "index": 1,
+ "text": "Healthy"
+ },
+ "to": 360
+ },
+ "type": "range"
+ },
+ {
+ "options": {
+ "from": 360,
+ "result": {
+ "color": "orange",
+ "index": 2,
+ "text": "Delayed"
+ },
+ "to": 900
+ },
+ "type": "range"
+ },
+ {
+ "options": {
+ "from": 900,
+ "result": {
+ "color": "red",
+ "index": 3,
+ "text": "Unsynced"
+ },
+ "to": 4294967295
+ },
+ "type": "range"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "gridPos": {
+ "h": 2,
+ "w": 1,
+ "x": 4,
+ "y": 5
+ },
+ "id": 612,
+ "options": {
+ "colorMode": "background",
+ "graphMode": "none",
+ "justifyMode": "auto",
+ "orientation": "auto",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showPercentChange": false,
+ "textMode": "value_and_name",
+ "wideLayout": true
+ },
+ "pluginVersion": "10.3.3",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "editorMode": "code",
+ "expr": "max((1 - cnpg_pg_replication_in_recovery{namespace=~\"$namespace\", pod=~\"$instances\", cluster=~\"$k8s_cluster\"}) * (time() - timestamp(cnpg_pg_stat_archiver_seconds_since_last_archival{namespace=~\"$namespace\", pod=~\"$instances\", cluster=~\"$k8s_cluster\"}) +\ncnpg_pg_stat_archiver_seconds_since_last_archival{namespace=~\"$namespace\", pod=~\"$instances\", cluster=~\"$k8s_cluster\"})\n* on(pod, namespace) group_left()\n(cnpg_collector_pg_wal_archive_status{namespace=~\"$namespace\", pod=~\"$instances\", value=\"ready\", cluster=~\"$k8s_cluster\"} > bool 0))",
+ "hide": false,
+ "instant": false,
+ "legendFormat": "WAL",
+ "range": true,
+ "refId": "WAL"
+ }
+ ],
+ "type": "stat"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "description": "Online if there is at least one ready operator pod",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [
+ {
+ "options": {
+ "0": {
+ "color": "red",
+ "index": 0,
+ "text": "Failure"
+ }
+ },
+ "type": "value"
+ },
+ {
+ "options": {
+ "from": 1,
+ "result": {
+ "color": "green",
+ "index": 1,
+ "text": "Online"
+ },
+ "to": 99
+ },
+ "type": "range"
+ }
+ ],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ }
+ ]
+ },
+ "unitScale": true
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "A"
+ },
+ "properties": [
+ {
+ "id": "displayName",
+ "value": "Reconcile errors"
+ }
+ ]
+ }
+ ]
+ },
+ "gridPos": {
+ "h": 2,
+ "w": 1,
+ "x": 5,
+ "y": 5
+ },
+ "id": 589,
+ "options": {
+ "colorMode": "background",
+ "graphMode": "none",
+ "justifyMode": "auto",
+ "orientation": "auto",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showPercentChange": false,
+ "textMode": "value_and_name",
+ "wideLayout": true
+ },
+ "pluginVersion": "10.3.3",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "editorMode": "code",
+ "expr": "sum(kube_pod_status_ready{namespace=\"$operatorNamespace\", pod=~\"cloudnative-pg.+|cnpg-controller-manager.+\", condition=\"true\", cluster=~\"$k8s_cluster\"})",
+ "hide": false,
+ "instant": true,
+ "legendFormat": "Operator Status",
+ "range": false,
+ "refId": "A"
+ }
+ ],
+ "type": "stat"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "description": "The operator reconcile errors don't distinguish between database cluster or namespaces.",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [
+ {
+ "options": {
+ "0": {
+ "color": "green",
+ "index": 0,
+ "text": "None"
+ }
+ },
+ "type": "value"
+ },
+ {
+ "options": {
+ "from": 1,
+ "result": {
+ "color": "red",
+ "index": 1,
+ "text": "Backup"
+ },
+ "to": 9
+ },
+ "type": "range"
+ },
+ {
+ "options": {
+ "from": 10,
+ "result": {
+ "color": "red",
+ "index": 2,
+ "text": "Cluster"
+ },
+ "to": 99
+ },
+ "type": "range"
+ },
+ {
+ "options": {
+ "from": 100,
+ "result": {
+ "color": "red",
+ "index": 3,
+ "text": "Pooler"
+ },
+ "to": 999
+ },
+ "type": "range"
+ },
+ {
+ "options": {
+ "from": 1000,
+ "result": {
+ "color": "red",
+ "index": 4,
+ "text": "Scheduled Backup"
+ },
+ "to": 9999
+ },
+ "type": "range"
+ }
+ ],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ }
+ ]
+ },
+ "unitScale": true
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "A"
+ },
+ "properties": [
+ {
+ "id": "displayName",
+ "value": "Reconcile errors"
+ }
+ ]
+ }
+ ]
+ },
+ "gridPos": {
+ "h": 2,
+ "w": 1,
+ "x": 6,
+ "y": 5
+ },
+ "id": 655,
+ "options": {
+ "colorMode": "background",
+ "graphMode": "none",
+ "justifyMode": "auto",
+ "orientation": "auto",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showPercentChange": false,
+ "textMode": "value_and_name",
+ "wideLayout": true
+ },
+ "pluginVersion": "10.3.3",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "editorMode": "code",
+ "expr": "clamp_max(max(controller_runtime_reconcile_total{namespace=~\"$operatorNamespace\", result=\"error\", controller=\"backup\", cluster=~\"$k8s_cluster\"}), 1)",
+ "hide": true,
+ "legendFormat": "__auto",
+ "range": true,
+ "refId": "RECONCILE_ERRORS_BACKUP"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "editorMode": "code",
+ "expr": "clamp_max(max(controller_runtime_reconcile_total{namespace=~\"$operatorNamespace\", result=\"error\", controller=\"cluster\", cluster=~\"$k8s_cluster\"}), 1)",
+ "hide": true,
+ "legendFormat": "__auto",
+ "range": true,
+ "refId": "RECONCILE_ERRORS_CLUSTER"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "editorMode": "code",
+ "expr": "clamp_max(max(controller_runtime_reconcile_total{namespace=~\"$operatorNamespace\", result=\"error\", controller=\"pooler\", cluster=~\"$k8s_cluster\"}), 1)",
+ "hide": true,
+ "legendFormat": "__auto",
+ "range": true,
+ "refId": "RECONCILE_ERRORS_POOLER"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "editorMode": "code",
+ "expr": "clamp_max(max(controller_runtime_reconcile_total{namespace=~\"$operatorNamespace\", result=\"error\", controller=~\"scheduledbackup|scheduled-backup\", cluster=~\"$k8s_cluster\"}), 1)",
+ "hide": true,
+ "legendFormat": "__auto",
+ "range": true,
+ "refId": "RECONCILE_ERRORS_SCHEDULED_BACKUP"
+ },
+ {
+ "datasource": {
+ "type": "__expr__",
+ "uid": "${DS_EXPRESSION}"
+ },
+ "expression": "$RECONCILE_ERRORS_BACKUP + $RECONCILE_ERRORS_CLUSTER * 10 + $RECONCILE_ERRORS_POOLER * 100 + $RECONCILE_ERRORS_SCHEDULED_BACKUP * 1000",
+ "hide": false,
+ "refId": "A",
+ "type": "math"
+ }
+ ],
+ "type": "stat"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "description": "",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "decimals": 2,
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "#EAB839",
+ "value": 80000000000
+ },
+ {
+ "color": "red",
+ "value": 90000000000
+ }
+ ]
+ },
+ "unit": "none",
+ "unitScale": true
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 2,
+ "w": 2,
+ "x": 11,
+ "y": 5
+ },
+ "id": 346,
+ "links": [],
+ "options": {
+ "colorMode": "value",
+ "graphMode": "area",
+ "justifyMode": "center",
+ "orientation": "horizontal",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showPercentChange": false,
+ "textMode": "auto",
+ "wideLayout": true
+ },
+ "pluginVersion": "10.3.3",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "editorMode": "code",
+ "exemplar": true,
+ "expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{namespace=\"$namespace\", pod=~\"$instances\", cluster=~\"$k8s_cluster\"})",
+ "hide": false,
+ "interval": "",
+ "legendFormat": "Total",
+ "range": true,
+ "refId": "B"
+ }
+ ],
+ "type": "stat"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "description": "Container memory working set",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "#EAB839",
+ "value": 80000000000
+ },
+ {
+ "color": "red",
+ "value": 90000000000
+ }
+ ]
+ },
+ "unit": "bytes",
+ "unitScale": true
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 2,
+ "w": 2,
+ "x": 13,
+ "y": 5
+ },
+ "id": 350,
+ "links": [],
+ "options": {
+ "colorMode": "value",
+ "graphMode": "area",
+ "justifyMode": "center",
+ "orientation": "horizontal",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showPercentChange": false,
+ "textMode": "auto",
+ "wideLayout": true
+ },
+ "pluginVersion": "10.3.3",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "editorMode": "code",
+ "exemplar": true,
+ "expr": "sum(container_memory_working_set_bytes{pod=~\"$instances\", namespace=\"$namespace\", container!=\"\", image!=\"\", cluster=~\"$k8s_cluster\"})",
+ "hide": false,
+ "interval": "",
+ "legendFormat": "Total",
+ "range": true,
+ "refId": "B"
+ }
+ ],
+ "type": "stat"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "description": "",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "decimals": 2,
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "#EAB839",
+ "value": 60000000000
+ },
+ {
+ "color": "red",
+ "value": 80000000000
+ }
+ ]
+ },
+ "unit": "decbytes",
+ "unitScale": true
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 2,
+ "w": 2,
+ "x": 19,
+ "y": 5
+ },
+ "id": 358,
+ "links": [],
+ "options": {
+ "colorMode": "value",
+ "graphMode": "none",
+ "justifyMode": "auto",
+ "orientation": "auto",
+ "reduceOptions": {
+ "calcs": [
+ "sum"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showPercentChange": false,
+ "textMode": "value",
+ "wideLayout": true
+ },
+ "pluginVersion": "10.3.3",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "editorMode": "code",
+ "exemplar": false,
+ "expr": "cnpg_pg_database_size_bytes{namespace=\"$namespace\", pod=~\"$instances\", cluster=~\"$k8s_cluster\"}",
+ "format": "table",
+ "instant": false,
+ "legendFormat": "__auto",
+ "range": true,
+ "refId": "A"
+ }
+ ],
+ "title": "Database Size",
+ "transformations": [
+ {
+ "id": "groupBy",
+ "options": {
+ "fields": {
+ "Value": {
+ "aggregations": [
+ "max"
+ ],
+ "operation": "aggregate"
+ },
+ "datname": {
+ "aggregations": [],
+ "operation": "groupby"
+ }
+ }
+ }
+ }
+ ],
+ "type": "stat"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [
+ {
+ "options": {
+ "0": {
+ "color": "red",
+ "index": 1,
+ "text": "N/A"
+ }
+ },
+ "type": "value"
+ },
+ {
+ "options": {
+ "match": "null",
+ "result": {
+ "color": "red",
+ "index": 0,
+ "text": "No backups"
+ }
+ },
+ "type": "special"
+ }
+ ],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ }
+ ]
+ },
+ "unit": "dateTimeAsIso",
+ "unitScale": true
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 2,
+ "w": 3,
+ "x": 21,
+ "y": 5
+ },
+ "id": 364,
+ "options": {
+ "colorMode": "value",
+ "graphMode": "none",
+ "justifyMode": "auto",
+ "orientation": "auto",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showPercentChange": false,
+ "textMode": "auto",
+ "wideLayout": true
+ },
+ "pluginVersion": "10.3.3",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "editorMode": "code",
+ "exemplar": false,
+ "expr": "max({__name__=~\"cnpg_collector_first_recoverability_point|barman_cloud_cloudnative_pg_io_first_recoverability_point\",namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"})*1000",
+ "format": "time_series",
+ "instant": true,
+ "interval": "",
+ "legendFormat": "{{pod}}",
+ "range": false,
+ "refId": "A"
+ }
+ ],
+ "title": "First Recoverability Point",
+ "type": "stat"
+ },
+ {
+ "collapsed": false,
+ "datasource": {
+ "uid": "prometheus"
+ },
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 7
+ },
+ "id": 12,
+ "panels": [],
+ "targets": [
+ {
+ "datasource": {
+ "uid": "prometheus"
+ },
+ "refId": "A"
+ }
+ ],
+ "title": "Server Health",
+ "type": "row"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "gridPos": {
+ "h": 1,
+ "w": 3,
+ "x": 0,
+ "y": 8
+ },
+ "id": 191,
+ "options": {
+ "code": {
+ "language": "plaintext",
+ "showLineNumbers": false,
+ "showMiniMap": false
+ },
+ "content": "",
+ "mode": "html"
+ },
+ "pluginVersion": "10.3.3",
+ "repeatDirection": "v",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "exemplar": true,
+ "expr": "kube_pod_container_status_ready{container=\"postgres\",namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"}",
+ "instant": true,
+ "interval": "",
+ "legendFormat": "{{pod}}",
+ "refId": "A"
+ }
+ ],
+ "title": "Instance",
+ "transparent": true,
+ "type": "text"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "gridPos": {
+ "h": 1,
+ "w": 2,
+ "x": 3,
+ "y": 8
+ },
+ "id": 192,
+ "options": {
+ "code": {
+ "language": "plaintext",
+ "showLineNumbers": false,
+ "showMiniMap": false
+ },
+ "content": "",
+ "mode": "html"
+ },
+ "pluginVersion": "10.3.3",
+ "repeatDirection": "v",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "exemplar": true,
+ "expr": "kube_pod_container_status_ready{container=\"postgres\",namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"}",
+ "instant": true,
+ "interval": "",
+ "legendFormat": "{{pod}}",
+ "refId": "A"
+ }
+ ],
+ "title": "Status",
+ "type": "text"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "gridPos": {
+ "h": 1,
+ "w": 3,
+ "x": 5,
+ "y": 8
+ },
+ "id": 193,
+ "options": {
+ "code": {
+ "language": "plaintext",
+ "showLineNumbers": false,
+ "showMiniMap": false
+ },
+ "content": "",
+ "mode": "html"
+ },
+ "pluginVersion": "10.3.3",
+ "repeatDirection": "v",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "exemplar": true,
+ "expr": "kube_pod_container_status_ready{container=\"postgres\",namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"}",
+ "instant": true,
+ "interval": "",
+ "legendFormat": "{{pod}}",
+ "refId": "A"
+ }
+ ],
+ "title": "Clustering / replicas",
+ "type": "text"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "gridPos": {
+ "h": 1,
+ "w": 2,
+ "x": 8,
+ "y": 8
+ },
+ "id": 384,
+ "options": {
+ "code": {
+ "language": "plaintext",
+ "showLineNumbers": false,
+ "showMiniMap": false
+ },
+ "content": "",
+ "mode": "html"
+ },
+ "pluginVersion": "10.3.3",
+ "repeatDirection": "v",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "exemplar": true,
+ "expr": "kube_pod_container_status_ready{container=\"postgres\",namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"}",
+ "instant": true,
+ "interval": "",
+ "legendFormat": "{{pod}}",
+ "refId": "A"
+ }
+ ],
+ "title": "Zone",
+ "type": "text"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "gridPos": {
+ "h": 1,
+ "w": 4,
+ "x": 10,
+ "y": 8
+ },
+ "id": 195,
+ "options": {
+ "code": {
+ "language": "plaintext",
+ "showLineNumbers": false,
+ "showMiniMap": false
+ },
+ "content": "",
+ "mode": "html"
+ },
+ "pluginVersion": "10.3.3",
+ "repeatDirection": "v",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "exemplar": true,
+ "expr": "kube_pod_container_status_ready{container=\"postgres\",namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"}",
+ "instant": true,
+ "interval": "",
+ "legendFormat": "{{pod}}",
+ "refId": "A"
+ }
+ ],
+ "title": "Connections",
+ "type": "text"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "gridPos": {
+ "h": 1,
+ "w": 3,
+ "x": 14,
+ "y": 8
+ },
+ "id": 196,
+ "options": {
+ "code": {
+ "language": "plaintext",
+ "showLineNumbers": false,
+ "showMiniMap": false
+ },
+ "content": "",
+ "mode": "html"
+ },
+ "pluginVersion": "10.3.3",
+ "repeatDirection": "v",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "exemplar": true,
+ "expr": "kube_pod_container_status_ready{container=\"postgres\",namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"}",
+ "instant": true,
+ "interval": "",
+ "legendFormat": "{{pod}}",
+ "refId": "A"
+ }
+ ],
+ "title": "Max Connections",
+ "type": "text"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "description": "",
+ "gridPos": {
+ "h": 1,
+ "w": 3,
+ "x": 17,
+ "y": 8
+ },
+ "id": 197,
+ "options": {
+ "code": {
+ "language": "plaintext",
+ "showLineNumbers": false,
+ "showMiniMap": false
+ },
+ "content": "",
+ "mode": "html"
+ },
+ "pluginVersion": "10.3.3",
+ "repeatDirection": "v",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "exemplar": true,
+ "expr": "kube_pod_container_status_ready{container=\"postgres\",namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"}",
+ "instant": true,
+ "interval": "",
+ "legendFormat": "{{pod}}",
+ "refId": "A"
+ }
+ ],
+ "title": "Wraparound",
+ "type": "text"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "gridPos": {
+ "h": 1,
+ "w": 2,
+ "x": 20,
+ "y": 8
+ },
+ "id": 313,
+ "options": {
+ "code": {
+ "language": "plaintext",
+ "showLineNumbers": false,
+ "showMiniMap": false
+ },
+ "content": "",
+ "mode": "html"
+ },
+ "pluginVersion": "10.3.3",
+ "repeatDirection": "v",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "exemplar": true,
+ "expr": "kube_pod_container_status_ready{container=\"postgres\",namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"}",
+ "instant": true,
+ "interval": "",
+ "legendFormat": "{{pod}}",
+ "refId": "A"
+ }
+ ],
+ "title": "Started",
+ "type": "text"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "gridPos": {
+ "h": 1,
+ "w": 2,
+ "x": 22,
+ "y": 8
+ },
+ "id": 198,
+ "options": {
+ "code": {
+ "language": "plaintext",
+ "showLineNumbers": false,
+ "showMiniMap": false
+ },
+ "content": "",
+ "mode": "html"
+ },
+ "pluginVersion": "10.3.3",
+ "repeatDirection": "v",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "exemplar": true,
+ "expr": "kube_pod_container_status_ready{container=\"postgres\",namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"}",
+ "instant": true,
+ "interval": "",
+ "legendFormat": "{{pod}}",
+ "refId": "A"
+ }
+ ],
+ "title": "Version",
+ "type": "text"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 3,
+ "x": 0,
+ "y": 9
+ },
+ "id": 61,
+ "options": {
+ "code": {
+ "language": "plaintext",
+ "showLineNumbers": false,
+ "showMiniMap": false
+ },
+ "content": "
",
+ "mode": "html"
+ },
+ "pluginVersion": "10.3.3",
+ "repeat": "instances",
+ "repeatDirection": "v",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "exemplar": true,
+ "expr": "kube_pod_container_status_ready{container=\"postgres\",namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"}",
+ "instant": true,
+ "interval": "",
+ "legendFormat": "{{pod}}",
+ "refId": "A"
+ }
+ ],
+ "type": "text"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [
+ {
+ "options": {
+ "0": {
+ "index": 0,
+ "text": "Down"
+ },
+ "1": {
+ "index": 1,
+ "text": "Up"
+ }
+ },
+ "type": "value"
+ }
+ ],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "dark-red",
+ "value": null
+ },
+ {
+ "color": "green",
+ "value": 1
+ }
+ ]
+ },
+ "unitScale": true
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 2,
+ "x": 3,
+ "y": 9
+ },
+ "id": 33,
+ "options": {
+ "colorMode": "background",
+ "graphMode": "area",
+ "justifyMode": "auto",
+ "orientation": "auto",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showPercentChange": false,
+ "text": {},
+ "textMode": "value",
+ "wideLayout": true
+ },
+ "pluginVersion": "10.3.3",
+ "repeat": "instances",
+ "repeatDirection": "v",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "editorMode": "code",
+ "exemplar": true,
+ "expr": "min(kube_pod_container_status_ready{container=\"postgres\",namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"})",
+ "instant": true,
+ "interval": "",
+ "legendFormat": "",
+ "refId": "A"
+ }
+ ],
+ "type": "stat"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "description": "",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [
+ {
+ "options": {
+ "0": {
+ "color": "red",
+ "index": 1,
+ "text": "No"
+ },
+ "1": {
+ "color": "green",
+ "index": 0,
+ "text": "Yes"
+ }
+ },
+ "type": "value"
+ }
+ ],
+ "noValue": "-",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "red",
+ "value": 80
+ }
+ ]
+ },
+ "unitScale": true
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 2,
+ "x": 5,
+ "y": 9
+ },
+ "id": 60,
+ "options": {
+ "colorMode": "background",
+ "graphMode": "area",
+ "justifyMode": "auto",
+ "orientation": "auto",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showPercentChange": false,
+ "text": {},
+ "textMode": "value",
+ "wideLayout": true
+ },
+ "pluginVersion": "10.3.3",
+ "repeat": "instances",
+ "repeatDirection": "v",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "exemplar": true,
+ "expr": "1 - cnpg_pg_replication_in_recovery{namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"} + cnpg_pg_replication_is_wal_receiver_up{namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"}",
+ "instant": true,
+ "interval": "",
+ "legendFormat": "{{pod}}",
+ "refId": "A"
+ }
+ ],
+ "transformations": [],
+ "type": "stat"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "description": "",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [],
+ "noValue": "-",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "red",
+ "value": 80
+ }
+ ]
+ },
+ "unitScale": true
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 1,
+ "x": 7,
+ "y": 9
+ },
+ "id": 229,
+ "options": {
+ "colorMode": "value",
+ "graphMode": "none",
+ "justifyMode": "auto",
+ "orientation": "auto",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showPercentChange": false,
+ "text": {},
+ "textMode": "value",
+ "wideLayout": true
+ },
+ "pluginVersion": "10.3.3",
+ "repeat": "instances",
+ "repeatDirection": "v",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "editorMode": "code",
+ "exemplar": true,
+ "expr": "cnpg_pg_replication_streaming_replicas{namespace=~\"$namespace\", pod=~\"$instances\", cluster=~\"$k8s_cluster\"}",
+ "instant": true,
+ "interval": "",
+ "legendFormat": "{{pod}}",
+ "refId": "A"
+ }
+ ],
+ "transformations": [],
+ "type": "stat"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "description": "This metric depends on exporting the: `topology.kubernetes.io/zone` label through kube-state-metrics (not enabled by default). Can be added by changing its configuration with:\n\n```yaml\nmetricLabelsAllowlist:\n - nodes=[topology.kubernetes.io/zone]\n```",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "blue",
+ "value": null
+ }
+ ]
+ },
+ "unitScale": true
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 2,
+ "x": 8,
+ "y": 9
+ },
+ "id": 386,
+ "options": {
+ "colorMode": "value",
+ "graphMode": "none",
+ "justifyMode": "auto",
+ "orientation": "auto",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "/^label_topology_kubernetes_io_zone$/",
+ "values": false
+ },
+ "showPercentChange": false,
+ "text": {
+ "valueSize": 18
+ },
+ "textMode": "value",
+ "wideLayout": true
+ },
+ "pluginVersion": "10.3.3",
+ "repeat": "instances",
+ "repeatDirection": "v",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "editorMode": "code",
+ "exemplar": true,
+ "expr": "kube_pod_info{namespace=~\"$namespace\", pod=~\"$instances\", cluster=~\"$k8s_cluster\"} * on(node,instance) group_left(label_topology_kubernetes_io_zone) kube_node_labels",
+ "format": "table",
+ "instant": true,
+ "interval": "",
+ "legendFormat": "{{pod}}",
+ "refId": "A"
+ }
+ ],
+ "transformations": [],
+ "type": "stat"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "drawStyle": "line",
+ "fillOpacity": 10,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": true,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ }
+ ]
+ },
+ "unit": "short",
+ "unitScale": true
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 4,
+ "x": 10,
+ "y": 9
+ },
+ "id": 58,
+ "options": {
+ "legend": {
+ "calcs": [
+ "last",
+ "mean"
+ ],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "pluginVersion": "8.2.1",
+ "repeat": "instances",
+ "repeatDirection": "v",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "editorMode": "code",
+ "exemplar": true,
+ "expr": "sum by (pod) (cnpg_backends_total{namespace=~\"$namespace\", pod=~\"$instances\", cluster=~\"$k8s_cluster\"})",
+ "instant": false,
+ "interval": "",
+ "legendFormat": "-",
+ "refId": "A"
+ }
+ ],
+ "type": "timeseries"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "description": "",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "decimals": 0,
+ "mappings": [],
+ "max": 100,
+ "min": 0,
+ "noValue": "<1%",
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "#EAB839",
+ "value": 75
+ },
+ {
+ "color": "red",
+ "value": 90
+ }
+ ]
+ },
+ "unit": "percent",
+ "unitScale": true
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 3,
+ "x": 14,
+ "y": 9
+ },
+ "id": 32,
+ "options": {
+ "minVizHeight": 75,
+ "minVizWidth": 75,
+ "orientation": "horizontal",
+ "reduceOptions": {
+ "calcs": [
+ "last"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showThresholdLabels": false,
+ "showThresholdMarkers": true,
+ "sizing": "auto",
+ "text": {}
+ },
+ "pluginVersion": "10.3.3",
+ "repeat": "instances",
+ "repeatDirection": "v",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "editorMode": "code",
+ "exemplar": true,
+ "expr": "100 * sum by (pod) (cnpg_backends_total{namespace=~\"$namespace\", pod=~\"$instances\", cluster=~\"$k8s_cluster\"}) / sum by (pod) (cnpg_pg_settings_setting{name=\"max_connections\", namespace=~\"$namespace\", pod=~\"$instances\", cluster=~\"$k8s_cluster\"})",
+ "instant": true,
+ "interval": "",
+ "legendFormat": "{{pod}}",
+ "refId": "A"
+ }
+ ],
+ "type": "gauge"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [],
+ "max": 2147483647,
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "#EAB839",
+ "value": 200000000
+ },
+ {
+ "color": "red",
+ "value": 1000000000
+ }
+ ]
+ },
+ "unit": "none",
+ "unitScale": true
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 3,
+ "x": 17,
+ "y": 9
+ },
+ "id": 8,
+ "options": {
+ "displayMode": "lcd",
+ "maxVizHeight": 300,
+ "minVizHeight": 10,
+ "minVizWidth": 0,
+ "namePlacement": "auto",
+ "orientation": "horizontal",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showUnfilled": true,
+ "sizing": "auto",
+ "text": {},
+ "valueMode": "color"
+ },
+ "pluginVersion": "10.3.3",
+ "repeat": "instances",
+ "repeatDirection": "v",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "editorMode": "code",
+ "exemplar": true,
+ "expr": "max by (pod) (cnpg_pg_database_xid_age{namespace=~\"$namespace\", pod=~\"$instances\", cluster=~\"$k8s_cluster\"})",
+ "instant": true,
+ "interval": "",
+ "legendFormat": "{{pod}}",
+ "refId": "A"
+ }
+ ],
+ "type": "bargauge"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "description": "",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "dark-blue",
+ "value": null
+ }
+ ]
+ },
+ "unit": "dateTimeFromNow",
+ "unitScale": true
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 2,
+ "x": 20,
+ "y": 9
+ },
+ "id": 314,
+ "options": {
+ "colorMode": "background",
+ "graphMode": "none",
+ "justifyMode": "auto",
+ "orientation": "horizontal",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showPercentChange": false,
+ "text": {},
+ "textMode": "value",
+ "wideLayout": true
+ },
+ "pluginVersion": "10.3.3",
+ "repeat": "instances",
+ "repeatDirection": "v",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "editorMode": "code",
+ "exemplar": false,
+ "expr": "cnpg_pg_postmaster_start_time{namespace=~\"$namespace\", pod=~\"$instances\", cluster=~\"$k8s_cluster\"}*1000",
+ "format": "time_series",
+ "hide": false,
+ "instant": true,
+ "interval": "",
+ "intervalFactor": 1,
+ "legendFormat": "",
+ "refId": "A"
+ }
+ ],
+ "transformations": [],
+ "type": "stat"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "description": "",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "dark-blue",
+ "value": null
+ }
+ ]
+ },
+ "unit": "string",
+ "unitScale": true
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 2,
+ "x": 22,
+ "y": 9
+ },
+ "id": 42,
+ "options": {
+ "colorMode": "background",
+ "graphMode": "none",
+ "justifyMode": "auto",
+ "orientation": "horizontal",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "/^full$/",
+ "values": false
+ },
+ "showPercentChange": false,
+ "text": {},
+ "textMode": "value",
+ "wideLayout": true
+ },
+ "pluginVersion": "10.3.3",
+ "repeat": "instances",
+ "repeatDirection": "v",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "editorMode": "code",
+ "exemplar": false,
+ "expr": "cnpg_collector_postgres_version{namespace=~\"$namespace\", pod=~\"$instances\", cluster=~\"$k8s_cluster\"}",
+ "format": "table",
+ "hide": false,
+ "instant": true,
+ "interval": "",
+ "intervalFactor": 1,
+ "legendFormat": "{{pod}}",
+ "refId": "A"
+ }
+ ],
+ "transformations": [],
+ "type": "stat"
+ },
+ {
+ "collapsed": true,
+ "datasource": {
+ "uid": "prometheus"
+ },
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 18
+ },
+ "id": 41,
+ "panels": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "gridPos": {
+ "h": 1,
+ "w": 3,
+ "x": 0,
+ "y": 25
+ },
+ "id": 187,
+ "options": {
+ "code": {
+ "language": "plaintext",
+ "showLineNumbers": false,
+ "showMiniMap": false
+ },
+ "content": "",
+ "mode": "html"
+ },
+ "pluginVersion": "10.3.1",
+ "repeatDirection": "v",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "exemplar": true,
+ "expr": "kube_pod_container_status_ready{container=\"postgres\",namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"}",
+ "instant": true,
+ "interval": "",
+ "legendFormat": "{{pod}}",
+ "refId": "A"
+ }
+ ],
+ "title": "Instance",
+ "transparent": true,
+ "type": "text"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "gridPos": {
+ "h": 1,
+ "w": 3,
+ "x": 3,
+ "y": 25
+ },
+ "id": 183,
+ "options": {
+ "code": {
+ "language": "plaintext",
+ "showLineNumbers": false,
+ "showMiniMap": false
+ },
+ "content": "",
+ "mode": "html"
+ },
+ "pluginVersion": "10.3.1",
+ "repeatDirection": "v",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "exemplar": true,
+ "expr": "kube_pod_container_status_ready{container=\"postgres\",namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"}",
+ "instant": true,
+ "interval": "",
+ "legendFormat": "{{pod}}",
+ "refId": "A"
+ }
+ ],
+ "title": "Max Connections",
+ "type": "text"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "gridPos": {
+ "h": 1,
+ "w": 3,
+ "x": 6,
+ "y": 25
+ },
+ "id": 184,
+ "options": {
+ "code": {
+ "language": "plaintext",
+ "showLineNumbers": false,
+ "showMiniMap": false
+ },
+ "content": "",
+ "mode": "html"
+ },
+ "pluginVersion": "10.3.1",
+ "repeatDirection": "v",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "exemplar": true,
+ "expr": "kube_pod_container_status_ready{container=\"postgres\",namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"}",
+ "instant": true,
+ "interval": "",
+ "legendFormat": "{{pod}}",
+ "refId": "A"
+ }
+ ],
+ "title": "Shared Buffers",
+ "type": "text"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "gridPos": {
+ "h": 1,
+ "w": 3,
+ "x": 9,
+ "y": 25
+ },
+ "id": 185,
+ "options": {
+ "code": {
+ "language": "plaintext",
+ "showLineNumbers": false,
+ "showMiniMap": false
+ },
+ "content": "",
+ "mode": "html"
+ },
+ "pluginVersion": "10.3.1",
+ "repeatDirection": "v",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "exemplar": true,
+ "expr": "kube_pod_container_status_ready{container=\"postgres\",namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"}",
+ "instant": true,
+ "interval": "",
+ "legendFormat": "{{pod}}",
+ "refId": "A"
+ }
+ ],
+ "title": "Effective Cache Size",
+ "type": "text"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "gridPos": {
+ "h": 1,
+ "w": 3,
+ "x": 12,
+ "y": 25
+ },
+ "id": 186,
+ "options": {
+ "code": {
+ "language": "plaintext",
+ "showLineNumbers": false,
+ "showMiniMap": false
+ },
+ "content": "",
+ "mode": "html"
+ },
+ "pluginVersion": "10.3.1",
+ "repeatDirection": "v",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "exemplar": true,
+ "expr": "kube_pod_container_status_ready{container=\"postgres\",namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"}",
+ "instant": true,
+ "interval": "",
+ "legendFormat": "{{pod}}",
+ "refId": "A"
+ }
+ ],
+ "title": "Work Mem",
+ "type": "text"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "gridPos": {
+ "h": 1,
+ "w": 3,
+ "x": 15,
+ "y": 25
+ },
+ "id": 188,
+ "options": {
+ "code": {
+ "language": "plaintext",
+ "showLineNumbers": false,
+ "showMiniMap": false
+ },
+ "content": "",
+ "mode": "html"
+ },
+ "pluginVersion": "10.3.1",
+ "repeatDirection": "v",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "exemplar": true,
+ "expr": "kube_pod_container_status_ready{container=\"postgres\",namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"}",
+ "instant": true,
+ "interval": "",
+ "legendFormat": "{{pod}}",
+ "refId": "A"
+ }
+ ],
+ "title": "Maintenance Work Mem",
+ "type": "text"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "gridPos": {
+ "h": 1,
+ "w": 3,
+ "x": 18,
+ "y": 25
+ },
+ "id": 189,
+ "options": {
+ "code": {
+ "language": "plaintext",
+ "showLineNumbers": false,
+ "showMiniMap": false
+ },
+ "content": "",
+ "mode": "html"
+ },
+ "pluginVersion": "10.3.1",
+ "repeatDirection": "v",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "exemplar": true,
+ "expr": "kube_pod_container_status_ready{container=\"postgres\",namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"}",
+ "instant": true,
+ "interval": "",
+ "legendFormat": "{{pod}}",
+ "refId": "A"
+ }
+ ],
+ "title": "Random Page Cost",
+ "type": "text"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "gridPos": {
+ "h": 1,
+ "w": 3,
+ "x": 21,
+ "y": 25
+ },
+ "id": 190,
+ "options": {
+ "code": {
+ "language": "plaintext",
+ "showLineNumbers": false,
+ "showMiniMap": false
+ },
+ "content": "",
+ "mode": "html"
+ },
+ "pluginVersion": "10.3.1",
+ "repeatDirection": "v",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "exemplar": true,
+ "expr": "kube_pod_container_status_ready{container=\"postgres\",namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"}",
+ "instant": true,
+ "interval": "",
+ "legendFormat": "{{pod}}",
+ "refId": "A"
+ }
+ ],
+ "title": "Sequential Page Cost",
+ "type": "text"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 3,
+ "x": 0,
+ "y": 26
+ },
+ "id": 86,
+ "options": {
+ "code": {
+ "language": "plaintext",
+ "showLineNumbers": false,
+ "showMiniMap": false
+ },
+ "content": "",
+ "mode": "html"
+ },
+ "pluginVersion": "10.3.1",
+ "repeat": "instances",
+ "repeatDirection": "v",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "exemplar": true,
+ "expr": "kube_pod_container_status_ready{container=\"postgres\",namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"}",
+ "instant": true,
+ "interval": "",
+ "legendFormat": "{{pod}}",
+ "refId": "A"
+ }
+ ],
+ "type": "text"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "dark-purple"
+ }
+ ]
+ },
+ "unitScale": true
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 3,
+ "x": 3,
+ "y": 26
+ },
+ "id": 30,
+ "options": {
+ "colorMode": "background",
+ "graphMode": "none",
+ "justifyMode": "auto",
+ "orientation": "horizontal",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showPercentChange": false,
+ "text": {},
+ "textMode": "value",
+ "wideLayout": true
+ },
+ "pluginVersion": "10.3.1",
+ "repeat": "instances",
+ "repeatDirection": "v",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "exemplar": true,
+ "expr": "cnpg_pg_settings_setting{name=\"max_connections\",namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"}",
+ "instant": true,
+ "interval": "",
+ "legendFormat": "{{pod}}",
+ "refId": "A"
+ }
+ ],
+ "type": "stat"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "description": "",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "dark-purple"
+ }
+ ]
+ },
+ "unit": "bytes",
+ "unitScale": true
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 3,
+ "x": 6,
+ "y": 26
+ },
+ "id": 24,
+ "options": {
+ "colorMode": "background",
+ "graphMode": "none",
+ "justifyMode": "auto",
+ "orientation": "horizontal",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showPercentChange": false,
+ "text": {},
+ "textMode": "value",
+ "wideLayout": true
+ },
+ "pluginVersion": "10.3.1",
+ "repeat": "instances",
+ "repeatDirection": "v",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "exemplar": true,
+ "expr": "max by (pod) (cnpg_pg_settings_setting{name=\"shared_buffers\",namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"}) * max by (pod) (cnpg_pg_settings_setting{name=\"block_size\",namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"})",
+ "instant": true,
+ "interval": "",
+ "legendFormat": "{{pod}}",
+ "refId": "A"
+ }
+ ],
+ "type": "stat"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "description": "",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "dark-purple"
+ }
+ ]
+ },
+ "unit": "bytes",
+ "unitScale": true
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 3,
+ "x": 9,
+ "y": 26
+ },
+ "id": 57,
+ "options": {
+ "colorMode": "background",
+ "graphMode": "none",
+ "justifyMode": "auto",
+ "orientation": "horizontal",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showPercentChange": false,
+ "text": {},
+ "textMode": "value",
+ "wideLayout": true
+ },
+ "pluginVersion": "10.3.1",
+ "repeat": "instances",
+ "repeatDirection": "v",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "exemplar": true,
+ "expr": "max by (pod) (cnpg_pg_settings_setting{name=\"effective_cache_size\",namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"}) * max by (pod) (cnpg_pg_settings_setting{name=\"block_size\",namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"})",
+ "instant": true,
+ "interval": "",
+ "legendFormat": "{{pod}}",
+ "refId": "A"
+ }
+ ],
+ "type": "stat"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "description": "",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "dark-purple"
+ }
+ ]
+ },
+ "unit": "bytes",
+ "unitScale": true
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 3,
+ "x": 12,
+ "y": 26
+ },
+ "id": 26,
+ "options": {
+ "colorMode": "background",
+ "graphMode": "none",
+ "justifyMode": "auto",
+ "orientation": "horizontal",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showPercentChange": false,
+ "text": {},
+ "textMode": "value",
+ "wideLayout": true
+ },
+ "pluginVersion": "10.3.1",
+ "repeat": "instances",
+ "repeatDirection": "v",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "exemplar": true,
+ "expr": "cnpg_pg_settings_setting{name=\"work_mem\",namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"} * 1024",
+ "instant": true,
+ "interval": "",
+ "legendFormat": "{{pod}}",
+ "refId": "A"
+ }
+ ],
+ "type": "stat"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "dark-purple"
+ }
+ ]
+ },
+ "unit": "bytes",
+ "unitScale": true
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 3,
+ "x": 15,
+ "y": 26
+ },
+ "id": 47,
+ "options": {
+ "colorMode": "background",
+ "graphMode": "none",
+ "justifyMode": "auto",
+ "orientation": "horizontal",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showPercentChange": false,
+ "text": {},
+ "textMode": "value",
+ "wideLayout": true
+ },
+ "pluginVersion": "10.3.1",
+ "repeat": "instances",
+ "repeatDirection": "v",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "exemplar": true,
+ "expr": "cnpg_pg_settings_setting{name=\"maintenance_work_mem\",namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"} * 1024",
+ "instant": true,
+ "interval": "",
+ "legendFormat": "{{pod}}",
+ "refId": "A"
+ }
+ ],
+ "type": "stat"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "dark-purple"
+ }
+ ]
+ },
+ "unit": "none",
+ "unitScale": true
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 3,
+ "x": 18,
+ "y": 26
+ },
+ "id": 48,
+ "options": {
+ "colorMode": "background",
+ "graphMode": "none",
+ "justifyMode": "auto",
+ "orientation": "horizontal",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showPercentChange": false,
+ "text": {},
+ "textMode": "value",
+ "wideLayout": true
+ },
+ "pluginVersion": "10.3.1",
+ "repeat": "instances",
+ "repeatDirection": "v",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "exemplar": true,
+ "expr": "cnpg_pg_settings_setting{name=\"random_page_cost\",namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"}",
+ "instant": true,
+ "interval": "",
+ "legendFormat": "{{pod}}",
+ "refId": "A"
+ }
+ ],
+ "type": "stat"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "dark-purple"
+ }
+ ]
+ },
+ "unit": "none",
+ "unitScale": true
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 3,
+ "w": 3,
+ "x": 21,
+ "y": 26
+ },
+ "id": 56,
+ "options": {
+ "colorMode": "background",
+ "graphMode": "none",
+ "justifyMode": "auto",
+ "orientation": "horizontal",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showPercentChange": false,
+ "text": {},
+ "textMode": "value",
+ "wideLayout": true
+ },
+ "pluginVersion": "10.3.1",
+ "repeat": "instances",
+ "repeatDirection": "v",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "exemplar": true,
+ "expr": "cnpg_pg_settings_setting{name=\"seq_page_cost\",namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"}",
+ "instant": true,
+ "interval": "",
+ "legendFormat": "{{pod}}",
+ "refId": "A"
+ }
+ ],
+ "type": "stat"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "custom": {
+ "align": "auto",
+ "cellOptions": {
+ "type": "auto"
+ },
+ "filterable": true,
+ "inspect": false
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "dark-purple"
+ }
+ ]
+ },
+ "unitScale": true
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 9,
+ "w": 24,
+ "x": 0,
+ "y": 32
+ },
+ "id": 150,
+ "options": {
+ "cellHeight": "sm",
+ "footer": {
+ "countRows": false,
+ "fields": "",
+ "reducer": [
+ "sum"
+ ],
+ "show": false
+ },
+ "showHeader": true,
+ "sortBy": []
+ },
+ "pluginVersion": "10.3.1",
+ "repeatDirection": "v",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "exemplar": true,
+ "expr": "cnpg_pg_settings_setting{namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"}",
+ "format": "table",
+ "instant": true,
+ "interval": "",
+ "legendFormat": "{{pod}}",
+ "refId": "A"
+ }
+ ],
+ "title": "Configurations",
+ "transformations": [
+ {
+ "id": "organize",
+ "options": {
+ "excludeByName": {
+ "Time": true,
+ "__name__": true,
+ "container": true,
+ "endpoint": true,
+ "instance": true,
+ "job": true,
+ "name": false,
+ "namespace": true,
+ "pod": false
+ },
+ "indexByName": {
+ "Time": 0,
+ "Value": 9,
+ "__name__": 1,
+ "container": 2,
+ "endpoint": 3,
+ "instance": 4,
+ "job": 5,
+ "name": 7,
+ "namespace": 8,
+ "pod": 6
+ },
+ "renameByName": {
+ "__name__": "",
+ "name": "parameter"
+ }
+ }
+ },
+ {
+ "id": "groupingToMatrix",
+ "options": {
+ "columnField": "pod",
+ "rowField": "parameter",
+ "valueField": "Value"
+ }
+ },
+ {
+ "id": "organize",
+ "options": {
+ "excludeByName": {},
+ "indexByName": {},
+ "renameByName": {
+ "parameter\\pod": "parameter"
+ }
+ }
+ }
+ ],
+ "type": "table"
+ }
+ ],
+ "targets": [
+ {
+ "datasource": {
+ "uid": "prometheus"
+ },
+ "refId": "A"
+ }
+ ],
+ "title": "Configuration",
+ "type": "row"
+ },
+ {
+ "collapsed": false,
+ "datasource": {
+ "uid": "prometheus"
+ },
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 19
+ },
+ "id": 10,
+ "panels": [],
+ "targets": [
+ {
+ "datasource": {
+ "uid": "prometheus"
+ },
+ "refId": "A"
+ }
+ ],
+ "title": "Operational Stats",
+ "type": "row"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "drawStyle": "line",
+ "fillOpacity": 100,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 2,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "log": 10,
+ "type": "log"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "normal"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ },
+ "mappings": [],
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "red",
+ "value": 80
+ }
+ ]
+ },
+ "unit": "short",
+ "unitScale": true
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 7,
+ "w": 12,
+ "x": 0,
+ "y": 20
+ },
+ "id": 273,
+ "links": [],
+ "options": {
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "mode": "multi",
+ "sort": "desc"
+ }
+ },
+ "pluginVersion": "10.3.1",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "exemplar": true,
+ "expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{pod=~\"$instances\", namespace=~\"$namespace\", cluster=~\"$k8s_cluster\"}) by (pod)",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "{{pod}}",
+ "refId": "A",
+ "step": 10
+ }
+ ],
+ "title": "CPU Usage",
+ "type": "timeseries"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "drawStyle": "line",
+ "fillOpacity": 100,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 2,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ },
+ "mappings": [],
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ },
+ {
+ "color": "red",
+ "value": 80
+ }
+ ]
+ },
+ "unit": "bytes",
+ "unitScale": true
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "quota - requests"
+ },
+ "properties": [
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "#F2495C",
+ "mode": "fixed"
+ }
+ },
+ {
+ "id": "custom.fillOpacity",
+ "value": 0
+ },
+ {
+ "id": "custom.lineWidth",
+ "value": 2
+ },
+ {
+ "id": "custom.stacking",
+ "value": {
+ "group": "A",
+ "mode": "none"
+ }
+ },
+ {
+ "id": "custom.lineStyle",
+ "value": {
+ "dash": [
+ 10,
+ 10
+ ],
+ "fill": "dash"
+ }
+ }
+ ]
+ },
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "quota - limits"
+ },
+ "properties": [
+ {
+ "id": "color",
+ "value": {
+ "fixedColor": "#FF9830",
+ "mode": "fixed"
+ }
+ },
+ {
+ "id": "custom.fillOpacity",
+ "value": 0
+ },
+ {
+ "id": "custom.lineWidth",
+ "value": 2
+ },
+ {
+ "id": "custom.stacking",
+ "value": {
+ "group": "A",
+ "mode": "none"
+ }
+ },
+ {
+ "id": "custom.lineStyle",
+ "value": {
+ "dash": [
+ 10,
+ 10
+ ],
+ "fill": "dash"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ "gridPos": {
+ "h": 7,
+ "w": 12,
+ "x": 12,
+ "y": 20
+ },
+ "id": 275,
+ "links": [],
+ "options": {
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "mode": "multi",
+ "sort": "desc"
+ }
+ },
+ "pluginVersion": "10.3.1",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "exemplar": true,
+ "expr": "sum(container_memory_working_set_bytes{pod=~\"$instances\", namespace=\"$namespace\", container!=\"\", image!=\"\", cluster=~\"$k8s_cluster\"}) by (pod)",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 2,
+ "legendFormat": "{{pod}}",
+ "refId": "A",
+ "step": 10
+ }
+ ],
+ "title": "Memory Usage (container memory working set)",
+ "type": "timeseries"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "description": "",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "drawStyle": "line",
+ "fillOpacity": 10,
+ "gradientMode": "opacity",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": true,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": null
+ }
+ ]
+ },
+ "unitScale": true
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 8,
+ "w": 24,
+ "x": 0,
+ "y": 27
+ },
+ "id": 39,
+ "options": {
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "exemplar": true,
+ "expr": "sum(cnpg_backends_total{namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"}) by (pod)",
+ "hide": false,
+ "interval": "",
+ "legendFormat": "total ({{pod}})",
+ "refId": "B"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "exemplar": true,
+ "expr": "sum(cnpg_backends_total{namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"}) by (state, pod)",
+ "interval": "",
+ "legendFormat": "{{state}} ({{pod}})",
+ "refId": "A"
+ }
+ ],
+ "title": "Session States",
+ "type": "timeseries"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "drawStyle": "line",
+ "fillOpacity": 10,
+ "gradientMode": "opacity",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": true,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green"
+ },
+ {
+ "color": "red",
+ "value": 80
+ }
+ ]
+ },
+ "unitScale": true
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 8,
+ "w": 12,
+ "x": 0,
+ "y": 35
+ },
+ "id": 50,
+ "options": {
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "editorMode": "code",
+ "exemplar": true,
+ "expr": "sum(rate(cnpg_pg_stat_database_xact_commit{namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"}[5m])) by (pod)",
+ "interval": "",
+ "legendFormat": "committed ({{pod}})",
+ "range": true,
+ "refId": "A"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "exemplar": true,
+ "expr": "sum(rate(cnpg_pg_stat_database_xact_rollback{namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"}[5m])) by (pod)",
+ "hide": false,
+ "interval": "",
+ "legendFormat": "rolled back ({{pod}})",
+ "refId": "B"
+ }
+ ],
+ "title": "Transactions [5m]",
+ "type": "timeseries"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "description": "",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "drawStyle": "line",
+ "fillOpacity": 10,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": true,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green"
+ },
+ {
+ "color": "red",
+ "value": 80
+ }
+ ]
+ },
+ "unit": "s",
+ "unitScale": true
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 8,
+ "w": 12,
+ "x": 12,
+ "y": 35
+ },
+ "id": 4,
+ "options": {
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "exemplar": true,
+ "expr": "max by (pod) (cnpg_backends_max_tx_duration_seconds{namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"})",
+ "interval": "",
+ "legendFormat": "{{pod}}",
+ "refId": "A"
+ }
+ ],
+ "title": "Longest Transaction",
+ "type": "timeseries"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "description": "",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "drawStyle": "line",
+ "fillOpacity": 10,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": true,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green"
+ },
+ {
+ "color": "red",
+ "value": 80
+ }
+ ]
+ },
+ "unitScale": true
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 8,
+ "w": 12,
+ "x": 0,
+ "y": 43
+ },
+ "id": 55,
+ "options": {
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "exemplar": true,
+ "expr": "rate(cnpg_pg_stat_database_deadlocks{datname=\"\",namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"}[5m])",
+ "hide": false,
+ "instant": false,
+ "interval": "",
+ "legendFormat": "count ({{pod}})",
+ "refId": "B"
+ }
+ ],
+ "title": "Deadlocks [5m]",
+ "type": "timeseries"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "description": "",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "drawStyle": "line",
+ "fillOpacity": 10,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": true,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green"
+ },
+ {
+ "color": "red",
+ "value": 80
+ }
+ ]
+ },
+ "unitScale": true
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 8,
+ "w": 12,
+ "x": 12,
+ "y": 43
+ },
+ "id": 54,
+ "options": {
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "exemplar": true,
+ "expr": "cnpg_backends_waiting_total{namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"}",
+ "interval": "",
+ "legendFormat": "{{pod}}",
+ "refId": "A"
+ }
+ ],
+ "title": "Blocked Queries",
+ "type": "timeseries"
+ },
+ {
+ "collapsed": true,
+ "datasource": {
+ "uid": "prometheus"
+ },
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 51
+ },
+ "id": 35,
+ "panels": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [],
+ "max": 1,
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green"
+ },
+ {
+ "color": "#EAB839",
+ "value": 0.7
+ },
+ {
+ "color": "red",
+ "value": 0.8
+ }
+ ]
+ },
+ "unit": "percentunit",
+ "unitScale": true
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 8,
+ "w": 12,
+ "x": 0,
+ "y": 52
+ },
+ "id": 424,
+ "options": {
+ "minVizHeight": 75,
+ "minVizWidth": 75,
+ "orientation": "auto",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showThresholdLabels": false,
+ "showThresholdMarkers": true,
+ "sizing": "auto",
+ "text": {}
+ },
+ "pluginVersion": "10.3.3",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "editorMode": "code",
+ "expr": "max by(persistentvolumeclaim) (1 - kubelet_volume_stats_available_bytes{namespace=\"$namespace\", persistentvolumeclaim=~\"$instances\", cluster=~\"$k8s_cluster\"} / kubelet_volume_stats_capacity_bytes{namespace=\"$namespace\", persistentvolumeclaim=~\"$instances\", cluster=~\"$k8s_cluster\"})",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "{{persistentvolumeclaim}}",
+ "range": true,
+ "refId": "FREE_SPACE"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "editorMode": "code",
+ "expr": "max by(persistentvolumeclaim) (1 - kubelet_volume_stats_available_bytes{namespace=\"$namespace\", persistentvolumeclaim=~\"(${instances})-wal\", cluster=~\"$k8s_cluster\"} / kubelet_volume_stats_capacity_bytes{namespace=\"$namespace\", persistentvolumeclaim=~\"(${instances})-wal\", cluster=~\"$k8s_cluster\"})",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "{{persistentvolumeclaim}}",
+ "range": true,
+ "refId": "FREE_SPACE_WAL"
+ }
+ ],
+ "title": "Volume Space Usage: PGDATA and WAL",
+ "transformations": [],
+ "type": "gauge"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "decimals": 2,
+ "mappings": [],
+ "max": 1,
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green"
+ },
+ {
+ "color": "#EAB839",
+ "value": 0.8
+ },
+ {
+ "color": "red",
+ "value": 0.9
+ }
+ ]
+ },
+ "unit": "percentunit",
+ "unitScale": true
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 8,
+ "w": 12,
+ "x": 12,
+ "y": 52
+ },
+ "id": 426,
+ "options": {
+ "minVizHeight": 75,
+ "minVizWidth": 75,
+ "orientation": "auto",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showThresholdLabels": false,
+ "showThresholdMarkers": true,
+ "sizing": "auto"
+ },
+ "pluginVersion": "10.3.3",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "editorMode": "code",
+ "expr": "max by(persistentvolumeclaim) (kubelet_volume_stats_inodes_used{namespace=\"$namespace\", persistentvolumeclaim=~\"$instances\", cluster=~\"$k8s_cluster\"} / kubelet_volume_stats_inodes{namespace=\"$namespace\", persistentvolumeclaim=~\"$instances\", cluster=~\"$k8s_cluster\"})",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "{{persistentvolumeclaim}}",
+ "range": true,
+ "refId": "FREE_INODES"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "editorMode": "code",
+ "expr": "max by(persistentvolumeclaim) (kubelet_volume_stats_inodes_used{namespace=\"$namespace\", persistentvolumeclaim=~\"(${instances})-wal\", cluster=~\"$k8s_cluster\"} / kubelet_volume_stats_inodes{namespace=\"$namespace\", persistentvolumeclaim=~\"(${instances})-wal\", cluster=~\"$k8s_cluster\"})",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "{{persistentvolumeclaim}}",
+ "range": true,
+ "refId": "FREE_INODES_WAL"
+ }
+ ],
+ "title": "Volume Inode Usage: PGDATA and WAL",
+ "transformations": [],
+ "type": "gauge"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [],
+ "max": 1,
+ "min": 0,
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green"
+ },
+ {
+ "color": "#EAB839",
+ "value": 0.7
+ },
+ {
+ "color": "red",
+ "value": 0.8
+ }
+ ]
+ },
+ "unit": "percentunit",
+ "unitScale": true
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 7,
+ "w": 24,
+ "x": 0,
+ "y": 60
+ },
+ "id": 564,
+ "options": {
+ "minVizHeight": 75,
+ "minVizWidth": 75,
+ "orientation": "auto",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showThresholdLabels": false,
+ "showThresholdMarkers": true,
+ "sizing": "auto",
+ "text": {}
+ },
+ "pluginVersion": "10.3.3",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "editorMode": "code",
+ "expr": "sum by (namespace,persistentvolumeclaim) (kubelet_volume_stats_used_bytes{namespace=\"$namespace\", persistentvolumeclaim=~\"(${instances})-tbs.*\", cluster=~\"$k8s_cluster\"}) \n/\nsum by (namespace,persistentvolumeclaim) (kubelet_volume_stats_capacity_bytes{namespace=\"$namespace\", persistentvolumeclaim=~\"(${instances})-tbs.*\", cluster=~\"$k8s_cluster\"}) \n*\non(namespace, persistentvolumeclaim) group_left(volume,pod)\nkube_pod_spec_volumes_persistentvolumeclaims_info{pod=~\"$instances\", cluster=~\"$k8s_cluster\"}",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "{{volume}}-{{pod}}",
+ "range": true,
+ "refId": "FREE_SPACE"
+ }
+ ],
+ "title": "Volume Space Usage: Tablespaces",
+ "transformations": [],
+ "type": "gauge"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "drawStyle": "line",
+ "fillOpacity": 10,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": true,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green"
+ },
+ {
+ "color": "red",
+ "value": 80
+ }
+ ]
+ },
+ "unitScale": true
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 8,
+ "w": 12,
+ "x": 0,
+ "y": 67
+ },
+ "id": 44,
+ "options": {
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "editorMode": "code",
+ "exemplar": true,
+ "expr": "sum(rate(cnpg_pg_stat_database_tup_deleted{datname=\"\",namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"}[5m]))",
+ "interval": "",
+ "legendFormat": "deleted",
+ "range": true,
+ "refId": "A"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "editorMode": "code",
+ "exemplar": true,
+ "expr": "sum(rate(cnpg_pg_stat_database_tup_inserted{datname=\"\",namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"}[5m]))",
+ "hide": false,
+ "interval": "",
+ "legendFormat": "inserted",
+ "range": true,
+ "refId": "B"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "editorMode": "code",
+ "exemplar": true,
+ "expr": "sum(rate(cnpg_pg_stat_database_tup_fetched{datname=\"\",namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"}[5m]))",
+ "hide": false,
+ "interval": "",
+ "legendFormat": "fetched",
+ "range": true,
+ "refId": "C"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "editorMode": "code",
+ "exemplar": true,
+ "expr": "sum(rate(cnpg_pg_stat_database_tup_returned{datname=\"\",namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"}[5m]))",
+ "hide": false,
+ "interval": "",
+ "legendFormat": "returned",
+ "range": true,
+ "refId": "D"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "editorMode": "code",
+ "exemplar": true,
+ "expr": "sum(rate(cnpg_pg_stat_database_tup_updated{datname=\"\",namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"}[5m]))",
+ "hide": false,
+ "interval": "",
+ "legendFormat": "updated",
+ "range": true,
+ "refId": "E"
+ }
+ ],
+ "title": "Tuple I/O [5m]",
+ "type": "timeseries"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "drawStyle": "line",
+ "fillOpacity": 10,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": true,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green"
+ },
+ {
+ "color": "red",
+ "value": 80
+ }
+ ]
+ },
+ "unitScale": true
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 8,
+ "w": 12,
+ "x": 12,
+ "y": 67
+ },
+ "id": 46,
+ "options": {
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "editorMode": "code",
+ "exemplar": true,
+ "expr": "rate(cnpg_pg_stat_database_blks_hit{datname=\"\",namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"}[5m])",
+ "interval": "",
+ "legendFormat": "hit ({{pod}})",
+ "range": true,
+ "refId": "A"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "editorMode": "code",
+ "exemplar": true,
+ "expr": "rate(cnpg_pg_stat_database_blks_read{datname=\"\",namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"}[5m])",
+ "hide": false,
+ "interval": "",
+ "legendFormat": "read ({{pod}})",
+ "range": true,
+ "refId": "B"
+ }
+ ],
+ "title": "Block I/O [5m]",
+ "type": "timeseries"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "drawStyle": "line",
+ "fillOpacity": 10,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": true,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green"
+ }
+ ]
+ },
+ "unit": "decbytes",
+ "unitScale": true
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 8,
+ "w": 12,
+ "x": 0,
+ "y": 75
+ },
+ "id": 22,
+ "options": {
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "pluginVersion": "8.0.5",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "editorMode": "code",
+ "exemplar": true,
+ "expr": "max by (datname) (cnpg_pg_database_size_bytes{datname!~\"template.*\",datname!=\"postgres\",namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"})",
+ "interval": "",
+ "legendFormat": " {{pod}}: {{datname}}",
+ "range": true,
+ "refId": "A"
+ }
+ ],
+ "title": "Database Size",
+ "type": "timeseries"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "drawStyle": "line",
+ "fillOpacity": 10,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": true,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green"
+ },
+ {
+ "color": "red",
+ "value": 80
+ }
+ ]
+ },
+ "unit": "decbytes",
+ "unitScale": true
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 8,
+ "w": 12,
+ "x": 12,
+ "y": 75
+ },
+ "id": 2,
+ "options": {
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "exemplar": true,
+ "expr": "rate(cnpg_pg_stat_database_temp_bytes{datname=\"\",namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"}[5m])",
+ "instant": false,
+ "interval": "",
+ "legendFormat": "{{pod}}",
+ "refId": "A"
+ }
+ ],
+ "title": "Temp Bytes [5m]",
+ "type": "timeseries"
+ }
+ ],
+ "targets": [
+ {
+ "datasource": {
+ "uid": "prometheus"
+ },
+ "refId": "A"
+ }
+ ],
+ "title": "Storage & I/O",
+ "type": "row"
+ },
+ {
+ "collapsed": true,
+ "datasource": {
+ "uid": "prometheus"
+ },
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 52
+ },
+ "id": 37,
+ "panels": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "drawStyle": "line",
+ "fillOpacity": 10,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": true,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green"
+ },
+ {
+ "color": "red",
+ "value": 80
+ }
+ ]
+ },
+ "unitScale": true
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 0,
+ "y": 53
+ },
+ "id": 6,
+ "options": {
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "exemplar": true,
+ "expr": "cnpg_collector_pg_wal_archive_status{value=\"ready\",namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"}",
+ "interval": "",
+ "legendFormat": "ready ({{pod}})",
+ "refId": "A"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "exemplar": true,
+ "expr": "cnpg_collector_pg_wal_archive_status{value=\"done\",namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"}",
+ "hide": false,
+ "interval": "",
+ "legendFormat": "done ({{pod}})",
+ "refId": "B"
+ }
+ ],
+ "title": "WAL Segment Archive Status",
+ "type": "timeseries"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "drawStyle": "line",
+ "fillOpacity": 10,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": true,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green"
+ },
+ {
+ "color": "red",
+ "value": 80
+ }
+ ]
+ },
+ "unitScale": true
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 8,
+ "y": 53
+ },
+ "id": 52,
+ "options": {
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "exemplar": true,
+ "expr": "rate(cnpg_pg_stat_archiver_archived_count{namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"}[5m])",
+ "interval": "",
+ "legendFormat": "archived ({{pod}})",
+ "refId": "A"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "exemplar": true,
+ "expr": "rate(cnpg_pg_stat_archiver_failed_count{namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"}[5m])",
+ "hide": false,
+ "interval": "",
+ "legendFormat": "failed ({{pod}})",
+ "refId": "B"
+ }
+ ],
+ "title": "Archiver Status [5m]",
+ "type": "timeseries"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "description": "",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "drawStyle": "line",
+ "fillOpacity": 10,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": true,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green"
+ },
+ {
+ "color": "red",
+ "value": 80
+ }
+ ]
+ },
+ "unit": "s",
+ "unitScale": true
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 16,
+ "y": 53
+ },
+ "id": 53,
+ "options": {
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "exemplar": true,
+ "expr": "cnpg_pg_stat_archiver_seconds_since_last_archival{namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"}",
+ "interval": "",
+ "legendFormat": "age ({{pod}})",
+ "refId": "A"
+ }
+ ],
+ "title": "Last Archive Age",
+ "type": "timeseries"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "drawStyle": "line",
+ "fillOpacity": 0,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "auto",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green"
+ },
+ {
+ "color": "red",
+ "value": 80
+ }
+ ]
+ },
+ "unitScale": true
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 8,
+ "w": 8,
+ "x": 0,
+ "y": 61
+ },
+ "id": 725,
+ "options": {
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "mode": "single",
+ "sort": "none"
+ }
+ },
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "editorMode": "code",
+ "expr": "cnpg_collector_pg_wal{pod=~\"$instances\", namespace=~\"$namespace\", value=\"count\", cluster=~\"$k8s_cluster\"}",
+ "instant": false,
+ "legendFormat": "{{pod}}",
+ "range": true,
+ "refId": "A"
+ }
+ ],
+ "title": "WAL Count",
+ "type": "timeseries"
+ }
+ ],
+ "targets": [
+ {
+ "datasource": {
+ "uid": "prometheus"
+ },
+ "refId": "A"
+ }
+ ],
+ "title": "Write Ahead Log",
+ "type": "row"
+ },
+ {
+ "collapsed": true,
+ "datasource": {
+ "uid": "prometheus"
+ },
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 53
+ },
+ "id": 18,
+ "panels": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "drawStyle": "line",
+ "fillOpacity": 10,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": true,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "line"
+ }
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green"
+ },
+ {
+ "color": "#EAB839",
+ "value": 600
+ },
+ {
+ "color": "dark-red",
+ "value": 3600
+ }
+ ]
+ },
+ "unit": "s",
+ "unitScale": true
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 8,
+ "w": 6,
+ "x": 0,
+ "y": 59
+ },
+ "id": 16,
+ "options": {
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "exemplar": true,
+ "expr": "cnpg_pg_replication_lag{namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"}",
+ "instant": false,
+ "interval": "",
+ "legendFormat": "{{pod}}",
+ "refId": "A"
+ }
+ ],
+ "title": "Replication Lag",
+ "type": "timeseries"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "drawStyle": "line",
+ "fillOpacity": 10,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": true,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green"
+ },
+ {
+ "color": "red",
+ "value": 80
+ }
+ ]
+ },
+ "unit": "s",
+ "unitScale": true
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 8,
+ "w": 6,
+ "x": 6,
+ "y": 59
+ },
+ "id": 14,
+ "options": {
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "editorMode": "code",
+ "exemplar": true,
+ "expr": "cnpg_pg_stat_replication_write_lag_seconds{namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"}",
+ "instant": false,
+ "interval": "",
+ "legendFormat": "{{pod}} -> {{application_name}}",
+ "refId": "A"
+ }
+ ],
+ "title": "Write Lag",
+ "type": "timeseries"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "drawStyle": "line",
+ "fillOpacity": 10,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": true,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green"
+ },
+ {
+ "color": "red",
+ "value": 80
+ }
+ ]
+ },
+ "unit": "s",
+ "unitScale": true
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 8,
+ "w": 6,
+ "x": 12,
+ "y": 59
+ },
+ "id": 59,
+ "options": {
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "editorMode": "code",
+ "exemplar": true,
+ "expr": "cnpg_pg_stat_replication_flush_lag_seconds{namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"}",
+ "instant": false,
+ "interval": "",
+ "legendFormat": "{{pod}} -> {{application_name}}",
+ "refId": "A"
+ }
+ ],
+ "title": "Flush Lag",
+ "type": "timeseries"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "description": "",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "drawStyle": "line",
+ "fillOpacity": 10,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": true,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green"
+ },
+ {
+ "color": "red",
+ "value": 80
+ }
+ ]
+ },
+ "unit": "s",
+ "unitScale": true
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 8,
+ "w": 6,
+ "x": 18,
+ "y": 59
+ },
+ "id": 20,
+ "options": {
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "editorMode": "code",
+ "exemplar": true,
+ "expr": "cnpg_pg_stat_replication_replay_lag_seconds{namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"}",
+ "interval": "",
+ "legendFormat": "{{pod}} -> {{application_name}}",
+ "range": true,
+ "refId": "A"
+ }
+ ],
+ "title": "Replay Lag",
+ "type": "timeseries"
+ }
+ ],
+ "targets": [
+ {
+ "datasource": {
+ "uid": "prometheus"
+ },
+ "refId": "A"
+ }
+ ],
+ "title": "Replication",
+ "type": "row"
+ },
+ {
+ "collapsed": true,
+ "datasource": {
+ "uid": "prometheus"
+ },
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 54
+ },
+ "id": 231,
+ "panels": [
+ {
+ "cards": {},
+ "color": {
+ "cardColor": "#b4ff00",
+ "colorScale": "sqrt",
+ "colorScheme": "interpolateOranges",
+ "exponent": 0.5,
+ "mode": "spectrum"
+ },
+ "dataFormat": "timeseries",
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "custom": {
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "scaleDistribution": {
+ "type": "linear"
+ }
+ },
+ "unitScale": true
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 8,
+ "w": 12,
+ "x": 0,
+ "y": 55
+ },
+ "heatmap": {},
+ "hideZeroBuckets": false,
+ "highlightCards": true,
+ "id": 233,
+ "legend": {
+ "show": false
+ },
+ "options": {
+ "calculate": true,
+ "calculation": {},
+ "cellGap": 2,
+ "cellValues": {},
+ "color": {
+ "exponent": 0.5,
+ "fill": "#b4ff00",
+ "mode": "scheme",
+ "reverse": false,
+ "scale": "exponential",
+ "scheme": "Oranges",
+ "steps": 128
+ },
+ "exemplars": {
+ "color": "rgba(255,0,255,0.7)"
+ },
+ "filterValues": {
+ "le": 1e-09
+ },
+ "legend": {
+ "show": false
+ },
+ "rowsFrame": {
+ "layout": "auto"
+ },
+ "showValue": "never",
+ "tooltip": {
+ "mode": "single",
+ "showColorScale": false,
+ "yHistogram": false
+ },
+ "yAxis": {
+ "axisPlacement": "left",
+ "reverse": false,
+ "unit": "s"
+ }
+ },
+ "pluginVersion": "10.3.3",
+ "reverseYBuckets": false,
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "exemplar": true,
+ "expr": "cnpg_collector_collection_duration_seconds{namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"}",
+ "interval": "",
+ "legendFormat": "",
+ "refId": "A"
+ }
+ ],
+ "title": "Collection Duration",
+ "tooltip": {
+ "show": true,
+ "showHistogram": false
+ },
+ "type": "heatmap",
+ "xAxis": {
+ "show": true
+ },
+ "yAxis": {
+ "format": "s",
+ "logBase": 1,
+ "show": true
+ },
+ "yBucketBound": "auto"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "drawStyle": "line",
+ "fillOpacity": 0,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "auto",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green"
+ },
+ {
+ "color": "red",
+ "value": 80
+ }
+ ]
+ },
+ "unitScale": true
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 8,
+ "w": 12,
+ "x": 12,
+ "y": 55
+ },
+ "id": 235,
+ "options": {
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "exemplar": true,
+ "expr": "cnpg_collector_last_collection_error{namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"}",
+ "interval": "",
+ "legendFormat": "{{pod}}",
+ "refId": "A"
+ }
+ ],
+ "title": "Errors",
+ "type": "timeseries"
+ }
+ ],
+ "targets": [
+ {
+ "datasource": {
+ "uid": "prometheus"
+ },
+ "refId": "A"
+ }
+ ],
+ "title": "Collector Stats",
+ "type": "row"
+ },
+ {
+ "collapsed": true,
+ "datasource": {
+ "uid": "prometheus"
+ },
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 55
+ },
+ "id": 239,
+ "panels": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "drawStyle": "line",
+ "fillOpacity": 0,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "auto",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green"
+ },
+ {
+ "color": "red",
+ "value": 80
+ }
+ ]
+ },
+ "unit": "dateTimeAsIso",
+ "unitScale": true
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 6,
+ "w": 8,
+ "x": 0,
+ "y": 56
+ },
+ "id": 237,
+ "options": {
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "exemplar": true,
+ "expr": "max({__name__=~\"cnpg_collector_first_recoverability_point|barman_cloud_cloudnative_pg_io_first_recoverability_point\",namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"})*1000 > 0",
+ "format": "time_series",
+ "interval": "",
+ "legendFormat": "{{pod}}",
+ "refId": "A"
+ }
+ ],
+ "title": "First Recoverability Point",
+ "type": "timeseries"
+ }
+ ],
+ "targets": [
+ {
+ "datasource": {
+ "uid": "prometheus"
+ },
+ "refId": "A"
+ }
+ ],
+ "title": "Backups",
+ "type": "row"
+ },
+ {
+ "collapsed": true,
+ "datasource": {
+ "uid": "prometheus"
+ },
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 56
+ },
+ "id": 293,
+ "panels": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "description": "",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": -1,
+ "drawStyle": "line",
+ "fillOpacity": 8,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": true,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green"
+ },
+ {
+ "color": "red",
+ "value": 80
+ }
+ ]
+ },
+ "unit": "none",
+ "unitScale": true
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 6,
+ "w": 5,
+ "x": 0,
+ "y": 57
+ },
+ "id": 295,
+ "options": {
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "pluginVersion": "8.2.1",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "exemplar": true,
+ "expr": "rate({__name__=~\"cnpg_pg_stat_(bgwriter|checkpointer)_checkpoints_req\",namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"}[$__rate_interval])",
+ "format": "time_series",
+ "hide": false,
+ "instant": false,
+ "interval": "",
+ "intervalFactor": 1,
+ "legendFormat": "req/{{pod}}",
+ "refId": "B"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "exemplar": true,
+ "expr": "rate({__name__=~\"cnpg_pg_stat_(bgwriter|checkpointer)_checkpoints_timed\",namespace=~\"$namespace\",pod=~\"$instances\", cluster=~\"$k8s_cluster\"}[$__rate_interval])",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 1,
+ "legendFormat": "timed/{{pod}}",
+ "refId": "A"
+ }
+ ],
+ "title": "Requested/Timed",
+ "type": "timeseries"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "description": "",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": -1,
+ "drawStyle": "line",
+ "fillOpacity": 8,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": true,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green"
+ },
+ {
+ "color": "red",
+ "value": 80
+ }
+ ]
+ },
+ "unit": "ms",
+ "unitScale": true
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 6,
+ "w": 5,
+ "x": 5,
+ "y": 57
+ },
+ "id": 296,
+ "options": {
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "mode": "multi",
+ "sort": "none"
+ }
+ },
+ "pluginVersion": "8.2.1",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "exemplar": true,
+ "expr": "rate({__name__=~\"cnpg_pg_stat_(bgwriter_checkpoint|checkpointer)_write_time\", namespace=~\"$namespace\", pod=~\"$instances\", cluster=~\"$k8s_cluster\"}[$__rate_interval])",
+ "format": "time_series",
+ "hide": false,
+ "instant": false,
+ "interval": "",
+ "intervalFactor": 1,
+ "legendFormat": "write/{{pod}}",
+ "refId": "B"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "exemplar": true,
+ "expr": "rate({__name__=~\"cnpg_pg_stat_(bgwriter_checkpoint|checkpointer)_sync_time\", namespace=~\"$namespace\", pod=~\"$instances\", cluster=~\"$k8s_cluster\"}[$__rate_interval])",
+ "format": "time_series",
+ "interval": "",
+ "intervalFactor": 1,
+ "legendFormat": "sync/{{pod}}",
+ "refId": "A"
+ }
+ ],
+ "title": "Write/Sync time",
+ "type": "timeseries"
+ }
+ ],
+ "targets": [
+ {
+ "datasource": {
+ "uid": "prometheus"
+ },
+ "refId": "A"
+ }
+ ],
+ "title": "Checkpoints",
+ "type": "row"
+ },
+ {
+ "collapsed": true,
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 57
+ },
+ "id": 794,
+ "panels": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "description": "Show the installed extensions and their versions",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "custom": {
+ "align": "auto",
+ "cellOptions": {
+ "type": "auto",
+ "wrapText": false
+ },
+ "filterable": false,
+ "inspect": false
+ }
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "Update Available"
+ },
+ "properties": [
+ {
+ "id": "unit",
+ "value": "bool"
+ },
+ {
+ "id": "mappings",
+ "value": [
+ {
+ "options": {
+ "0": {
+ "color": "transparent",
+ "index": 1
+ },
+ "1": {
+ "color": "red",
+ "index": 0
+ }
+ },
+ "type": "value"
+ }
+ ]
+ },
+ {
+ "id": "custom.cellOptions",
+ "value": {
+ "applyToRow": true,
+ "mode": "gradient",
+ "type": "color-background"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ "gridPos": {
+ "h": 8,
+ "w": 24,
+ "x": 0,
+ "y": 81
+ },
+ "id": 792,
+ "options": {
+ "cellHeight": "sm",
+ "footer": {
+ "countRows": false,
+ "fields": "",
+ "reducer": [
+ "sum"
+ ],
+ "show": false
+ },
+ "showHeader": true,
+ "sortBy": [
+ {
+ "desc": false,
+ "displayName": "Value"
+ }
+ ]
+ },
+ "pluginVersion": "11.4.0",
+ "targets": [
+ {
+ "disableTextWrap": false,
+ "exemplar": false,
+ "expr": "max(cnpg_pg_extensions_update_available{pod=~\"$instances\", namespace=~\"$namespace\", cluster=~\"$k8s_cluster\"}) by (datname, extname, default_version, installed_version)",
+ "format": "table",
+ "fullMetaSearch": false,
+ "includeNullMetadata": true,
+ "instant": true,
+ "interval": "",
+ "legendFormat": "__auto",
+ "range": false,
+ "refId": "A",
+ "useBackend": false
+ }
+ ],
+ "title": "Installed extensions",
+ "transformations": [
+ {
+ "id": "sortBy",
+ "options": {
+ "fields": {},
+ "sort": [
+ {
+ "field": "extname"
+ }
+ ]
+ }
+ },
+ {
+ "id": "organize",
+ "options": {
+ "excludeByName": {
+ "Time": true
+ },
+ "indexByName": {
+ "Time": 0,
+ "extname": 1,
+ "datname": 2,
+ "default_version": 3,
+ "installed_version": 4,
+ "Value": 5
+ },
+ "renameByName": {
+ "default_version": "Default Version",
+ "datname": "Database",
+ "extname": "Extension",
+ "installed_version": "Installed Version",
+ "Value": "Update Available"
+ },
+ "includeByName": {}
+ }
+ }
+ ],
+ "type": "table"
+ }
+ ],
+ "title": "Extensions",
+ "type": "row"
+ },
+ {
+ "collapsed": true,
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 58
+ },
+ "id": 696,
+ "panels": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "description": "",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [
+ {
+ "options": {
+ "0": {
+ "color": "red",
+ "index": 0,
+ "text": "No Ready pods"
+ }
+ },
+ "type": "value"
+ }
+ ],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green"
+ }
+ ]
+ },
+ "unitScale": true
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "A"
+ },
+ "properties": [
+ {
+ "id": "displayName",
+ "value": "Reconcile errors"
+ }
+ ]
+ }
+ ]
+ },
+ "gridPos": {
+ "h": 2,
+ "w": 4,
+ "x": 0,
+ "y": 64
+ },
+ "id": 697,
+ "options": {
+ "colorMode": "background",
+ "graphMode": "none",
+ "justifyMode": "auto",
+ "orientation": "auto",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showPercentChange": false,
+ "textMode": "value_and_name",
+ "wideLayout": true
+ },
+ "pluginVersion": "10.3.3",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "editorMode": "code",
+ "exemplar": false,
+ "expr": "sum(kube_pod_status_ready{namespace=\"$operatorNamespace\", pod=~\"cloudnative-pg.+|cnpg-controller-manager.+\", condition=\"true\", cluster=~\"$k8s_cluster\"})",
+ "hide": false,
+ "instant": true,
+ "legendFormat": "Ready Operator Pods",
+ "range": false,
+ "refId": "A"
+ }
+ ],
+ "type": "stat"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "description": "The operator reconcile errors don't distinguish between database cluster or namespaces.",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [
+ {
+ "options": {
+ "0": {
+ "color": "green",
+ "index": 0,
+ "text": "None"
+ }
+ },
+ "type": "value"
+ },
+ {
+ "options": {
+ "from": 1,
+ "result": {
+ "color": "red",
+ "index": 1
+ },
+ "to": 4294967295
+ },
+ "type": "range"
+ }
+ ],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green"
+ }
+ ]
+ },
+ "unitScale": true
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "A"
+ },
+ "properties": [
+ {
+ "id": "displayName",
+ "value": "Reconcile errors"
+ }
+ ]
+ }
+ ]
+ },
+ "gridPos": {
+ "h": 2,
+ "w": 4,
+ "x": 4,
+ "y": 64
+ },
+ "id": 702,
+ "options": {
+ "colorMode": "background",
+ "graphMode": "none",
+ "justifyMode": "auto",
+ "orientation": "auto",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showPercentChange": false,
+ "textMode": "value_and_name",
+ "wideLayout": true
+ },
+ "pluginVersion": "10.3.3",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "editorMode": "code",
+ "exemplar": false,
+ "expr": "max(controller_runtime_reconcile_total{namespace=~\"$operatorNamespace\", result=\"error\", controller=\"cluster\", cluster=~\"$k8s_cluster\"})",
+ "hide": false,
+ "instant": true,
+ "legendFormat": "Cluster Reconcile Errors",
+ "range": false,
+ "refId": "RECONCILE_ERRORS_BACKUP"
+ }
+ ],
+ "type": "stat"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "description": "The operator reconcile errors don't distinguish between database cluster or namespaces.",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [
+ {
+ "options": {
+ "0": {
+ "color": "green",
+ "index": 0,
+ "text": "None"
+ }
+ },
+ "type": "value"
+ },
+ {
+ "options": {
+ "from": 1,
+ "result": {
+ "color": "red",
+ "index": 1
+ },
+ "to": 4294967295
+ },
+ "type": "range"
+ }
+ ],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green"
+ }
+ ]
+ },
+ "unitScale": true
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "A"
+ },
+ "properties": [
+ {
+ "id": "displayName",
+ "value": "Reconcile errors"
+ }
+ ]
+ }
+ ]
+ },
+ "gridPos": {
+ "h": 2,
+ "w": 4,
+ "x": 8,
+ "y": 64
+ },
+ "id": 698,
+ "options": {
+ "colorMode": "background",
+ "graphMode": "none",
+ "justifyMode": "auto",
+ "orientation": "auto",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showPercentChange": false,
+ "textMode": "value_and_name",
+ "wideLayout": true
+ },
+ "pluginVersion": "10.3.3",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "editorMode": "code",
+ "exemplar": false,
+ "expr": "max(controller_runtime_reconcile_total{namespace=~\"$operatorNamespace\", result=\"error\", controller=\"backup\", cluster=~\"$k8s_cluster\"})",
+ "hide": false,
+ "instant": true,
+ "legendFormat": "Backup Reconcile Errors",
+ "range": false,
+ "refId": "RECONCILE_ERRORS_BACKUP"
+ }
+ ],
+ "type": "stat"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "description": "The operator reconcile errors don't distinguish between database cluster or namespaces.",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [
+ {
+ "options": {
+ "0": {
+ "color": "green",
+ "index": 0,
+ "text": "None"
+ }
+ },
+ "type": "value"
+ },
+ {
+ "options": {
+ "from": 1,
+ "result": {
+ "color": "red",
+ "index": 1
+ },
+ "to": 4294967295
+ },
+ "type": "range"
+ }
+ ],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green"
+ }
+ ]
+ },
+ "unitScale": true
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "A"
+ },
+ "properties": [
+ {
+ "id": "displayName",
+ "value": "Reconcile errors"
+ }
+ ]
+ }
+ ]
+ },
+ "gridPos": {
+ "h": 2,
+ "w": 4,
+ "x": 12,
+ "y": 64
+ },
+ "id": 704,
+ "options": {
+ "colorMode": "background",
+ "graphMode": "none",
+ "justifyMode": "auto",
+ "orientation": "auto",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showPercentChange": false,
+ "textMode": "value_and_name",
+ "wideLayout": true
+ },
+ "pluginVersion": "10.3.3",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "editorMode": "code",
+ "exemplar": false,
+ "expr": "max(controller_runtime_reconcile_total{namespace=~\"$operatorNamespace\", result=\"error\", controller=~\"scheduledbackup|scheduled-backup\", cluster=~\"$k8s_cluster\"})",
+ "hide": false,
+ "instant": true,
+ "legendFormat": "Scheduled Backup Reconcile Errors",
+ "range": false,
+ "refId": "RECONCILE_ERRORS_BACKUP"
+ }
+ ],
+ "type": "stat"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "description": "The operator reconcile errors don't distinguish between database cluster or namespaces.",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [
+ {
+ "options": {
+ "0": {
+ "color": "green",
+ "index": 0,
+ "text": "None"
+ }
+ },
+ "type": "value"
+ },
+ {
+ "options": {
+ "from": 1,
+ "result": {
+ "color": "red",
+ "index": 1
+ },
+ "to": 4294967295
+ },
+ "type": "range"
+ }
+ ],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green"
+ }
+ ]
+ },
+ "unitScale": true
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "A"
+ },
+ "properties": [
+ {
+ "id": "displayName",
+ "value": "Reconcile errors"
+ }
+ ]
+ }
+ ]
+ },
+ "gridPos": {
+ "h": 2,
+ "w": 4,
+ "x": 16,
+ "y": 64
+ },
+ "id": 703,
+ "options": {
+ "colorMode": "background",
+ "graphMode": "none",
+ "justifyMode": "auto",
+ "orientation": "auto",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "showPercentChange": false,
+ "textMode": "value_and_name",
+ "wideLayout": true
+ },
+ "pluginVersion": "10.3.3",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "editorMode": "code",
+ "exemplar": false,
+ "expr": "max(controller_runtime_reconcile_total{namespace=~\"$operatorNamespace\", result=\"error\", controller=\"pooler\", cluster=~\"$k8s_cluster\"})",
+ "hide": false,
+ "instant": true,
+ "legendFormat": "Pooler Reconcile Errors",
+ "range": false,
+ "refId": "RECONCILE_ERRORS_BACKUP"
+ }
+ ],
+ "type": "stat"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "description": "",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "drawStyle": "line",
+ "fillOpacity": 0,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "auto",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ },
+ "mappings": [
+ {
+ "options": {
+ "0": {
+ "color": "red",
+ "index": 0,
+ "text": "No Ready pods"
+ }
+ },
+ "type": "value"
+ }
+ ],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green"
+ }
+ ]
+ },
+ "unitScale": true
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "A"
+ },
+ "properties": [
+ {
+ "id": "displayName",
+ "value": "Reconcile errors"
+ }
+ ]
+ }
+ ]
+ },
+ "gridPos": {
+ "h": 8,
+ "w": 4,
+ "x": 0,
+ "y": 66
+ },
+ "id": 746,
+ "options": {
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "mode": "single",
+ "sort": "none"
+ }
+ },
+ "pluginVersion": "10.3.3",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "editorMode": "code",
+ "expr": "sum(kube_pod_status_ready{namespace=\"$operatorNamespace\", pod=~\"cloudnative-pg.+|cnpg-controller-manager.+\", condition=\"true\", cluster=~\"$k8s_cluster\"})",
+ "hide": false,
+ "instant": false,
+ "legendFormat": "Ready Operator Pods",
+ "range": true,
+ "refId": "A"
+ }
+ ],
+ "title": "Ready Operator Pods",
+ "type": "timeseries"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "description": "The operator reconcile errors don't distinguish between database cluster or namespaces.",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "drawStyle": "line",
+ "fillOpacity": 0,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "auto",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ },
+ "mappings": [
+ {
+ "options": {
+ "0": {
+ "color": "green",
+ "index": 0,
+ "text": "None"
+ }
+ },
+ "type": "value"
+ },
+ {
+ "options": {
+ "from": 1,
+ "result": {
+ "color": "red",
+ "index": 1
+ },
+ "to": 4294967295
+ },
+ "type": "range"
+ }
+ ],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green"
+ }
+ ]
+ },
+ "unitScale": true
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "A"
+ },
+ "properties": [
+ {
+ "id": "displayName",
+ "value": "Reconcile errors"
+ }
+ ]
+ }
+ ]
+ },
+ "gridPos": {
+ "h": 8,
+ "w": 4,
+ "x": 4,
+ "y": 66
+ },
+ "id": 767,
+ "options": {
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "mode": "single",
+ "sort": "none"
+ }
+ },
+ "pluginVersion": "10.3.3",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "editorMode": "code",
+ "expr": "max(controller_runtime_reconcile_total{namespace=~\"$operatorNamespace\", result=\"error\", controller=\"cluster\", cluster=~\"$k8s_cluster\"})",
+ "hide": false,
+ "legendFormat": "Cluster Reconcile Errors",
+ "range": true,
+ "refId": "RECONCILE_ERRORS_BACKUP"
+ }
+ ],
+ "title": "Cluster Reconcile Errors",
+ "type": "timeseries"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "description": "The operator reconcile errors don't distinguish between database cluster or namespaces.",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "drawStyle": "line",
+ "fillOpacity": 0,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "auto",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ },
+ "mappings": [
+ {
+ "options": {
+ "0": {
+ "color": "green",
+ "index": 0,
+ "text": "None"
+ }
+ },
+ "type": "value"
+ },
+ {
+ "options": {
+ "from": 1,
+ "result": {
+ "color": "red",
+ "index": 1
+ },
+ "to": 4294967295
+ },
+ "type": "range"
+ }
+ ],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green"
+ }
+ ]
+ },
+ "unitScale": true
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "A"
+ },
+ "properties": [
+ {
+ "id": "displayName",
+ "value": "Reconcile errors"
+ }
+ ]
+ }
+ ]
+ },
+ "gridPos": {
+ "h": 8,
+ "w": 4,
+ "x": 8,
+ "y": 66
+ },
+ "id": 768,
+ "options": {
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "mode": "single",
+ "sort": "none"
+ }
+ },
+ "pluginVersion": "10.3.3",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "editorMode": "code",
+ "expr": "max(controller_runtime_reconcile_total{namespace=~\"$operatorNamespace\", result=\"error\", controller=\"backup\", cluster=~\"$k8s_cluster\"})",
+ "hide": false,
+ "legendFormat": "Backup Reconcile Errors",
+ "range": true,
+ "refId": "RECONCILE_ERRORS_BACKUP"
+ }
+ ],
+ "title": "Backup Reconcile Errors",
+ "type": "timeseries"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "description": "The operator reconcile errors don't distinguish between database cluster or namespaces.",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "drawStyle": "line",
+ "fillOpacity": 0,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "auto",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ },
+ "mappings": [
+ {
+ "options": {
+ "0": {
+ "color": "green",
+ "index": 0,
+ "text": "None"
+ }
+ },
+ "type": "value"
+ },
+ {
+ "options": {
+ "from": 1,
+ "result": {
+ "color": "red",
+ "index": 1
+ },
+ "to": 4294967295
+ },
+ "type": "range"
+ }
+ ],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green"
+ }
+ ]
+ },
+ "unitScale": true
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "A"
+ },
+ "properties": [
+ {
+ "id": "displayName",
+ "value": "Reconcile errors"
+ }
+ ]
+ }
+ ]
+ },
+ "gridPos": {
+ "h": 8,
+ "w": 4,
+ "x": 12,
+ "y": 66
+ },
+ "id": 790,
+ "options": {
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "mode": "single",
+ "sort": "none"
+ }
+ },
+ "pluginVersion": "10.3.3",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "editorMode": "code",
+ "exemplar": false,
+ "expr": "max(controller_runtime_reconcile_total{namespace=~\"$operatorNamespace\", result=\"error\", controller=~\"scheduledbackup|scheduled-backup\", cluster=~\"$k8s_cluster\"})",
+ "hide": false,
+ "instant": false,
+ "legendFormat": "Scheduled Backup Reconcile Errors",
+ "range": true,
+ "refId": "RECONCILE_ERRORS_BACKUP"
+ }
+ ],
+ "title": "Scheduled Backup Reconcile Errors",
+ "type": "timeseries"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "description": "The operator reconcile errors don't distinguish between database cluster or namespaces.",
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisBorderShow": false,
+ "axisCenteredZero": false,
+ "axisColorMode": "text",
+ "axisLabel": "",
+ "axisPlacement": "auto",
+ "barAlignment": 0,
+ "drawStyle": "line",
+ "fillOpacity": 0,
+ "gradientMode": "none",
+ "hideFrom": {
+ "legend": false,
+ "tooltip": false,
+ "viz": false
+ },
+ "insertNulls": false,
+ "lineInterpolation": "linear",
+ "lineWidth": 1,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "auto",
+ "spanNulls": false,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ },
+ "mappings": [
+ {
+ "options": {
+ "0": {
+ "color": "green",
+ "index": 0,
+ "text": "None"
+ }
+ },
+ "type": "value"
+ },
+ {
+ "options": {
+ "from": 1,
+ "result": {
+ "color": "red",
+ "index": 1
+ },
+ "to": 4294967295
+ },
+ "type": "range"
+ }
+ ],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green"
+ }
+ ]
+ },
+ "unitScale": true
+ },
+ "overrides": [
+ {
+ "matcher": {
+ "id": "byName",
+ "options": "A"
+ },
+ "properties": [
+ {
+ "id": "displayName",
+ "value": "Reconcile errors"
+ }
+ ]
+ }
+ ]
+ },
+ "gridPos": {
+ "h": 8,
+ "w": 4,
+ "x": 16,
+ "y": 66
+ },
+ "id": 769,
+ "options": {
+ "legend": {
+ "calcs": [],
+ "displayMode": "list",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "mode": "single",
+ "sort": "none"
+ }
+ },
+ "pluginVersion": "10.3.3",
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "editorMode": "code",
+ "expr": "max(controller_runtime_reconcile_total{namespace=~\"$operatorNamespace\", result=\"error\", controller=\"pooler\", cluster=~\"$k8s_cluster\"})",
+ "hide": false,
+ "legendFormat": "Pooler Reconcile Errors",
+ "range": true,
+ "refId": "RECONCILE_ERRORS_BACKUP"
+ }
+ ],
+ "title": "Pooler Reconcile Errors",
+ "type": "timeseries"
+ }
+ ],
+ "title": "Operator",
+ "type": "row"
+ },
+ {
+ "collapsed": false,
+ "gridPos": {
+ "h": 1,
+ "w": 24,
+ "x": 0,
+ "y": 59
+ },
+ "id": 9001,
+ "panels": [],
+ "title": "Backups (Barman Cloud)",
+ "type": "row"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": 0
+ },
+ {
+ "color": "yellow",
+ "value": 93600
+ },
+ {
+ "color": "red",
+ "value": 172800
+ }
+ ]
+ },
+ "unit": "s"
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 5,
+ "w": 6,
+ "x": 0,
+ "y": 60
+ },
+ "id": 9002,
+ "options": {
+ "colorMode": "value",
+ "graphMode": "area",
+ "justifyMode": "auto",
+ "orientation": "auto",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "textMode": "auto",
+ "wideLayout": true
+ },
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "refId": "A",
+ "expr": "time() - max(cnpg_collector_last_available_backup_timestamp{cluster=~\"$k8s_cluster\", namespace=~\"$namespace\", pod=~\"$cluster-[0-9]+\"})"
+ }
+ ],
+ "title": "Last base backup age",
+ "type": "stat",
+ "description": "Schedule is daily; a value of ~forever means no base backup has ever succeeded."
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "red",
+ "value": 0
+ },
+ {
+ "color": "yellow",
+ "value": 86400
+ },
+ {
+ "color": "green",
+ "value": 604800
+ }
+ ]
+ },
+ "unit": "s"
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 5,
+ "w": 6,
+ "x": 6,
+ "y": 60
+ },
+ "id": 9003,
+ "options": {
+ "colorMode": "value",
+ "graphMode": "area",
+ "justifyMode": "auto",
+ "orientation": "auto",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "textMode": "auto",
+ "wideLayout": true
+ },
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "refId": "A",
+ "expr": "time() - max(cnpg_collector_first_recoverability_point{cluster=~\"$k8s_cluster\", namespace=~\"$namespace\", pod=~\"$cluster-[0-9]+\"})"
+ }
+ ],
+ "title": "PITR window (first recoverability point age)",
+ "type": "stat"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "red",
+ "value": 0
+ },
+ {
+ "color": "green",
+ "value": 93600
+ }
+ ]
+ },
+ "unit": "s"
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 5,
+ "w": 6,
+ "x": 12,
+ "y": 60
+ },
+ "id": 9004,
+ "options": {
+ "colorMode": "value",
+ "graphMode": "area",
+ "justifyMode": "auto",
+ "orientation": "auto",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "textMode": "auto",
+ "wideLayout": true
+ },
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "refId": "A",
+ "expr": "time() - max(cnpg_collector_last_failed_backup_timestamp{cluster=~\"$k8s_cluster\", namespace=~\"$namespace\", pod=~\"$cluster-[0-9]+\"})"
+ }
+ ],
+ "title": "Last failed backup age",
+ "type": "stat",
+ "description": "Red while the most recent failure is fresher than the daily schedule."
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "thresholds"
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": 0
+ },
+ {
+ "color": "yellow",
+ "value": 1
+ },
+ {
+ "color": "red",
+ "value": 3
+ }
+ ]
+ },
+ "unit": "short"
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 5,
+ "w": 6,
+ "x": 18,
+ "y": 60
+ },
+ "id": 9005,
+ "options": {
+ "colorMode": "value",
+ "graphMode": "area",
+ "justifyMode": "auto",
+ "orientation": "auto",
+ "reduceOptions": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "fields": "",
+ "values": false
+ },
+ "textMode": "auto",
+ "wideLayout": true
+ },
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "refId": "A",
+ "expr": "max(cnpg_collector_pg_wal_archive_status{value=\"ready\", cluster=~\"$k8s_cluster\", namespace=~\"$namespace\", pod=~\"$cluster-[0-9]+\"})"
+ }
+ ],
+ "title": "WAL segments awaiting archive",
+ "type": "stat",
+ "description": "Sustained queue = WAL archiving to RGW is broken and the PITR window stops advancing."
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisCenteredZero": false,
+ "axisPlacement": "auto",
+ "drawStyle": "line",
+ "fillOpacity": 10,
+ "gradientMode": "none",
+ "lineInterpolation": "linear",
+ "lineWidth": 2,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": true,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": 0
+ }
+ ]
+ },
+ "unit": "short"
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 8,
+ "w": 12,
+ "x": 0,
+ "y": 65
+ },
+ "id": 9006,
+ "options": {
+ "legend": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "mode": "multi",
+ "sort": "desc"
+ }
+ },
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "refId": "A",
+ "expr": "sum by (value) (cnpg_collector_pg_wal_archive_status{cluster=~\"$k8s_cluster\", namespace=~\"$namespace\", pod=~\"$cluster-[0-9]+\"})",
+ "legendFormat": "{{value}}"
+ }
+ ],
+ "title": "WAL archive status",
+ "type": "timeseries"
+ },
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "fieldConfig": {
+ "defaults": {
+ "color": {
+ "mode": "palette-classic"
+ },
+ "custom": {
+ "axisCenteredZero": false,
+ "axisPlacement": "auto",
+ "drawStyle": "line",
+ "fillOpacity": 10,
+ "gradientMode": "none",
+ "lineInterpolation": "linear",
+ "lineWidth": 2,
+ "pointSize": 5,
+ "scaleDistribution": {
+ "type": "linear"
+ },
+ "showPoints": "never",
+ "spanNulls": true,
+ "stacking": {
+ "group": "A",
+ "mode": "none"
+ },
+ "thresholdsStyle": {
+ "mode": "off"
+ }
+ },
+ "mappings": [],
+ "thresholds": {
+ "mode": "absolute",
+ "steps": [
+ {
+ "color": "green",
+ "value": 0
+ }
+ ]
+ },
+ "unit": "Bps"
+ },
+ "overrides": []
+ },
+ "gridPos": {
+ "h": 8,
+ "w": 12,
+ "x": 12,
+ "y": 65
+ },
+ "id": 9007,
+ "options": {
+ "legend": {
+ "calcs": [
+ "lastNotNull"
+ ],
+ "displayMode": "table",
+ "placement": "bottom",
+ "showLegend": true
+ },
+ "tooltip": {
+ "mode": "multi",
+ "sort": "desc"
+ }
+ },
+ "targets": [
+ {
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "refId": "A",
+ "expr": "sum(rate(cnpg_collector_wal_bytes{cluster=~\"$k8s_cluster\", namespace=~\"$namespace\", pod=~\"$cluster-[0-9]+\"}[$__rate_interval]))",
+ "legendFormat": "bytes/s"
+ }
+ ],
+ "title": "WAL generation",
+ "type": "timeseries"
+ }
+ ],
+ "refresh": "30s",
+ "revision": 1,
+ "schemaVersion": 39,
+ "tags": [
+ "imported",
+ "postgres",
+ "yucca"
+ ],
+ "templating": {
+ "list": [
+ {
+ "name": "datasource",
+ "type": "datasource",
+ "query": "prometheus",
+ "label": "Datasource",
+ "current": {
+ "selected": true,
+ "text": "VictoriaMetrics Fleet",
+ "value": "VictoriaMetricsFleet"
+ },
+ "options": [],
+ "refresh": 1,
+ "regex": "/^VictoriaMetrics Fleet$/",
+ "hide": 0
+ },
+ {
+ "name": "k8s_cluster",
+ "type": "query",
+ "label": "Cluster",
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "query": "label_values(cnpg_collector_up, cluster)",
+ "definition": "label_values(cnpg_collector_up, cluster)",
+ "current": {},
+ "options": [],
+ "refresh": 2,
+ "regex": "",
+ "sort": 1,
+ "includeAll": false,
+ "multi": false,
+ "hide": 0
+ },
+ {
+ "current": {},
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "definition": "label_values(controller_runtime_webhook_requests_total{webhook=\"/mutate-postgresql-cnpg-io-v1-cluster\", cluster=~\"$k8s_cluster\"},namespace)",
+ "description": "Namespace where the CNPG operator is located",
+ "hide": 0,
+ "includeAll": false,
+ "label": "Operator Namespace",
+ "multi": false,
+ "name": "operatorNamespace",
+ "options": [],
+ "query": {
+ "qryType": 1,
+ "query": "label_values(controller_runtime_webhook_requests_total{webhook=\"/mutate-postgresql-cnpg-io-v1-cluster\", cluster=~\"$k8s_cluster\"},namespace)",
+ "refId": "PrometheusVariableQueryEditor-VariableQuery"
+ },
+ "refresh": 2,
+ "regex": "",
+ "skipUrlSync": false,
+ "sort": 0,
+ "type": "query"
+ },
+ {
+ "current": {},
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "definition": "label_values(cnpg_collector_up{cluster=~\"$k8s_cluster\"}, namespace)",
+ "description": "Namespace where the database cluster is located",
+ "hide": 0,
+ "includeAll": false,
+ "label": "Database Namespace",
+ "multi": false,
+ "name": "namespace",
+ "options": [],
+ "query": {
+ "query": "label_values(cnpg_collector_up{cluster=~\"$k8s_cluster\"}, namespace)",
+ "refId": "StandardVariableQuery"
+ },
+ "refresh": 2,
+ "regex": "",
+ "skipUrlSync": false,
+ "sort": 0,
+ "type": "query"
+ },
+ {
+ "current": {},
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "definition": "label_values(cnpg_collector_up{cluster=~\"$k8s_cluster\", namespace=~\"$namespace\"}, pod)",
+ "description": "CNPG Cluster",
+ "hide": 0,
+ "includeAll": false,
+ "label": "Cluster",
+ "multi": false,
+ "name": "cluster",
+ "options": [],
+ "query": {
+ "query": "label_values(cnpg_collector_up{cluster=~\"$k8s_cluster\", namespace=~\"$namespace\"}, pod)",
+ "refId": "StandardVariableQuery"
+ },
+ "refresh": 2,
+ "regex": "/(?.+)-[0-9]+$/",
+ "skipUrlSync": false,
+ "sort": 1,
+ "type": "query"
+ },
+ {
+ "allValue": "$cluster-([1-9][0-9]*)",
+ "current": {},
+ "datasource": {
+ "uid": "$datasource"
+ },
+ "definition": "label_values(cnpg_collector_up{cluster=~\"$k8s_cluster\", namespace=~\"$namespace\", pod=~\"$cluster-[0-9]+\"}, pod)",
+ "description": "Database cluster instances",
+ "hide": 0,
+ "includeAll": true,
+ "label": "Instances",
+ "multi": true,
+ "name": "instances",
+ "options": [],
+ "query": {
+ "query": "label_values(cnpg_collector_up{cluster=~\"$k8s_cluster\", namespace=~\"$namespace\", pod=~\"$cluster-[0-9]+\"}, pod)",
+ "refId": "StandardVariableQuery"
+ },
+ "refresh": 2,
+ "regex": "",
+ "skipUrlSync": false,
+ "sort": 1,
+ "type": "query"
+ }
+ ]
+ },
+ "time": {
+ "from": "now-7d",
+ "to": "now"
+ },
+ "timepicker": {
+ "nowDelay": ""
+ },
+ "timezone": "",
+ "title": "CloudNativePG",
+ "uid": "yucca-cnpg",
+ "version": 2,
+ "weekStart": "",
+ "description": "Imported from https://raw.githubusercontent.com/cloudnative-pg/grafana-dashboards/main/charts/cluster/grafana-dashboard.json by o11y/scripts/import-upstream.py; local edits are overwritten on re-import."
+}
diff --git a/o11y/dashboards/yucca-fabric-htz-fsn1.json b/o11y/dashboards/yucca-fabric-htz-fsn1.json
index ea29aa00..4ea362a8 100644
--- a/o11y/dashboards/yucca-fabric-htz-fsn1.json
+++ b/o11y/dashboards/yucca-fabric-htz-fsn1.json
@@ -1,6 +1,6 @@
{
"uid": "yucca-fabric-htz-fsn1",
- "title": "Fabric: htz-fsn1 overview",
+ "title": "Fabric / htz-fsn1",
"timezone": "browser",
"refresh": "5s",
"time": {
@@ -33,7 +33,9 @@
},
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -85,7 +87,9 @@
},
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -137,7 +141,9 @@
},
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -189,7 +195,9 @@
},
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -246,7 +254,9 @@
},
"options": {
"reduceOptions": {
- "calcs": ["lastNotNull"]
+ "calcs": [
+ "lastNotNull"
+ ]
},
"colorMode": "background"
},
@@ -294,7 +304,9 @@
},
"options": {
"reduceOptions": {
- "calcs": ["lastNotNull"]
+ "calcs": [
+ "lastNotNull"
+ ]
},
"colorMode": "background"
},
@@ -342,7 +354,9 @@
},
"options": {
"reduceOptions": {
- "calcs": ["lastNotNull"]
+ "calcs": [
+ "lastNotNull"
+ ]
},
"colorMode": "background"
},
@@ -390,7 +404,9 @@
},
"options": {
"reduceOptions": {
- "calcs": ["lastNotNull"]
+ "calcs": [
+ "lastNotNull"
+ ]
},
"colorMode": "background"
},
@@ -434,7 +450,9 @@
},
"options": {
"reduceOptions": {
- "calcs": ["lastNotNull"]
+ "calcs": [
+ "lastNotNull"
+ ]
},
"colorMode": "background"
},
@@ -477,7 +495,9 @@
},
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -545,7 +565,9 @@
},
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -597,7 +619,9 @@
},
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -649,7 +673,9 @@
},
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -696,6 +722,10 @@
}
]
},
- "tags": ["fabric", "netops", "prod"],
+ "tags": [
+ "fabric",
+ "netops",
+ "prod"
+ ],
"graphTooltip": 1
-}
+}
\ No newline at end of file
diff --git a/o11y/dashboards/yucca-father-kubernetes.json b/o11y/dashboards/yucca-father-kubernetes.json
index 5b69dc61..59e1eba1 100644
--- a/o11y/dashboards/yucca-father-kubernetes.json
+++ b/o11y/dashboards/yucca-father-kubernetes.json
@@ -86,7 +86,9 @@
"id": 2,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -165,7 +167,9 @@
"id": 3,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -252,7 +256,9 @@
"id": 4,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -331,7 +337,9 @@
"id": 5,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -423,7 +431,9 @@
"id": 7,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -503,7 +513,9 @@
"id": 8,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -582,7 +594,9 @@
"id": 9,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -671,7 +685,9 @@
"id": 10,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -763,7 +779,9 @@
"id": 12,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -842,7 +860,9 @@
"id": 13,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -871,7 +891,11 @@
"preload": false,
"refresh": "30s",
"schemaVersion": 39,
- "tags": ["father", "kubernetes", "prod"],
+ "tags": [
+ "father",
+ "kubernetes",
+ "prod"
+ ],
"templating": {
"list": [
{
@@ -891,8 +915,12 @@
"allValue": ".*",
"current": {
"selected": true,
- "text": ["All"],
- "value": ["$__all"]
+ "text": [
+ "All"
+ ],
+ "value": [
+ "$__all"
+ ]
},
"datasource": {
"uid": "$datasource"
@@ -912,8 +940,12 @@
"allValue": ".*",
"current": {
"selected": true,
- "text": ["All"],
- "value": ["$__all"]
+ "text": [
+ "All"
+ ],
+ "value": [
+ "$__all"
+ ]
},
"datasource": {
"uid": "$datasource"
@@ -933,8 +965,12 @@
"allValue": ".*",
"current": {
"selected": true,
- "text": ["All"],
- "value": ["$__all"]
+ "text": [
+ "All"
+ ],
+ "value": [
+ "$__all"
+ ]
},
"datasource": {
"uid": "$datasource"
@@ -973,7 +1009,7 @@
},
"timepicker": {},
"timezone": "",
- "title": "Father: Kubernetes",
+ "title": "Kubernetes / Yucca Platform",
"uid": "yucca-father-kubernetes",
"version": 1
-}
+}
\ No newline at end of file
diff --git a/o11y/dashboards/yucca-flux-controllers.json b/o11y/dashboards/yucca-flux-controllers.json
index 5a2208fc..ece8d521 100644
--- a/o11y/dashboards/yucca-flux-controllers.json
+++ b/o11y/dashboards/yucca-flux-controllers.json
@@ -1739,7 +1739,7 @@
]
},
"timezone": "",
- "title": "Yucca: Flux controllers",
+ "title": "Flux / Control Plane",
"uid": "yucca-flux-controllers",
"version": 2,
"weekStart": "",
diff --git a/o11y/dashboards/yucca-flux.json b/o11y/dashboards/yucca-flux.json
index 71d909b6..18eabc72 100644
--- a/o11y/dashboards/yucca-flux.json
+++ b/o11y/dashboards/yucca-flux.json
@@ -1395,7 +1395,7 @@
]
},
"timezone": "",
- "title": "Yucca: Flux cluster",
+ "title": "Flux / Cluster",
"uid": "yucca-flux",
"version": 4,
"weekStart": "",
diff --git a/o11y/dashboards/yucca-hubble.json b/o11y/dashboards/yucca-hubble.json
index 4dd3c881..98e36aaf 100644
--- a/o11y/dashboards/yucca-hubble.json
+++ b/o11y/dashboards/yucca-hubble.json
@@ -2886,7 +2886,7 @@
]
},
"timezone": "",
- "title": "Yucca: Hubble",
+ "title": "Cilium / Hubble",
"uid": "yucca-hubble",
"version": 24,
"description": "Imported from https://raw.githubusercontent.com/cilium/cilium/v1.19.5/install/kubernetes/cilium/files/hubble/dashboards/hubble-dashboard.json by o11y/scripts/import-upstream.py; local edits are overwritten on re-import."
diff --git a/o11y/dashboards/yucca-k8s-apiserver.json b/o11y/dashboards/yucca-k8s-apiserver.json
index 3d8ed108..53255db2 100644
--- a/o11y/dashboards/yucca-k8s-apiserver.json
+++ b/o11y/dashboards/yucca-k8s-apiserver.json
@@ -1349,7 +1349,7 @@
},
"timepicker": {},
"timezone": "",
- "title": "Yucca: K8s / API server",
+ "title": "Kubernetes / System / API Server",
"uid": "yucca-k8s-apiserver",
"version": 21,
"weekStart": ""
diff --git a/o11y/dashboards/yucca-k8s-coredns.json b/o11y/dashboards/yucca-k8s-coredns.json
index fcd8c233..5867d50f 100644
--- a/o11y/dashboards/yucca-k8s-coredns.json
+++ b/o11y/dashboards/yucca-k8s-coredns.json
@@ -1521,7 +1521,7 @@
},
"timepicker": {},
"timezone": "",
- "title": "Yucca: K8s / CoreDNS",
+ "title": "Kubernetes / System / CoreDNS",
"uid": "yucca-k8s-coredns",
"version": 22,
"weekStart": ""
diff --git a/o11y/dashboards/yucca-k8s-global.json b/o11y/dashboards/yucca-k8s-global.json
index e010c8da..06bd0a46 100644
--- a/o11y/dashboards/yucca-k8s-global.json
+++ b/o11y/dashboards/yucca-k8s-global.json
@@ -3007,7 +3007,7 @@
},
"timepicker": {},
"timezone": "",
- "title": "Yucca: K8s / Global",
+ "title": "Kubernetes / Views / Global",
"uid": "yucca-k8s-global",
"version": 45,
"weekStart": ""
diff --git a/o11y/dashboards/yucca-k8s-namespaces.json b/o11y/dashboards/yucca-k8s-namespaces.json
index 28668ac0..0ca99020 100644
--- a/o11y/dashboards/yucca-k8s-namespaces.json
+++ b/o11y/dashboards/yucca-k8s-namespaces.json
@@ -2902,7 +2902,7 @@
},
"timepicker": {},
"timezone": "",
- "title": "Yucca: K8s / Namespaces",
+ "title": "Kubernetes / Views / Namespaces",
"uid": "yucca-k8s-namespaces",
"version": 46,
"weekStart": ""
diff --git a/o11y/dashboards/yucca-k8s-nodes.json b/o11y/dashboards/yucca-k8s-nodes.json
index e9045ff5..0c8878f0 100644
--- a/o11y/dashboards/yucca-k8s-nodes.json
+++ b/o11y/dashboards/yucca-k8s-nodes.json
@@ -3869,7 +3869,7 @@
},
"timepicker": {},
"timezone": "",
- "title": "Yucca: K8s / Nodes",
+ "title": "Kubernetes / Views / Nodes",
"uid": "yucca-k8s-nodes",
"version": 40,
"weekStart": ""
diff --git a/o11y/dashboards/yucca-k8s-pods.json b/o11y/dashboards/yucca-k8s-pods.json
index e61fae9c..c93e7c94 100644
--- a/o11y/dashboards/yucca-k8s-pods.json
+++ b/o11y/dashboards/yucca-k8s-pods.json
@@ -2875,7 +2875,7 @@
},
"timepicker": {},
"timezone": "",
- "title": "Yucca: K8s / Pods",
+ "title": "Kubernetes / Views / Pods",
"uid": "yucca-k8s-pods",
"version": 39,
"weekStart": ""
diff --git a/o11y/dashboards/yucca-logs-admin-api.json b/o11y/dashboards/yucca-logs-admin-api.json
index f1e9b472..0ecfd8fb 100644
--- a/o11y/dashboards/yucca-logs-admin-api.json
+++ b/o11y/dashboards/yucca-logs-admin-api.json
@@ -1090,7 +1090,7 @@
},
"timepicker": {},
"timezone": "",
- "title": "Yucca logs: yucca-admin-api",
+ "title": "Logs / yucca-admin-api",
"uid": "yucca-logs-admin-api",
"version": 1
}
\ No newline at end of file
diff --git a/o11y/dashboards/yucca-logs-meta.json b/o11y/dashboards/yucca-logs-meta.json
index e9a2cc05..25fe3932 100644
--- a/o11y/dashboards/yucca-logs-meta.json
+++ b/o11y/dashboards/yucca-logs-meta.json
@@ -963,7 +963,7 @@
},
"timepicker": {},
"timezone": "",
- "title": "Yucca logs: meta",
+ "title": "Logs / meta",
"uid": "yucca-logs-meta",
"version": 1
}
\ No newline at end of file
diff --git a/o11y/dashboards/yucca-logs-metrics-worker.json b/o11y/dashboards/yucca-logs-metrics-worker.json
index 9eb1638f..36ff7837 100644
--- a/o11y/dashboards/yucca-logs-metrics-worker.json
+++ b/o11y/dashboards/yucca-logs-metrics-worker.json
@@ -1213,7 +1213,7 @@
},
"timepicker": {},
"timezone": "",
- "title": "Yucca logs: metrics-worker",
+ "title": "Logs / metrics-worker",
"uid": "yucca-logs-metrics-worker",
"version": 1
}
\ No newline at end of file
diff --git a/o11y/dashboards/yucca-logs-michael.json b/o11y/dashboards/yucca-logs-michael.json
index c9a53fb5..f77fe8cc 100644
--- a/o11y/dashboards/yucca-logs-michael.json
+++ b/o11y/dashboards/yucca-logs-michael.json
@@ -1155,7 +1155,7 @@
},
"timepicker": {},
"timezone": "",
- "title": "Yucca logs: michael",
+ "title": "Logs / michael",
"uid": "yucca-logs-michael",
"version": 1
}
\ No newline at end of file
diff --git a/o11y/dashboards/yucca-logs-web.json b/o11y/dashboards/yucca-logs-web.json
index 67563979..7e4b2611 100644
--- a/o11y/dashboards/yucca-logs-web.json
+++ b/o11y/dashboards/yucca-logs-web.json
@@ -782,7 +782,7 @@
},
"timepicker": {},
"timezone": "",
- "title": "Yucca logs: web",
+ "title": "Logs / web",
"uid": "yucca-logs-web",
"version": 1
}
\ No newline at end of file
diff --git a/o11y/dashboards/yucca-logs-yucca-api.json b/o11y/dashboards/yucca-logs-yucca-api.json
index 43b1a5b0..0efd5373 100644
--- a/o11y/dashboards/yucca-logs-yucca-api.json
+++ b/o11y/dashboards/yucca-logs-yucca-api.json
@@ -1090,7 +1090,7 @@
},
"timepicker": {},
"timezone": "",
- "title": "Yucca logs: yucca-api",
+ "title": "Logs / yucca-api",
"uid": "yucca-logs-yucca-api",
"version": 1
}
\ No newline at end of file
diff --git a/o11y/dashboards/yucca-michael.json b/o11y/dashboards/yucca-michael.json
index eda29e7c..f16612d5 100644
--- a/o11y/dashboards/yucca-michael.json
+++ b/o11y/dashboards/yucca-michael.json
@@ -2741,8 +2741,12 @@
"allValue": ".*",
"current": {
"selected": true,
- "text": ["All"],
- "value": ["$__all"]
+ "text": [
+ "All"
+ ],
+ "value": [
+ "$__all"
+ ]
},
"datasource": {
"uid": "$datasource"
@@ -2762,8 +2766,12 @@
"allValue": ".*",
"current": {
"selected": true,
- "text": ["All"],
- "value": ["$__all"]
+ "text": [
+ "All"
+ ],
+ "value": [
+ "$__all"
+ ]
},
"datasource": {
"uid": "$datasource"
@@ -2783,8 +2791,12 @@
"allValue": ".*",
"current": {
"selected": true,
- "text": ["All"],
- "value": ["$__all"]
+ "text": [
+ "All"
+ ],
+ "value": [
+ "$__all"
+ ]
},
"datasource": {
"uid": "$datasource"
@@ -2823,7 +2835,7 @@
},
"timepicker": {},
"timezone": "",
- "title": "Yucca: Michael (restic gateway)",
+ "title": "Yucca / Michael",
"uid": "yucca-michael",
"version": 1
-}
+}
\ No newline at end of file
diff --git a/o11y/dashboards/yucca-node-exporter.json b/o11y/dashboards/yucca-node-exporter.json
index eddf588a..d5b0d508 100644
--- a/o11y/dashboards/yucca-node-exporter.json
+++ b/o11y/dashboards/yucca-node-exporter.json
@@ -15379,7 +15379,7 @@
},
"timepicker": {},
"timezone": "browser",
- "title": "Yucca: Node exporter",
+ "title": "Node Exporter / Full",
"uid": "yucca-node-exporter",
"version": 102,
"weekStart": "",
diff --git a/o11y/dashboards/yucca-overview.json b/o11y/dashboards/yucca-overview.json
index e29551ff..710263a1 100644
--- a/o11y/dashboards/yucca-overview.json
+++ b/o11y/dashboards/yucca-overview.json
@@ -2803,7 +2803,7 @@
},
"timepicker": {},
"timezone": "",
- "title": "Yucca: Product overview",
+ "title": "Yucca / Overview",
"uid": "yucca-overview",
"version": 3
}
\ No newline at end of file
diff --git a/o11y/dashboards/yucca-per-user.json b/o11y/dashboards/yucca-per-user.json
index 393e56e2..984c1363 100644
--- a/o11y/dashboards/yucca-per-user.json
+++ b/o11y/dashboards/yucca-per-user.json
@@ -68,7 +68,9 @@
"justifyMode": "auto",
"orientation": "auto",
"reduceOptions": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"fields": "",
"values": false
},
@@ -124,7 +126,9 @@
"justifyMode": "auto",
"orientation": "auto",
"reduceOptions": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"fields": "",
"values": false
},
@@ -179,7 +183,9 @@
"justifyMode": "auto",
"orientation": "auto",
"reduceOptions": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"fields": "",
"values": false
},
@@ -234,7 +240,9 @@
"justifyMode": "auto",
"orientation": "auto",
"reduceOptions": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"fields": "",
"values": false
},
@@ -290,7 +298,9 @@
"justifyMode": "auto",
"orientation": "auto",
"reduceOptions": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"fields": "",
"values": false
},
@@ -346,7 +356,9 @@
"justifyMode": "auto",
"orientation": "auto",
"reduceOptions": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"fields": "",
"values": false
},
@@ -433,7 +445,9 @@
"id": 9,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -521,7 +535,9 @@
"id": 10,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -600,7 +616,9 @@
"id": 11,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -680,7 +698,9 @@
"id": 12,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -773,7 +793,9 @@
"id": 14,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -860,7 +882,9 @@
"id": 15,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -947,7 +971,9 @@
"id": 16,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -1035,7 +1061,9 @@
"id": 17,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -1059,7 +1087,7 @@
],
"title": "Net stored bytes (michael estimate)",
"type": "timeseries",
- "description": "Uploads minus deletions as counted by michael, cumulative since each replica started — resets on deploy. The RGW panels above are authoritative."
+ "description": "Uploads minus deletions as counted by michael, cumulative since each replica started \u2014 resets on deploy. The RGW panels above are authoritative."
},
{
"datasource": {
@@ -1115,7 +1143,9 @@
"id": 18,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -1195,7 +1225,9 @@
"id": 19,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -1296,7 +1328,9 @@
"id": 27,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -1376,7 +1410,9 @@
"id": 28,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -1456,7 +1492,9 @@
"id": 29,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -1536,7 +1574,9 @@
"id": 30,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -1560,7 +1600,7 @@
],
"title": "Average time to first byte by repository",
"type": "timeseries",
- "description": "Mean time to first response byte — michael plus RGW latency, without the client's download time. Diverging from duration above means a slow client, not a slow backend."
+ "description": "Mean time to first response byte \u2014 michael plus RGW latency, without the client's download time. Diverging from duration above means a slow client, not a slow backend."
},
{
"collapsed": false,
@@ -1629,7 +1669,9 @@
"id": 21,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -1709,7 +1751,9 @@
"id": 22,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -1831,7 +1875,11 @@
"preload": false,
"refresh": "30s",
"schemaVersion": 39,
- "tags": ["yucca", "users", "prod"],
+ "tags": [
+ "yucca",
+ "users",
+ "prod"
+ ],
"templating": {
"list": [
{
@@ -1861,8 +1909,12 @@
"allValue": ".*",
"current": {
"selected": true,
- "text": ["All"],
- "value": ["$__all"]
+ "text": [
+ "All"
+ ],
+ "value": [
+ "$__all"
+ ]
},
"datasource": {
"uid": "$datasource"
@@ -1882,8 +1934,12 @@
"allValue": ".*",
"current": {
"selected": true,
- "text": ["All"],
- "value": ["$__all"]
+ "text": [
+ "All"
+ ],
+ "value": [
+ "$__all"
+ ]
},
"datasource": {
"uid": "$datasource"
@@ -1903,8 +1959,12 @@
"allValue": ".*",
"current": {
"selected": true,
- "text": ["All"],
- "value": ["$__all"]
+ "text": [
+ "All"
+ ],
+ "value": [
+ "$__all"
+ ]
},
"datasource": {
"uid": "$datasource"
@@ -1958,7 +2018,7 @@
},
"timepicker": {},
"timezone": "",
- "title": "Yucca: Per-user drill-down",
+ "title": "Yucca / Per User",
"uid": "yucca-per-user",
"version": 1
-}
+}
\ No newline at end of file
diff --git a/o11y/dashboards/yucca-spice-blockdb-bluefs.json b/o11y/dashboards/yucca-spice-blockdb-bluefs.json
index 6bfa298b..0c09ebf4 100644
--- a/o11y/dashboards/yucca-spice-blockdb-bluefs.json
+++ b/o11y/dashboards/yucca-spice-blockdb-bluefs.json
@@ -1,8 +1,14 @@
{
"uid": "yucca-spice-blockdb-bluefs",
- "title": "Ceph block.db / BlueFS Headroom",
+ "title": "Ceph / block.db + BlueFS",
"description": "Per-OSD block.db utilization, spillover, and the derived sizing constant for the spice cluster. Filtered to device_class=hdd throughout. Provisioned by ansible (ceph_deploy); edit the file in the repo, not in Grafana.",
- "tags": ["spice", "ceph", "bluestore", "bluefs", "prod"],
+ "tags": [
+ "spice",
+ "ceph",
+ "bluestore",
+ "bluefs",
+ "prod"
+ ],
"timezone": "",
"editable": true,
"graphTooltip": 1,
@@ -39,8 +45,12 @@
"allValue": ".*",
"current": {
"selected": true,
- "text": ["All"],
- "value": ["$__all"]
+ "text": [
+ "All"
+ ],
+ "value": [
+ "$__all"
+ ]
},
"datasource": {
"uid": "$datasource"
@@ -60,8 +70,12 @@
"allValue": ".*",
"current": {
"selected": true,
- "text": ["All"],
- "value": ["$__all"]
+ "text": [
+ "All"
+ ],
+ "value": [
+ "$__all"
+ ]
},
"datasource": {
"uid": "$datasource"
@@ -81,8 +95,12 @@
"allValue": ".*",
"current": {
"selected": true,
- "text": ["All"],
- "value": ["$__all"]
+ "text": [
+ "All"
+ ],
+ "value": [
+ "$__all"
+ ]
},
"datasource": {
"uid": "$datasource"
@@ -177,7 +195,9 @@
],
"options": {
"reduceOptions": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"fields": "",
"values": false
},
@@ -237,7 +257,9 @@
],
"options": {
"reduceOptions": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"fields": "",
"values": false
},
@@ -297,7 +319,9 @@
],
"options": {
"reduceOptions": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"fields": "",
"values": false
},
@@ -361,7 +385,9 @@
],
"options": {
"reduceOptions": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"fields": "",
"values": false
},
@@ -638,7 +664,9 @@
],
"options": {
"reduceOptions": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"fields": "",
"values": false
},
@@ -1297,4 +1325,4 @@
}
}
]
-}
+}
\ No newline at end of file
diff --git a/o11y/dashboards/yucca-spice-ceph-health.json b/o11y/dashboards/yucca-spice-ceph-health.json
index f99a860a..2626382a 100644
--- a/o11y/dashboards/yucca-spice-ceph-health.json
+++ b/o11y/dashboards/yucca-spice-ceph-health.json
@@ -97,7 +97,9 @@
"justifyMode": "auto",
"orientation": "auto",
"reduceOptions": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"fields": "",
"values": false
},
@@ -160,7 +162,9 @@
"justifyMode": "auto",
"orientation": "auto",
"reduceOptions": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"fields": "",
"values": false
},
@@ -219,7 +223,9 @@
"justifyMode": "auto",
"orientation": "auto",
"reduceOptions": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"fields": "",
"values": false
},
@@ -281,7 +287,9 @@
"justifyMode": "auto",
"orientation": "auto",
"reduceOptions": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"fields": "",
"values": false
},
@@ -349,7 +357,9 @@
"minVizWidth": 75,
"orientation": "auto",
"reduceOptions": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"fields": "",
"values": false
},
@@ -406,7 +416,9 @@
"justifyMode": "auto",
"orientation": "auto",
"reduceOptions": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"fields": "",
"values": false
},
@@ -492,7 +504,9 @@
"id": 9,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -612,7 +626,9 @@
"id": 10,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -720,7 +736,9 @@
"id": 12,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -807,7 +825,9 @@
"id": 13,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -894,7 +914,9 @@
"id": 14,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -987,7 +1009,9 @@
"id": 16,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -1092,7 +1116,9 @@
"id": 17,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -1121,7 +1147,11 @@
"preload": false,
"refresh": "30s",
"schemaVersion": 39,
- "tags": ["spice", "ceph", "prod"],
+ "tags": [
+ "spice",
+ "ceph",
+ "prod"
+ ],
"templating": {
"list": [
{
@@ -1141,8 +1171,12 @@
"allValue": ".*",
"current": {
"selected": true,
- "text": ["All"],
- "value": ["$__all"]
+ "text": [
+ "All"
+ ],
+ "value": [
+ "$__all"
+ ]
},
"datasource": {
"uid": "$datasource"
@@ -1162,8 +1196,12 @@
"allValue": ".*",
"current": {
"selected": true,
- "text": ["All"],
- "value": ["$__all"]
+ "text": [
+ "All"
+ ],
+ "value": [
+ "$__all"
+ ]
},
"datasource": {
"uid": "$datasource"
@@ -1183,8 +1221,12 @@
"allValue": ".*",
"current": {
"selected": true,
- "text": ["All"],
- "value": ["$__all"]
+ "text": [
+ "All"
+ ],
+ "value": [
+ "$__all"
+ ]
},
"datasource": {
"uid": "$datasource"
@@ -1223,7 +1265,7 @@
},
"timepicker": {},
"timezone": "",
- "title": "Spice: Ceph health",
+ "title": "Ceph / Health",
"uid": "yucca-spice-ceph-health",
"version": 1
-}
+}
\ No newline at end of file
diff --git a/o11y/dashboards/yucca-spice-nodes.json b/o11y/dashboards/yucca-spice-nodes.json
index d0837ade..8ff99533 100644
--- a/o11y/dashboards/yucca-spice-nodes.json
+++ b/o11y/dashboards/yucca-spice-nodes.json
@@ -76,7 +76,9 @@
"justifyMode": "auto",
"orientation": "auto",
"reduceOptions": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"fields": "",
"values": false
},
@@ -132,7 +134,9 @@
"justifyMode": "auto",
"orientation": "auto",
"reduceOptions": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"fields": "",
"values": false
},
@@ -196,7 +200,9 @@
"justifyMode": "auto",
"orientation": "auto",
"reduceOptions": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"fields": "",
"values": false
},
@@ -252,7 +258,9 @@
"justifyMode": "auto",
"orientation": "auto",
"reduceOptions": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"fields": "",
"values": false
},
@@ -307,7 +315,9 @@
"justifyMode": "auto",
"orientation": "auto",
"reduceOptions": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"fields": "",
"values": false
},
@@ -362,7 +372,9 @@
"justifyMode": "auto",
"orientation": "auto",
"reduceOptions": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"fields": "",
"values": false
},
@@ -450,7 +462,9 @@
"id": 9,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -529,7 +543,9 @@
"id": 10,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -610,7 +626,9 @@
"id": 11,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -689,7 +707,9 @@
"id": 12,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -781,7 +801,9 @@
"id": 14,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -868,7 +890,9 @@
"id": 15,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -955,7 +979,9 @@
"id": 16,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -1034,7 +1060,9 @@
"id": 17,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -1063,7 +1091,11 @@
"preload": false,
"refresh": "30s",
"schemaVersion": 39,
- "tags": ["spice", "nodes", "prod"],
+ "tags": [
+ "spice",
+ "nodes",
+ "prod"
+ ],
"templating": {
"list": [
{
@@ -1083,8 +1115,12 @@
"allValue": ".*",
"current": {
"selected": true,
- "text": ["All"],
- "value": ["$__all"]
+ "text": [
+ "All"
+ ],
+ "value": [
+ "$__all"
+ ]
},
"datasource": {
"uid": "$datasource"
@@ -1104,8 +1140,12 @@
"allValue": ".*",
"current": {
"selected": true,
- "text": ["All"],
- "value": ["$__all"]
+ "text": [
+ "All"
+ ],
+ "value": [
+ "$__all"
+ ]
},
"datasource": {
"uid": "$datasource"
@@ -1125,8 +1165,12 @@
"allValue": ".*",
"current": {
"selected": true,
- "text": ["All"],
- "value": ["$__all"]
+ "text": [
+ "All"
+ ],
+ "value": [
+ "$__all"
+ ]
},
"datasource": {
"uid": "$datasource"
@@ -1165,7 +1209,7 @@
},
"timepicker": {},
"timezone": "",
- "title": "Spice: Node fleet",
+ "title": "Ceph / Nodes",
"uid": "yucca-spice-nodes",
"version": 1
-}
+}
\ No newline at end of file
diff --git a/o11y/dashboards/yucca-spice-recovery-backfill.json b/o11y/dashboards/yucca-spice-recovery-backfill.json
index 73dc02c9..e91b556c 100644
--- a/o11y/dashboards/yucca-spice-recovery-backfill.json
+++ b/o11y/dashboards/yucca-spice-recovery-backfill.json
@@ -882,8 +882,12 @@
"allValue": ".*",
"current": {
"selected": true,
- "text": ["All"],
- "value": ["$__all"]
+ "text": [
+ "All"
+ ],
+ "value": [
+ "$__all"
+ ]
},
"datasource": {
"uid": "$datasource"
@@ -903,8 +907,12 @@
"allValue": ".*",
"current": {
"selected": true,
- "text": ["All"],
- "value": ["$__all"]
+ "text": [
+ "All"
+ ],
+ "value": [
+ "$__all"
+ ]
},
"datasource": {
"uid": "$datasource"
@@ -924,8 +932,12 @@
"allValue": ".*",
"current": {
"selected": true,
- "text": ["All"],
- "value": ["$__all"]
+ "text": [
+ "All"
+ ],
+ "value": [
+ "$__all"
+ ]
},
"datasource": {
"uid": "$datasource"
@@ -968,7 +980,7 @@
},
"timepicker": {},
"timezone": "",
- "title": "Ceph Recovery / Backfill Throughput",
+ "title": "Ceph / Recovery + Backfill",
"uid": "yucca-spice-recovery-backfill",
"weekStart": ""
-}
+}
\ No newline at end of file
diff --git a/o11y/dashboards/yucca-spice-rgw-capacity.json b/o11y/dashboards/yucca-spice-rgw-capacity.json
index b2121f03..6b5f8bb5 100644
--- a/o11y/dashboards/yucca-spice-rgw-capacity.json
+++ b/o11y/dashboards/yucca-spice-rgw-capacity.json
@@ -71,7 +71,9 @@
"minVizWidth": 75,
"orientation": "auto",
"reduceOptions": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"fields": "",
"values": false
},
@@ -140,7 +142,9 @@
"orientation": "horizontal",
"percentChangeColorMode": "standard",
"reduceOptions": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"fields": "",
"values": false
},
@@ -210,7 +214,9 @@
"orientation": "horizontal",
"percentChangeColorMode": "standard",
"reduceOptions": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"fields": "",
"values": false
},
@@ -321,7 +327,9 @@
"orientation": "horizontal",
"percentChangeColorMode": "standard",
"reduceOptions": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"fields": "",
"values": false
},
@@ -437,7 +445,9 @@
"id": 11,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -561,7 +571,9 @@
"id": 12,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -700,7 +712,9 @@
"orientation": "vertical",
"percentChangeColorMode": "standard",
"reduceOptions": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"fields": "",
"values": false
},
@@ -809,7 +823,9 @@
"orientation": "vertical",
"percentChangeColorMode": "standard",
"reduceOptions": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"fields": "",
"values": false
},
@@ -916,16 +932,23 @@
},
"id": 23,
"options": {
- "displayLabels": ["name", "percent"],
+ "displayLabels": [
+ "name",
+ "percent"
+ ],
"legend": {
"displayMode": "list",
"placement": "bottom",
"showLegend": true,
- "values": ["value"]
+ "values": [
+ "value"
+ ]
},
"pieType": "donut",
"reduceOptions": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"fields": "",
"values": false
},
@@ -1048,7 +1071,9 @@
"id": 31,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -1149,7 +1174,9 @@
"id": 32,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -1257,7 +1284,9 @@
"id": 33,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -1349,7 +1378,9 @@
"id": 34,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -1465,7 +1496,9 @@
"id": 35,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -1578,7 +1611,9 @@
"id": 41,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -1670,7 +1705,9 @@
"id": 42,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -1762,7 +1799,9 @@
"id": 43,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -1870,7 +1909,9 @@
"id": 44,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -1962,7 +2003,9 @@
"id": 45,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -2081,7 +2124,9 @@
"id": 51,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -2182,7 +2227,9 @@
"id": 52,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -2283,7 +2330,9 @@
"id": 53,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -2376,7 +2425,9 @@
"id": 54,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -2477,7 +2528,9 @@
"id": 55,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -2591,7 +2644,9 @@
"id": 56,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -2707,7 +2762,9 @@
"id": 57,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -2747,7 +2804,12 @@
"preload": false,
"refresh": "30s",
"schemaVersion": 42,
- "tags": ["ceph", "rgw", "s3", "spice"],
+ "tags": [
+ "ceph",
+ "rgw",
+ "s3",
+ "spice"
+ ],
"templating": {
"list": [
{
@@ -2767,8 +2829,12 @@
"allValue": ".*",
"current": {
"selected": true,
- "text": ["All"],
- "value": ["$__all"]
+ "text": [
+ "All"
+ ],
+ "value": [
+ "$__all"
+ ]
},
"datasource": {
"uid": "$datasource"
@@ -2788,8 +2854,12 @@
"allValue": ".*",
"current": {
"selected": true,
- "text": ["All"],
- "value": ["$__all"]
+ "text": [
+ "All"
+ ],
+ "value": [
+ "$__all"
+ ]
},
"datasource": {
"uid": "$datasource"
@@ -2809,8 +2879,12 @@
"allValue": ".*",
"current": {
"selected": true,
- "text": ["All"],
- "value": ["$__all"]
+ "text": [
+ "All"
+ ],
+ "value": [
+ "$__all"
+ ]
},
"datasource": {
"uid": "$datasource"
@@ -2866,7 +2940,7 @@
},
"timepicker": {},
"timezone": "",
- "title": "RGW Bucket Capacity & Performance",
+ "title": "Ceph / RGW Capacity",
"uid": "yucca-spice-rgw-capacity",
"version": 1
-}
+}
\ No newline at end of file
diff --git a/o11y/dashboards/yucca-telemetry-pipeline.json b/o11y/dashboards/yucca-telemetry-pipeline.json
index d2482933..c6b9633a 100644
--- a/o11y/dashboards/yucca-telemetry-pipeline.json
+++ b/o11y/dashboards/yucca-telemetry-pipeline.json
@@ -86,7 +86,9 @@
"id": 2,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -166,7 +168,9 @@
"id": 3,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -258,7 +262,9 @@
"id": 5,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -338,7 +344,9 @@
"id": 6,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -417,7 +425,9 @@
"id": 7,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -496,7 +506,9 @@
"id": 8,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -589,7 +601,9 @@
"id": 10,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -668,7 +682,9 @@
"id": 11,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -697,7 +713,11 @@
"preload": false,
"refresh": "30s",
"schemaVersion": 39,
- "tags": ["yucca", "o11y", "pipeline"],
+ "tags": [
+ "yucca",
+ "o11y",
+ "pipeline"
+ ],
"templating": {
"list": [
{
@@ -721,7 +741,7 @@
},
"timepicker": {},
"timezone": "",
- "title": "Yucca: Telemetry pipeline",
+ "title": "Telemetry / Pipeline",
"uid": "yucca-telemetry-pipeline",
"version": 1
-}
+}
\ No newline at end of file
diff --git a/o11y/dashboards/yucca-top-users.json b/o11y/dashboards/yucca-top-users.json
index a9744853..3cd25482 100644
--- a/o11y/dashboards/yucca-top-users.json
+++ b/o11y/dashboards/yucca-top-users.json
@@ -80,7 +80,9 @@
"footer": {
"countRows": false,
"fields": "",
- "reducer": ["sum"],
+ "reducer": [
+ "sum"
+ ],
"show": false
},
"showHeader": true,
@@ -177,7 +179,9 @@
"id": 3,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -199,7 +203,7 @@
"legendFormat": "{{customerId}}"
}
],
- "title": "Stored bytes — top 10 users",
+ "title": "Stored bytes \u2014 top 10 users",
"type": "timeseries"
},
{
@@ -250,7 +254,9 @@
"footer": {
"countRows": false,
"fields": "",
- "reducer": ["sum"],
+ "reducer": [
+ "sum"
+ ],
"show": false
},
"showHeader": true,
@@ -346,7 +352,9 @@
"id": 5,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -438,7 +446,9 @@
"id": 7,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -517,7 +527,9 @@
"id": 8,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -590,7 +602,9 @@
"footer": {
"countRows": false,
"fields": "",
- "reducer": ["sum"],
+ "reducer": [
+ "sum"
+ ],
"show": false
},
"showHeader": true,
@@ -680,7 +694,9 @@
"footer": {
"countRows": false,
"fields": "",
- "reducer": ["sum"],
+ "reducer": [
+ "sum"
+ ],
"show": false
},
"showHeader": true,
@@ -776,7 +792,9 @@
"id": 11,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -856,7 +874,9 @@
"id": 12,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -936,7 +956,9 @@
"id": 16,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -1016,7 +1038,9 @@
"id": 17,
"options": {
"legend": {
- "calcs": ["lastNotNull"],
+ "calcs": [
+ "lastNotNull"
+ ],
"displayMode": "table",
"placement": "bottom",
"showLegend": true,
@@ -1103,7 +1127,9 @@
"footer": {
"countRows": false,
"fields": "",
- "reducer": ["sum"],
+ "reducer": [
+ "sum"
+ ],
"show": false
},
"showHeader": true,
@@ -1144,7 +1170,7 @@
],
"title": "Stalest successful backups (bottom 15)",
"type": "table",
- "description": "Users whose newest successful backup is oldest — likely broken or abandoned setups."
+ "description": "Users whose newest successful backup is oldest \u2014 likely broken or abandoned setups."
},
{
"datasource": {
@@ -1194,7 +1220,9 @@
"footer": {
"countRows": false,
"fields": "",
- "reducer": ["sum"],
+ "reducer": [
+ "sum"
+ ],
"show": false
},
"showHeader": true,
@@ -1240,7 +1268,11 @@
"preload": false,
"refresh": "30s",
"schemaVersion": 39,
- "tags": ["yucca", "users", "prod"],
+ "tags": [
+ "yucca",
+ "users",
+ "prod"
+ ],
"templating": {
"list": [
{
@@ -1260,8 +1292,12 @@
"allValue": ".*",
"current": {
"selected": true,
- "text": ["All"],
- "value": ["$__all"]
+ "text": [
+ "All"
+ ],
+ "value": [
+ "$__all"
+ ]
},
"datasource": {
"uid": "$datasource"
@@ -1281,8 +1317,12 @@
"allValue": ".*",
"current": {
"selected": true,
- "text": ["All"],
- "value": ["$__all"]
+ "text": [
+ "All"
+ ],
+ "value": [
+ "$__all"
+ ]
},
"datasource": {
"uid": "$datasource"
@@ -1302,8 +1342,12 @@
"allValue": ".*",
"current": {
"selected": true,
- "text": ["All"],
- "value": ["$__all"]
+ "text": [
+ "All"
+ ],
+ "value": [
+ "$__all"
+ ]
},
"datasource": {
"uid": "$datasource"
@@ -1342,7 +1386,7 @@
},
"timepicker": {},
"timezone": "",
- "title": "Yucca: Top users",
+ "title": "Yucca / Top Users",
"uid": "yucca-top-users",
"version": 1
-}
+}
\ No newline at end of file
diff --git a/o11y/dashboards/yucca-vmagent.json b/o11y/dashboards/yucca-vmagent.json
index 78179e16..54a6d953 100644
--- a/o11y/dashboards/yucca-vmagent.json
+++ b/o11y/dashboards/yucca-vmagent.json
@@ -9016,7 +9016,7 @@
]
},
"timezone": "",
- "title": "Yucca: vmagent",
+ "title": "VictoriaMetrics / vmagent",
"uid": "yucca-vmagent",
"version": 1
}
diff --git a/o11y/scripts/import-upstream.py b/o11y/scripts/import-upstream.py
index 45cad6b2..1ecce4ce 100644
--- a/o11y/scripts/import-upstream.py
+++ b/o11y/scripts/import-upstream.py
@@ -22,22 +22,25 @@ CILIUM = f"https://raw.githubusercontent.com/cilium/cilium/{CILIUM_VERSION}/inst
# uid -> (url, title, inject cluster var+matchers, anchor metric for the
# cluster variable, extra tags, drop panels whose exprs match)
IMPORTS = {
- "yucca-k8s-global": (f"{DOTDC}/k8s-views-global.json", "Yucca: K8s / Global", False, None, ["kubernetes"], None),
- "yucca-k8s-namespaces": (f"{DOTDC}/k8s-views-namespaces.json", "Yucca: K8s / Namespaces", False, None, ["kubernetes"], None),
- "yucca-k8s-nodes": (f"{DOTDC}/k8s-views-nodes.json", "Yucca: K8s / Nodes", False, None, ["kubernetes"], None),
- "yucca-k8s-pods": (f"{DOTDC}/k8s-views-pods.json", "Yucca: K8s / Pods", False, None, ["kubernetes"], None),
- "yucca-k8s-apiserver": (f"{DOTDC}/k8s-system-api-server.json", "Yucca: K8s / API server", False, None, ["kubernetes"], None),
- "yucca-k8s-coredns": (f"{DOTDC}/k8s-system-coredns.json", "Yucca: K8s / CoreDNS", False, None, ["kubernetes"], None),
- "yucca-cilium": (f"{CILIUM}/cilium-agent/dashboards/cilium-dashboard.json", "Yucca: Cilium agent", True, "cilium_version", ["cilium"], None),
- "yucca-cilium-operator": (f"{CILIUM}/cilium-operator/dashboards/cilium-operator-dashboard.json", "Yucca: Cilium operator", True, "cilium_operator_process_cpu_seconds_total", ["cilium"], None),
- "yucca-hubble": (f"{CILIUM}/hubble/dashboards/hubble-dashboard.json", "Yucca: Hubble", True, "hubble_flows_processed_total", ["cilium"], re.compile(r"hubble_http_")),
- "yucca-node-exporter": ("https://raw.githubusercontent.com/rfmoz/grafana-dashboards/master/prometheus/node-exporter-full.json", "Yucca: Node exporter", True, "node_uname_info", ["nodes"], None),
- "yucca-flux": ("https://raw.githubusercontent.com/fluxcd/flux2-monitoring-example/main/monitoring/configs/dashboards/cluster.json", "Yucca: Flux cluster", True, "gotk_reconcile_duration_seconds_count", ["flux"], None),
- "yucca-flux-controllers": ("https://raw.githubusercontent.com/fluxcd/flux2-monitoring-example/main/monitoring/configs/dashboards/control-plane.json", "Yucca: Flux controllers", True, "gotk_reconcile_duration_seconds_count", ["flux"], None),
- "yucca-vmagent": ("https://raw.githubusercontent.com/VictoriaMetrics/VictoriaMetrics/master/dashboards/vmagent.json", "Yucca: vmagent", True, 'vm_app_version{version=~"^vmagent.*"}', ["telemetry"], None),
+ "yucca-k8s-global": (f"{DOTDC}/k8s-views-global.json", "Kubernetes / Views / Global", False, None, ["kubernetes"], None),
+ "yucca-k8s-namespaces": (f"{DOTDC}/k8s-views-namespaces.json", "Kubernetes / Views / Namespaces", False, None, ["kubernetes"], None),
+ "yucca-k8s-nodes": (f"{DOTDC}/k8s-views-nodes.json", "Kubernetes / Views / Nodes", False, None, ["kubernetes"], None),
+ "yucca-k8s-pods": (f"{DOTDC}/k8s-views-pods.json", "Kubernetes / Views / Pods", False, None, ["kubernetes"], None),
+ "yucca-k8s-apiserver": (f"{DOTDC}/k8s-system-api-server.json", "Kubernetes / System / API Server", False, None, ["kubernetes"], None),
+ "yucca-k8s-coredns": (f"{DOTDC}/k8s-system-coredns.json", "Kubernetes / System / CoreDNS", False, None, ["kubernetes"], None),
+ "yucca-cilium": (f"{CILIUM}/cilium-agent/dashboards/cilium-dashboard.json", "Cilium / Agent", True, "cilium_version", ["cilium"], None),
+ "yucca-cilium-operator": (f"{CILIUM}/cilium-operator/dashboards/cilium-operator-dashboard.json", "Cilium / Operator", True, "cilium_operator_process_cpu_seconds_total", ["cilium"], None),
+ "yucca-hubble": (f"{CILIUM}/hubble/dashboards/hubble-dashboard.json", "Cilium / Hubble", True, "hubble_flows_processed_total", ["cilium"], re.compile(r"hubble_http_")),
+ "yucca-node-exporter": ("https://raw.githubusercontent.com/rfmoz/grafana-dashboards/master/prometheus/node-exporter-full.json", "Node Exporter / Full", True, "node_uname_info", ["nodes"], None),
+ "yucca-flux": ("https://raw.githubusercontent.com/fluxcd/flux2-monitoring-example/main/monitoring/configs/dashboards/cluster.json", "Flux / Cluster", True, "gotk_reconcile_duration_seconds_count", ["flux"], None),
+ "yucca-flux-controllers": ("https://raw.githubusercontent.com/fluxcd/flux2-monitoring-example/main/monitoring/configs/dashboards/control-plane.json", "Flux / Control Plane", True, "gotk_reconcile_duration_seconds_count", ["flux"], None),
+ "yucca-cnpg": ("https://raw.githubusercontent.com/cloudnative-pg/grafana-dashboards/main/charts/cluster/grafana-dashboard.json", "CloudNativePG", True, "cnpg_collector_up", ["postgres"], None),
+ "yucca-vmagent": ("https://raw.githubusercontent.com/VictoriaMetrics/VictoriaMetrics/master/dashboards/vmagent.json", "VictoriaMetrics / vmagent", True, 'vm_app_version{version=~"^vmagent.*"}', ["telemetry"], None),
}
-CLUSTER_VAR_OVERRIDE = {}
+# The CNPG dashboard already uses `$cluster` for the CNPG Cluster resource, so
+# the infra-cluster variable gets a different name there.
+CLUSTER_VAR_OVERRIDE = {"yucca-cnpg": "k8s_cluster"}
def query_var(d, name, query, regex=""):
@@ -50,11 +53,182 @@ def query_var(d, name, query, regex=""):
raise KeyError(name)
+def tweak_cnpg(d):
+ """Our vmagent overwrites the `cluster` label with the infra cluster name
+ (verified live: father's cnpg series carry no exported_cluster), so the
+ upstream vars that regex CNPG cluster names out of series strings resolve
+ to father/luke and match nothing. Re-derive them from pod names, then
+ append a Backups row for the Barman Cloud plugin signals the yucca-database
+ alert group (o11y/alerts/database.yaml) fires on."""
+ query_var(d, "namespace", 'label_values(cnpg_collector_up{cluster=~"$k8s_cluster"}, namespace)')
+ query_var(
+ d,
+ "cluster",
+ 'label_values(cnpg_collector_up{cluster=~"$k8s_cluster", namespace=~"$namespace"}, pod)',
+ regex="/(?.+)-[0-9]+$/",
+ )
+ query_var(
+ d,
+ "instances",
+ 'label_values(cnpg_collector_up{cluster=~"$k8s_cluster", namespace=~"$namespace", pod=~"$cluster-[0-9]+"}, pod)',
+ )
+
+ sel = 'cluster=~"$k8s_cluster", namespace=~"$namespace", pod=~"$cluster-[0-9]+"'
+ y = max((p["gridPos"]["y"] + p["gridPos"]["h"]) for p in d["panels"] if "gridPos" in p)
+ ids = 9000
+
+ def ds():
+ return {"uid": "$datasource"}
+
+ def stat(title, expr, x, w, thresholds, unit="s", description=None):
+ nonlocal ids
+ ids += 1
+ p = {
+ "datasource": ds(),
+ "fieldConfig": {
+ "defaults": {
+ "color": {"mode": "thresholds"},
+ "mappings": [],
+ "thresholds": {"mode": "absolute", "steps": thresholds},
+ "unit": unit,
+ },
+ "overrides": [],
+ },
+ "gridPos": {"h": 5, "w": w, "x": x, "y": y + 1},
+ "id": ids,
+ "options": {
+ "colorMode": "value",
+ "graphMode": "area",
+ "justifyMode": "auto",
+ "orientation": "auto",
+ "reduceOptions": {"calcs": ["lastNotNull"], "fields": "", "values": False},
+ "textMode": "auto",
+ "wideLayout": True,
+ },
+ "targets": [{"datasource": ds(), "refId": "A", "expr": expr}],
+ "title": title,
+ "type": "stat",
+ }
+ if description:
+ p["description"] = description
+ return p
+
+ def ts(title, targets, x, w, unit="short"):
+ nonlocal ids
+ ids += 1
+ return {
+ "datasource": ds(),
+ "fieldConfig": {
+ "defaults": {
+ "color": {"mode": "palette-classic"},
+ "custom": {
+ "axisCenteredZero": False,
+ "axisPlacement": "auto",
+ "drawStyle": "line",
+ "fillOpacity": 10,
+ "gradientMode": "none",
+ "lineInterpolation": "linear",
+ "lineWidth": 2,
+ "pointSize": 5,
+ "scaleDistribution": {"type": "linear"},
+ "showPoints": "never",
+ "spanNulls": True,
+ "stacking": {"group": "A", "mode": "none"},
+ "thresholdsStyle": {"mode": "off"},
+ },
+ "mappings": [],
+ "thresholds": {"mode": "absolute", "steps": [{"color": "green", "value": 0}]},
+ "unit": unit,
+ },
+ "overrides": [],
+ },
+ "gridPos": {"h": 8, "w": w, "x": x, "y": y + 6},
+ "id": ids,
+ "options": {
+ "legend": {"calcs": ["lastNotNull"], "displayMode": "table", "placement": "bottom", "showLegend": True},
+ "tooltip": {"mode": "multi", "sort": "desc"},
+ },
+ "targets": targets,
+ "title": title,
+ "type": "timeseries",
+ }
+
+ def tgt(expr, ref="A", legend=None):
+ t = {"datasource": ds(), "refId": ref, "expr": expr}
+ if legend:
+ t["legendFormat"] = legend
+ return t
+
+ ids += 1
+ d["panels"].append(
+ {"collapsed": False, "gridPos": {"h": 1, "w": 24, "x": 0, "y": y}, "id": ids, "panels": [], "title": "Backups (Barman Cloud)", "type": "row"}
+ )
+ d["panels"].append(
+ stat(
+ "Last base backup age",
+ f"time() - max(cnpg_collector_last_available_backup_timestamp{{{sel}}})",
+ 0,
+ 6,
+ [{"color": "green", "value": 0}, {"color": "yellow", "value": 93600}, {"color": "red", "value": 172800}],
+ description="Schedule is daily; a value of ~forever means no base backup has ever succeeded.",
+ )
+ )
+ d["panels"].append(
+ stat(
+ "PITR window (first recoverability point age)",
+ f"time() - max(cnpg_collector_first_recoverability_point{{{sel}}})",
+ 6,
+ 6,
+ [{"color": "red", "value": 0}, {"color": "yellow", "value": 86400}, {"color": "green", "value": 604800}],
+ )
+ )
+ d["panels"].append(
+ stat(
+ "Last failed backup age",
+ f"time() - max(cnpg_collector_last_failed_backup_timestamp{{{sel}}})",
+ 12,
+ 6,
+ [{"color": "red", "value": 0}, {"color": "green", "value": 93600}],
+ description="Red while the most recent failure is fresher than the daily schedule.",
+ )
+ )
+ d["panels"].append(
+ stat(
+ "WAL segments awaiting archive",
+ f'max(cnpg_collector_pg_wal_archive_status{{value="ready", {sel}}})',
+ 18,
+ 6,
+ [{"color": "green", "value": 0}, {"color": "yellow", "value": 1}, {"color": "red", "value": 3}],
+ unit="short",
+ description="Sustained queue = WAL archiving to RGW is broken and the PITR window stops advancing.",
+ )
+ )
+ d["panels"].append(
+ ts(
+ "WAL archive status",
+ [tgt(f"sum by (value) (cnpg_collector_pg_wal_archive_status{{{sel}}})", "A", "{{value}}")],
+ 0,
+ 12,
+ )
+ )
+ d["panels"].append(
+ ts(
+ "WAL generation",
+ [
+ tgt(f"sum(rate(cnpg_collector_wal_bytes{{{sel}}}[$__rate_interval]))", "A", "bytes/s"),
+ ],
+ 12,
+ 12,
+ unit="Bps",
+ )
+ )
+
+
def tweak_flux_control_plane(d):
query_var(d, "namespace", 'label_values(workqueue_work_duration_seconds_count{cluster=~"$cluster"}, namespace)')
-TWEAKS = {"yucca-flux-controllers": tweak_flux_control_plane}
+TWEAKS = {"yucca-cnpg": tweak_cnpg, "yucca-flux-controllers": tweak_flux_control_plane}
def inject_cluster(expr, var):