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": "\n \n

$instances

\n
", + "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": "\n \n

$instances

\n
", + "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):