diff --git a/.github/workflows/monitoring-cd.yml b/.github/workflows/monitoring-cd.yml
deleted file mode 100644
index f012ef5..0000000
--- a/.github/workflows/monitoring-cd.yml
+++ /dev/null
@@ -1,44 +0,0 @@
-name: Monitoring CD
-
-on:
- push:
- branches:
- - main
- paths:
- - "monitoring/**"
- - ".github/workflows/monitoring-cd.yml"
-
- workflow_dispatch:
-
-env:
- ROOT_DIR: ./connect-gnu/monitoring
-
-jobs:
- deploy:
- name: Deploy to Monitoring Server
- runs-on: ubuntu-latest
- steps:
- - name: Checkout Repository
- uses: actions/checkout@v4
-
- - name: Copy files to server
- uses: appleboy/scp-action@v0.1.7
- with:
- host: ${{ secrets.MONITORING_SSH_HOST }}
- username: ${{ secrets.MONITORING_SSH_USERNAME }}
- key: ${{ secrets.MONITORING_SSH_PRIVATE_KEY }}
- source: monitoring/docker-compose.yml,monitoring/prometheus,monitoring/grafana,monitoring/nginx,monitoring/letsencrypt/init-letsencrypt.sh
- target: ${{ env.ROOT_DIR }}
- strip_components: 1
-
- - name: Deploy via SSH
- uses: appleboy/ssh-action@v1.0.3
- with:
- host: ${{ secrets.MONITORING_SSH_HOST }}
- username: ${{ secrets.MONITORING_SSH_USERNAME }}
- key: ${{ secrets.MONITORING_SSH_PRIVATE_KEY }}
- script: |
- cd ${{ env.ROOT_DIR }}
- docker compose pull
- docker compose up -d
- docker image prune -af
diff --git a/README.md b/README.md
index 535167a..d41ec9d 100644
--- a/README.md
+++ b/README.md
@@ -47,8 +47,6 @@
-
-
### Testing
@@ -240,43 +238,6 @@
- 특히 네트워크 탭을 통해 실제 API 요청 흐름을 분석하면서 문제를 해결할 수 있었던 경험이 인상 깊었습니다.
- 이 경험을 통해 기능 구현 전에 동작 원리를 먼저 이해하려는 습관이 중요하다는 것을 배웠습니다.
-
-
-### 4. 수집 지연 감지를 위한 모니터링
-
-**문제**
-
-- 학식, 셔틀버스, 공지사항과 같은 데이터 수집이 지연되더라도 즉시 인지하기 어려웠습니다.
-- 사용자가 오래된 데이터를 확인하기 전까지는 문제가 드러나지 않아 대응이 늦어지는 상황이 발생했습니다.
-
-**원인**
-
-- 기존에는 서버가 살아 있는지만 확인하고 있었습니다.
-- 하지만 실제로 중요한 "데이터가 언제 마지막으로 갱신되었는지"는 확인하지 않고 있었습니다.
-- 이로 인해 수집이 실패하거나 지연되더라도 바로 알 수 없는 구조였습니다.
-
-**해결**
-
-- Prometheus, Grafana, Sentry를 활용해 모니터링 환경을 구성했습니다.
-- 데이터 수집 지연 감지는 PostgreSQL에 저장된 마지막 수집 시간과 현재 시간의 차이를 확인하는 쿼리로 체크했습니다.
-- 해당 값을 Grafana 대시보드로 시각화하여, 데이터가 얼마나 지연되고 있는지 한눈에 확인할 수 있도록 했습니다.
-
-
-
-**결과**
-
-- 실제로 셔틀버스 데이터가 약 156분 지연된 문제를 대시보드를 통해 빠르게 확인할 수 있었습니다.
-- 원인을 확인한 결과 Github Actions의 cron 설정 문제였고, 실행 시간을 조정하여 해결했습니다.
-- 이후에는 데이터 수집 지연을 빠르게 인지하고 대응할 수 있게 되었습니다.
-- 다만 데이터 구조가 바뀔 때마다 모니터링 쿼리와 대시보드를 함께 수정해야 하는 번거로움이 있었습니다.
-
-
-
-**느낀 점**
-
-- [모니터링을 공부](https://dongho-blog.kro.kr/posts/3145ca9b-265e-8028-9953-f659ea1a9c67)하면서 사용자가 알기 전에 문제를 발견할 수 있도록 하는 것이 서비스 운영에서 매우 중요하다고 느꼈습니다.
-- 특히 p95 응답 속도, 에러율 같은 지표를 통해 사용자 경험에 직접적인 영향을 주는 요소를 기준으로 서비스를 바라봐야 한다는 것을 배웠습니다.
-
---
## 🔷 팀원 소개
diff --git a/monitoring/.env.example b/monitoring/.env.example
deleted file mode 100644
index 08872a9..0000000
--- a/monitoring/.env.example
+++ /dev/null
@@ -1,18 +0,0 @@
-# Database (Grafana datasource)
-DB_HOST=
-DB_PORT=5432
-DB_USERNAME=postgres
-DB_PASSWORD=
-DB_DATABASE=postgres
-
-# Supabase
-SUPABASE_HOST=
-SUPABASE_METRICS_PASSWORD=
-
-# Grafana
-GF_SECURITY_ADMIN_USER=admin
-GF_SECURITY_ADMIN_PASSWORD=
-GF_SERVER_ROOT_URL=https://monitor.connectgnu.kro.kr/grafana
-
-# Prometheus
-PROMETHEUS_EXTERNAL_URL=https://monitor.connectgnu.kro.kr/prometheus/
diff --git a/monitoring/docker-compose.dev.yml b/monitoring/docker-compose.dev.yml
deleted file mode 100644
index 4b0f1cc..0000000
--- a/monitoring/docker-compose.dev.yml
+++ /dev/null
@@ -1,67 +0,0 @@
-services:
- prometheus:
- image: prom/prometheus:v3.10.0
- expose:
- - '9090'
- environment:
- - SUPABASE_HOST=${SUPABASE_HOST:-}
- - SUPABASE_METRICS_PASSWORD=${SUPABASE_METRICS_PASSWORD:-}
- entrypoint:
- - /bin/sh
- - -c
- - |
- sed \
- -e "s/__SUPABASE_HOST__/$$SUPABASE_HOST/g" \
- -e "s/__SUPABASE_METRICS_PASSWORD__/$$SUPABASE_METRICS_PASSWORD/g" \
- /etc/prometheus/prometheus.yml.template > /etc/prometheus/prometheus.yml && \
- /bin/prometheus \
- --config.file=/etc/prometheus/prometheus.yml \
- --storage.tsdb.path=/prometheus \
- --web.external-url=${PROMETHEUS_EXTERNAL_URL:-http://localhost/prometheus/} \
- --web.route-prefix=/
- volumes:
- - ./prometheus/prometheus.dev.yml:/etc/prometheus/prometheus.yml.template
- - prometheus_data:/prometheus
- networks:
- - monitoring-network
-
- grafana:
- image: grafana/grafana:12.3
- expose:
- - '3000'
- volumes:
- - grafana_data:/var/lib/grafana
- - ./grafana/provisioning/datasources:/etc/grafana/provisioning/datasources
- - ./grafana/provisioning/dashboards:/etc/grafana/provisioning/dashboards
- environment:
- - GF_SECURITY_ADMIN_USER=${GF_SECURITY_ADMIN_USER:-admin}
- - GF_SECURITY_ADMIN_PASSWORD=${GF_SECURITY_ADMIN_PASSWORD:-admin}
- - GF_SERVER_ROOT_URL=${GF_SERVER_ROOT_URL:-http://localhost/grafana}
- - GF_SERVER_SERVE_FROM_SUB_PATH=true
- - DB_HOST=${DB_HOST}
- - DB_PORT=${DB_PORT}
- - DB_USERNAME=${DB_USERNAME}
- - DB_PASSWORD=${DB_PASSWORD}
- - DB_DATABASE=${DB_DATABASE}
- networks:
- - monitoring-network
-
- nginx:
- image: nginx:1.29.5-alpine
- ports:
- - '8080:80'
- volumes:
- - ./nginx/dev.conf:/etc/nginx/conf.d/default.conf
- networks:
- - monitoring-network
- depends_on:
- - grafana
- - prometheus
-
-networks:
- monitoring-network:
- driver: bridge
-
-volumes:
- prometheus_data:
- grafana_data:
diff --git a/monitoring/docker-compose.yml b/monitoring/docker-compose.yml
deleted file mode 100644
index 4004de9..0000000
--- a/monitoring/docker-compose.yml
+++ /dev/null
@@ -1,101 +0,0 @@
-services:
- prometheus:
- image: prom/prometheus:v3.10.0
- restart: always
- expose:
- - "9090"
- environment:
- - SUPABASE_HOST=${SUPABASE_HOST}
- - SUPABASE_METRICS_PASSWORD=${SUPABASE_METRICS_PASSWORD}
- entrypoint:
- - /bin/sh
- - -c
- - |
- sed \
- -e "s/__SUPABASE_HOST__/$$SUPABASE_HOST/g" \
- -e "s/__SUPABASE_METRICS_PASSWORD__/$$SUPABASE_METRICS_PASSWORD/g" \
- /etc/prometheus/prometheus.yml.template > /etc/prometheus/prometheus.yml && \
- /bin/prometheus \
- --config.file=/etc/prometheus/prometheus.yml \
- --storage.tsdb.path=/prometheus \
- --web.external-url=${PROMETHEUS_EXTERNAL_URL} \
- --web.route-prefix=/
- volumes:
- - ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml.template
- - prometheus_data:/prometheus
- networks:
- - monitoring-network
- logging:
- driver: gcplogs
- options:
- gcp-log-cmd: "true"
-
- grafana:
- image: grafana/grafana:12.3
- restart: always
- expose:
- - "3000"
- volumes:
- - grafana_data:/var/lib/grafana
- - ./grafana/provisioning/datasources:/etc/grafana/provisioning/datasources
- - ./grafana/provisioning/dashboards:/etc/grafana/provisioning/dashboards
- environment:
- - GF_SECURITY_ADMIN_USER=${GF_SECURITY_ADMIN_USER}
- - GF_SECURITY_ADMIN_PASSWORD=${GF_SECURITY_ADMIN_PASSWORD}
- - GF_SERVER_ROOT_URL=${GF_SERVER_ROOT_URL}
- - GF_SERVER_SERVE_FROM_SUB_PATH=true
- - DB_HOST=${DB_HOST}
- - DB_PORT=${DB_PORT}
- - DB_USERNAME=${DB_USERNAME}
- - DB_PASSWORD=${DB_PASSWORD}
- - DB_DATABASE=${DB_DATABASE}
- networks:
- - monitoring-network
- depends_on:
- - prometheus
- logging:
- driver: gcplogs
- options:
- gcp-log-cmd: "true"
-
- nginx:
- image: nginx:1.29.5-alpine
- restart: always
- ports:
- - "80:80"
- - "443:443"
- volumes:
- - ./nginx/prod.conf:/etc/nginx/conf.d/default.conf
- - ./letsencrypt/conf:/etc/letsencrypt
- - ./letsencrypt/www:/var/www/certbot
- command: '/bin/sh -c ''while :; do sleep 6h & wait $${!}; nginx -s reload; done & nginx -g "daemon off;"'''
- networks:
- - monitoring-network
- depends_on:
- - grafana
- - prometheus
- logging:
- driver: gcplogs
- options:
- gcp-log-cmd: "true"
-
- certbot:
- image: certbot/certbot:v5.3.1
- restart: on-failure
- volumes:
- - ./letsencrypt/conf:/etc/letsencrypt
- - ./letsencrypt/www:/var/www/certbot
- entrypoint: "/bin/sh -c 'trap exit TERM; while :; do certbot renew; sleep 12h & wait $${!}; done;'"
- logging:
- driver: json-file
- options:
- max-size: "10m"
- max-file: "3"
-
-networks:
- monitoring-network:
- driver: bridge
-
-volumes:
- prometheus_data:
- grafana_data:
diff --git a/monitoring/grafana/provisioning/dashboards/backend-overview.json b/monitoring/grafana/provisioning/dashboards/backend-overview.json
deleted file mode 100644
index 1b6b6c9..0000000
--- a/monitoring/grafana/provisioning/dashboards/backend-overview.json
+++ /dev/null
@@ -1,456 +0,0 @@
-{
- "annotations": {
- "list": []
- },
- "editable": true,
- "fiscalYearStartMonth": 0,
- "graphTooltip": 1,
- "id": null,
- "links": [],
- "liveNow": false,
- "panels": [
- {
- "collapsed": false,
- "gridPos": { "h": 1, "w": 24, "x": 0, "y": 0 },
- "id": 100,
- "panels": [],
- "title": "핵심 지표",
- "type": "row"
- },
- {
- "datasource": { "type": "prometheus", "uid": "prometheus" },
- "fieldConfig": {
- "defaults": {
- "color": { "mode": "palette-classic" },
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- { "color": "green", "value": null },
- { "color": "red", "value": 80 }
- ]
- }
- },
- "overrides": []
- },
- "gridPos": { "h": 6, "w": 12, "x": 0, "y": 1 },
- "id": 1,
- "options": {
- "colorMode": "value",
- "graphMode": "area",
- "justifyMode": "auto",
- "orientation": "auto",
- "reduceOptions": {
- "calcs": ["lastNotNull"],
- "fields": "",
- "values": false
- },
- "textMode": "auto"
- },
- "pluginVersion": "12.3.0",
- "targets": [
- {
- "datasource": { "type": "prometheus", "uid": "prometheus" },
- "editorMode": "code",
- "expr": "sum(rate(http_requests_total{job=\"app\"}[5m]))",
- "legendFormat": "RPS",
- "range": true
- },
- {
- "datasource": { "type": "prometheus", "uid": "prometheus" },
- "editorMode": "code",
- "expr": "sum(rate(http_errors_total{job=\"app\"}[5m])) / (sum(rate(http_requests_total{job=\"app\"}[5m])) + 0.001) * 100",
- "legendFormat": "에러율(%)",
- "range": true
- },
- {
- "datasource": { "type": "prometheus", "uid": "prometheus" },
- "editorMode": "code",
- "expr": "histogram_quantile(0.95, sum(rate(http_request_duration_seconds_bucket{job=\"app\"}[5m])) by (le)) * 1000",
- "legendFormat": "P95(ms)",
- "range": true
- },
- {
- "datasource": { "type": "prometheus", "uid": "prometheus" },
- "editorMode": "code",
- "expr": "(1 - (sum(rate(http_errors_total{job=\"app\"}[5m])) / (sum(rate(http_requests_total{job=\"app\"}[5m])) + 0.001))) * 100",
- "legendFormat": "가용성(%)",
- "range": true
- }
- ],
- "title": "핵심 지표",
- "type": "stat"
- },
- {
- "datasource": { "type": "prometheus", "uid": "prometheus" },
- "gridPos": { "h": 6, "w": 12, "x": 12, "y": 1 },
- "id": 2,
- "options": {
- "showHeader": true,
- "sortBy": [{ "desc": true, "displayName": "에러 수" }]
- },
- "pluginVersion": "12.3.0",
- "targets": [
- {
- "datasource": { "type": "prometheus", "uid": "prometheus" },
- "editorMode": "code",
- "expr": "topk(10, sum by (path, method) (increase(http_errors_total{job=\"app\"}[1h])))",
- "format": "table",
- "instant": true,
- "legendFormat": "__auto"
- }
- ],
- "title": "에러 목록 (Top 10 by path)",
- "transformations": [
- {
- "id": "organize",
- "options": {
- "excludeByName": { "Time": true },
- "indexByName": {},
- "renameByName": {
- "Value": "에러 수",
- "method": "Method",
- "path": "Path"
- }
- }
- }
- ],
- "type": "table"
- },
- {
- "collapsed": false,
- "gridPos": { "h": 1, "w": 24, "x": 0, "y": 7 },
- "id": 101,
- "panels": [],
- "title": "트래픽 & 응답시간",
- "type": "row"
- },
- {
- "datasource": { "type": "prometheus", "uid": "prometheus" },
- "fieldConfig": {
- "defaults": {
- "color": { "mode": "palette-classic" },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 10,
- "gradientMode": "none",
- "hideFrom": { "legend": false, "tooltip": false, "viz": 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", "value": null },
- { "color": "red", "value": 80 }
- ]
- },
- "unit": "reqps"
- },
- "overrides": []
- },
- "gridPos": { "h": 8, "w": 8, "x": 0, "y": 8 },
- "id": 3,
- "options": {
- "legend": {
- "calcs": ["mean", "max"],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": { "mode": "multi", "sort": "desc" }
- },
- "targets": [
- {
- "datasource": { "type": "prometheus", "uid": "prometheus" },
- "editorMode": "code",
- "expr": "sum(rate(http_requests_total{job=\"app\"}[1h]))",
- "legendFormat": "요청/초",
- "range": true
- }
- ],
- "title": "트래픽 (시간별 요청 추이)",
- "type": "timeseries"
- },
- {
- "datasource": { "type": "prometheus", "uid": "prometheus" },
- "fieldConfig": {
- "defaults": {
- "color": { "mode": "palette-classic" },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 10,
- "gradientMode": "none",
- "hideFrom": { "legend": false, "tooltip": false, "viz": 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", "value": null },
- { "color": "red", "value": 80 }
- ]
- },
- "unit": "ms"
- },
- "overrides": []
- },
- "gridPos": { "h": 8, "w": 8, "x": 8, "y": 8 },
- "id": 4,
- "options": {
- "legend": {
- "calcs": ["mean", "max"],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": { "mode": "multi", "sort": "desc" }
- },
- "targets": [
- {
- "datasource": { "type": "prometheus", "uid": "prometheus" },
- "editorMode": "code",
- "expr": "histogram_quantile(0.50, sum(rate(http_request_duration_seconds_bucket{job=\"app\"}[5m])) by (le)) * 1000",
- "legendFormat": "P50",
- "range": true
- },
- {
- "datasource": { "type": "prometheus", "uid": "prometheus" },
- "editorMode": "code",
- "expr": "histogram_quantile(0.95, sum(rate(http_request_duration_seconds_bucket{job=\"app\"}[5m])) by (le)) * 1000",
- "legendFormat": "P95",
- "range": true
- },
- {
- "datasource": { "type": "prometheus", "uid": "prometheus" },
- "editorMode": "code",
- "expr": "histogram_quantile(0.99, sum(rate(http_request_duration_seconds_bucket{job=\"app\"}[5m])) by (le)) * 1000",
- "legendFormat": "P99",
- "range": true
- }
- ],
- "title": "응답시간 (P50/P95/P99 추이)",
- "type": "timeseries"
- },
- {
- "datasource": { "type": "prometheus", "uid": "prometheus" },
- "gridPos": { "h": 8, "w": 8, "x": 16, "y": 8 },
- "id": 5,
- "options": {
- "showHeader": true,
- "sortBy": [{ "desc": true, "displayName": "P95 (ms)" }]
- },
- "pluginVersion": "12.3.0",
- "targets": [
- {
- "datasource": { "type": "prometheus", "uid": "prometheus" },
- "editorMode": "code",
- "expr": "topk(10, histogram_quantile(0.95, sum(rate(http_request_duration_seconds_bucket{job=\"app\"}[5m])) by (le, path)) * 1000)",
- "format": "table",
- "instant": true,
- "legendFormat": "__auto"
- }
- ],
- "title": "Slow Queries (느린 요청 Top 10)",
- "transformations": [
- {
- "id": "organize",
- "options": {
- "excludeByName": { "Time": true },
- "indexByName": {},
- "renameByName": {
- "Value": "P95 (ms)",
- "path": "Path"
- }
- }
- }
- ],
- "type": "table"
- },
- {
- "collapsed": false,
- "gridPos": { "h": 1, "w": 24, "x": 0, "y": 16 },
- "id": 102,
- "panels": [],
- "title": "리소스 & 의존성",
- "type": "row"
- },
- {
- "datasource": { "type": "prometheus", "uid": "prometheus" },
- "fieldConfig": {
- "defaults": {
- "color": { "mode": "palette-classic" },
- "custom": {
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 10,
- "gradientMode": "none",
- "hideFrom": { "legend": false, "tooltip": false, "viz": 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", "value": null },
- { "color": "red", "value": 80 }
- ]
- }
- },
- "overrides": [
- {
- "matcher": { "id": "byName", "options": "CPU" },
- "properties": [{ "id": "unit", "value": "percentunit" }]
- },
- {
- "matcher": { "id": "byName", "options": "Memory" },
- "properties": [{ "id": "unit", "value": "bytes" }]
- },
- {
- "matcher": { "id": "byName", "options": "Event Loop Lag" },
- "properties": [{ "id": "unit", "value": "s" }]
- }
- ]
- },
- "gridPos": { "h": 6, "w": 12, "x": 0, "y": 17 },
- "id": 6,
- "options": {
- "legend": {
- "calcs": ["mean", "max"],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": { "mode": "multi", "sort": "desc" }
- },
- "targets": [
- {
- "datasource": { "type": "prometheus", "uid": "prometheus" },
- "editorMode": "code",
- "expr": "rate(process_cpu_seconds_total{job=\"app\"}[1m])",
- "legendFormat": "CPU",
- "range": true
- },
- {
- "datasource": { "type": "prometheus", "uid": "prometheus" },
- "editorMode": "code",
- "expr": "process_resident_memory_bytes{job=\"app\"} or nodejs_heap_size_used_bytes{job=\"app\"}",
- "legendFormat": "Memory",
- "range": true
- },
- {
- "datasource": { "type": "prometheus", "uid": "prometheus" },
- "editorMode": "code",
- "expr": "nodejs_eventloop_lag_seconds{job=\"app\"}",
- "legendFormat": "Event Loop Lag",
- "range": true
- }
- ],
- "title": "리소스 사용량 (CPU, Memory, Event Loop Lag)",
- "type": "timeseries"
- },
- {
- "datasource": { "type": "prometheus", "uid": "prometheus" },
- "fieldConfig": {
- "defaults": {
- "color": { "mode": "thresholds" },
- "mappings": [
- {
- "options": {
- "0": { "color": "red", "index": 0, "text": "DOWN" }
- },
- "type": "value"
- },
- {
- "options": {
- "1": { "color": "green", "index": 0, "text": "UP" }
- },
- "type": "value"
- }
- ],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- { "color": "red", "value": null },
- { "color": "green", "value": 1 }
- ]
- }
- },
- "overrides": []
- },
- "gridPos": { "h": 6, "w": 12, "x": 12, "y": 17 },
- "id": 7,
- "options": {
- "colorMode": "value",
- "graphMode": "none",
- "justifyMode": "auto",
- "orientation": "auto",
- "reduceOptions": {
- "calcs": ["lastNotNull"],
- "fields": "",
- "values": false
- },
- "textMode": "value_and_name"
- },
- "pluginVersion": "12.3.0",
- "targets": [
- {
- "datasource": { "type": "prometheus", "uid": "prometheus" },
- "editorMode": "code",
- "expr": "db_connection_up{job=\"app\"}",
- "legendFormat": "PostgreSQL",
- "range": true
- }
- ],
- "title": "외부 의존성 (DB 상태)",
- "type": "stat"
- }
- ],
- "refresh": "10s",
- "schemaVersion": 39,
- "style": "dark",
- "tags": ["backend", "overview"],
- "templating": { "list": [] },
- "time": { "from": "now-6h", "to": "now" },
- "timepicker": {},
- "timezone": "browser",
- "title": "Backend Overview",
- "uid": "backend-overview",
- "version": 0
-}
diff --git a/monitoring/grafana/provisioning/dashboards/dashboards.yml b/monitoring/grafana/provisioning/dashboards/dashboards.yml
deleted file mode 100644
index cd1325c..0000000
--- a/monitoring/grafana/provisioning/dashboards/dashboards.yml
+++ /dev/null
@@ -1,13 +0,0 @@
-apiVersion: 1
-
-providers:
- - name: default
- orgId: 1
- folder: ''
- folderUid: ''
- type: file
- disableDeletion: false
- updateIntervalSeconds: 30
- allowUiUpdates: true
- options:
- path: /etc/grafana/provisioning/dashboards
diff --git a/monitoring/grafana/provisioning/dashboards/nginx-overview.json b/monitoring/grafana/provisioning/dashboards/nginx-overview.json
deleted file mode 100644
index 4fa215b..0000000
--- a/monitoring/grafana/provisioning/dashboards/nginx-overview.json
+++ /dev/null
@@ -1,1012 +0,0 @@
-{
- "__inputs": [
- {
- "name": "DS_PROMETHEUS-DNTG",
- "label": "Prometheus-dntg",
- "description": "",
- "type": "datasource",
- "pluginId": "prometheus",
- "pluginName": "Prometheus"
- }
- ],
- "__requires": [
- {
- "type": "grafana",
- "id": "grafana",
- "name": "Grafana",
- "version": "6.7.4"
- },
- {
- "type": "panel",
- "id": "graph",
- "name": "Graph",
- "version": ""
- },
- {
- "type": "datasource",
- "id": "prometheus",
- "name": "Prometheus",
- "version": "1.0.0"
- },
- {
- "type": "panel",
- "id": "singlestat",
- "name": "Singlestat",
- "version": ""
- }
- ],
- "annotations": {
- "list": [
- {
- "$$hashKey": "object:122",
- "builtIn": 1,
- "datasource": "-- Grafana --",
- "enable": true,
- "hide": true,
- "iconColor": "rgba(0, 211, 255, 1)",
- "name": "Annotations & Alerts",
- "type": "dashboard"
- }
- ]
- },
- "description": "Official dashboard for NGINX Prometheus exporter\r\n(Nothing Different, Just Primp!)",
- "editable": true,
- "gnetId": 12767,
- "graphTooltip": 0,
- "id": null,
- "iteration": 1602300844890,
- "links": [],
- "panels": [
- {
- "datasource": { "type": "prometheus", "uid": "prometheus" },
- "gridPos": {
- "h": 1,
- "w": 24,
- "x": 0,
- "y": 0
- },
- "id": 28,
- "title": "Status",
- "type": "row"
- },
- {
- "cacheTimeout": null,
- "colorBackground": true,
- "colorPostfix": false,
- "colorPrefix": false,
- "colorValue": false,
- "colors": ["#E02F44", "#FF9830", "#299c46"],
- "datasource": { "type": "prometheus", "uid": "prometheus" },
- "decimals": null,
- "description": "",
- "fieldConfig": {
- "defaults": {
- "custom": {}
- },
- "overrides": []
- },
- "format": "none",
- "gauge": {
- "maxValue": 100,
- "minValue": 0,
- "show": false,
- "thresholdLabels": false,
- "thresholdMarkers": true
- },
- "gridPos": {
- "h": 3,
- "w": 6,
- "x": 0,
- "y": 1
- },
- "id": 8,
- "interval": null,
- "links": [],
- "mappingType": 1,
- "mappingTypes": [
- {
- "name": "value to text",
- "value": 1
- },
- {
- "name": "range to text",
- "value": 2
- }
- ],
- "maxDataPoints": 100,
- "nullPointMode": "connected",
- "nullText": null,
- "postfix": "",
- "postfixFontSize": "50%",
- "prefix": "",
- "prefixFontSize": "50%",
- "rangeMaps": [
- {
- "from": "null",
- "text": "N/A",
- "to": "null"
- }
- ],
- "repeat": "instance",
- "repeatDirection": "h",
- "sparkline": {
- "fillColor": "rgba(31, 118, 189, 0.18)",
- "full": false,
- "lineColor": "rgb(31, 120, 193)",
- "show": false
- },
- "tableColumn": "",
- "targets": [
- {
- "expr": "nginx_up{instance=~\"$instance\"}",
- "format": "time_series",
- "instant": false,
- "intervalFactor": 1,
- "refId": "A"
- }
- ],
- "thresholds": "1,1",
- "timeFrom": null,
- "timeShift": null,
- "title": "NGINX Status for $instance",
- "type": "singlestat",
- "valueFontSize": "100%",
- "valueMaps": [
- {
- "op": "=",
- "text": "Down",
- "value": "0"
- },
- {
- "op": "=",
- "text": "Up",
- "value": "1"
- }
- ],
- "valueName": "current"
- },
- {
- "collapsed": false,
- "datasource": { "type": "prometheus", "uid": "prometheus" },
- "gridPos": {
- "h": 1,
- "w": 24,
- "x": 0,
- "y": 7
- },
- "id": 4,
- "panels": [],
- "title": "Metrics",
- "type": "row"
- },
- {
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
- "datasource": { "type": "prometheus", "uid": "prometheus" },
- "decimals": null,
- "description": "",
- "fieldConfig": {
- "defaults": {
- "custom": {}
- },
- "overrides": []
- },
- "fill": 1,
- "fillGradient": 0,
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 8
- },
- "hiddenSeries": false,
- "id": 10,
- "legend": {
- "alignAsTable": true,
- "avg": true,
- "current": true,
- "hideEmpty": false,
- "max": true,
- "min": true,
- "rightSide": false,
- "show": true,
- "total": false,
- "values": true
- },
- "lines": true,
- "linewidth": 1,
- "links": [],
- "nullPointMode": "null",
- "options": {
- "dataLinks": []
- },
- "percentage": false,
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
- "targets": [
- {
- "expr": "irate(nginx_connections_accepted{instance=~\"$instance\"}[5m])",
- "format": "time_series",
- "instant": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "{{instance}}",
- "refId": "A"
- },
- {
- "expr": "sum(irate(nginx_connections_accepted[5m]))",
- "interval": "",
- "legendFormat": "total accepted",
- "refId": "D"
- }
- ],
- "thresholds": [],
- "timeFrom": null,
- "timeRegions": [],
- "timeShift": null,
- "title": "Accepted Connections",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
- },
- "type": "graph",
- "xaxis": {
- "buckets": null,
- "mode": "time",
- "name": null,
- "show": true,
- "values": []
- },
- "yaxes": [
- {
- "decimals": 1,
- "format": "short",
- "label": "Connections (rate)",
- "logBase": 1,
- "max": null,
- "min": null,
- "show": true
- },
- {
- "format": "short",
- "label": "",
- "logBase": 1,
- "max": null,
- "min": null,
- "show": true
- }
- ],
- "yaxis": {
- "align": false,
- "alignLevel": null
- }
- },
- {
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
- "datasource": { "type": "prometheus", "uid": "prometheus" },
- "decimals": null,
- "description": "",
- "fieldConfig": {
- "defaults": {
- "custom": {}
- },
- "overrides": []
- },
- "fill": 1,
- "fillGradient": 0,
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 8
- },
- "hiddenSeries": false,
- "id": 19,
- "legend": {
- "alignAsTable": true,
- "avg": true,
- "current": true,
- "hideEmpty": false,
- "max": true,
- "min": true,
- "rightSide": false,
- "show": true,
- "total": false,
- "values": true
- },
- "lines": true,
- "linewidth": 1,
- "links": [],
- "nullPointMode": "null",
- "options": {
- "dataLinks": []
- },
- "percentage": false,
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
- "targets": [
- {
- "expr": "irate(nginx_connections_handled{instance=~\"$instance\"}[5m])",
- "format": "time_series",
- "instant": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "{{instance}} handled",
- "refId": "B"
- },
- {
- "expr": "sum(irate(nginx_connections_handled[5m]))",
- "interval": "",
- "legendFormat": "total handled",
- "refId": "C"
- }
- ],
- "thresholds": [],
- "timeFrom": null,
- "timeRegions": [],
- "timeShift": null,
- "title": "Processed Connections",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
- },
- "type": "graph",
- "xaxis": {
- "buckets": null,
- "mode": "time",
- "name": null,
- "show": true,
- "values": []
- },
- "yaxes": [
- {
- "decimals": 1,
- "format": "short",
- "label": "Connections (rate)",
- "logBase": 1,
- "max": null,
- "min": null,
- "show": true
- },
- {
- "format": "short",
- "label": "",
- "logBase": 1,
- "max": null,
- "min": null,
- "show": true
- }
- ],
- "yaxis": {
- "align": false,
- "alignLevel": null
- }
- },
- {
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
- "datasource": { "type": "prometheus", "uid": "prometheus" },
- "decimals": 0,
- "fieldConfig": {
- "defaults": {
- "custom": {}
- },
- "overrides": []
- },
- "fill": 1,
- "fillGradient": 0,
- "gridPos": {
- "h": 14,
- "w": 6,
- "x": 0,
- "y": 18
- },
- "hiddenSeries": false,
- "id": 12,
- "legend": {
- "alignAsTable": true,
- "avg": true,
- "current": true,
- "max": true,
- "min": true,
- "rightSide": false,
- "show": true,
- "total": false,
- "values": true
- },
- "lines": true,
- "linewidth": 1,
- "links": [],
- "nullPointMode": "null",
- "options": {
- "dataLinks": []
- },
- "percentage": false,
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
- "targets": [
- {
- "expr": "nginx_connections_active{instance=~\"$instance\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "{{instance}}",
- "refId": "A"
- },
- {
- "expr": "sum(nginx_connections_active{instance=~\"$instance\"})",
- "interval": "",
- "legendFormat": "total",
- "refId": "B"
- }
- ],
- "thresholds": [],
- "timeFrom": null,
- "timeRegions": [],
- "timeShift": null,
- "title": "Active Connections",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
- },
- "type": "graph",
- "xaxis": {
- "buckets": null,
- "mode": "time",
- "name": null,
- "show": true,
- "values": []
- },
- "yaxes": [
- {
- "decimals": 0,
- "format": "short",
- "label": "Connections",
- "logBase": 1,
- "max": null,
- "min": null,
- "show": true
- },
- {
- "format": "short",
- "label": null,
- "logBase": 1,
- "max": null,
- "min": null,
- "show": true
- }
- ],
- "yaxis": {
- "align": false,
- "alignLevel": null
- }
- },
- {
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
- "datasource": { "type": "prometheus", "uid": "prometheus" },
- "decimals": 0,
- "fieldConfig": {
- "defaults": {
- "custom": {}
- },
- "overrides": []
- },
- "fill": 1,
- "fillGradient": 0,
- "gridPos": {
- "h": 14,
- "w": 6,
- "x": 6,
- "y": 18
- },
- "hiddenSeries": false,
- "id": 22,
- "legend": {
- "alignAsTable": true,
- "avg": true,
- "current": true,
- "max": true,
- "min": true,
- "rightSide": false,
- "show": true,
- "total": false,
- "values": true
- },
- "lines": true,
- "linewidth": 1,
- "links": [],
- "nullPointMode": "null",
- "options": {
- "dataLinks": []
- },
- "percentage": false,
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
- "targets": [
- {
- "expr": "nginx_connections_reading{instance=~\"$instance\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "{{instance}}",
- "refId": "B"
- },
- {
- "expr": "sum(nginx_connections_reading{instance=~\"$instance\"})",
- "interval": "",
- "legendFormat": "total",
- "refId": "A"
- }
- ],
- "thresholds": [],
- "timeFrom": null,
- "timeRegions": [],
- "timeShift": null,
- "title": "Reading Connections",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
- },
- "type": "graph",
- "xaxis": {
- "buckets": null,
- "mode": "time",
- "name": null,
- "show": true,
- "values": []
- },
- "yaxes": [
- {
- "decimals": 0,
- "format": "short",
- "label": "Connections",
- "logBase": 1,
- "max": null,
- "min": null,
- "show": true
- },
- {
- "format": "short",
- "label": null,
- "logBase": 1,
- "max": null,
- "min": null,
- "show": true
- }
- ],
- "yaxis": {
- "align": false,
- "alignLevel": null
- }
- },
- {
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
- "datasource": { "type": "prometheus", "uid": "prometheus" },
- "decimals": 0,
- "fieldConfig": {
- "defaults": {
- "custom": {}
- },
- "overrides": []
- },
- "fill": 1,
- "fillGradient": 0,
- "gridPos": {
- "h": 14,
- "w": 6,
- "x": 12,
- "y": 18
- },
- "hiddenSeries": false,
- "id": 21,
- "legend": {
- "alignAsTable": true,
- "avg": true,
- "current": true,
- "max": true,
- "min": true,
- "rightSide": false,
- "show": true,
- "total": false,
- "values": true
- },
- "lines": true,
- "linewidth": 1,
- "links": [],
- "nullPointMode": "null",
- "options": {
- "dataLinks": []
- },
- "percentage": false,
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
- "targets": [
- {
- "expr": "nginx_connections_waiting{instance=~\"$instance\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "{{instance}}",
- "refId": "C"
- },
- {
- "expr": "sum(nginx_connections_waiting{instance=~\"$instance\"})",
- "interval": "",
- "legendFormat": "total",
- "refId": "A"
- }
- ],
- "thresholds": [],
- "timeFrom": null,
- "timeRegions": [],
- "timeShift": null,
- "title": "Waiting Connections",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
- },
- "type": "graph",
- "xaxis": {
- "buckets": null,
- "mode": "time",
- "name": null,
- "show": true,
- "values": []
- },
- "yaxes": [
- {
- "decimals": 0,
- "format": "short",
- "label": "Connections",
- "logBase": 1,
- "max": null,
- "min": null,
- "show": true
- },
- {
- "format": "short",
- "label": null,
- "logBase": 1,
- "max": null,
- "min": null,
- "show": true
- }
- ],
- "yaxis": {
- "align": false,
- "alignLevel": null
- }
- },
- {
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
- "datasource": { "type": "prometheus", "uid": "prometheus" },
- "decimals": 0,
- "fieldConfig": {
- "defaults": {
- "custom": {}
- },
- "overrides": []
- },
- "fill": 1,
- "fillGradient": 0,
- "gridPos": {
- "h": 14,
- "w": 6,
- "x": 18,
- "y": 18
- },
- "hiddenSeries": false,
- "id": 20,
- "legend": {
- "alignAsTable": true,
- "avg": true,
- "current": true,
- "max": true,
- "min": true,
- "rightSide": false,
- "show": true,
- "total": false,
- "values": true
- },
- "lines": true,
- "linewidth": 1,
- "links": [],
- "nullPointMode": "null",
- "options": {
- "dataLinks": []
- },
- "percentage": false,
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
- "targets": [
- {
- "expr": "nginx_connections_writing{instance=~\"$instance\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "{{instance}}",
- "refId": "D"
- },
- {
- "expr": "sum(nginx_connections_writing{instance=~\"$instance\"})",
- "interval": "",
- "legendFormat": "total",
- "refId": "A"
- }
- ],
- "thresholds": [],
- "timeFrom": null,
- "timeRegions": [],
- "timeShift": null,
- "title": "Writing Connections",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
- },
- "type": "graph",
- "xaxis": {
- "buckets": null,
- "mode": "time",
- "name": null,
- "show": true,
- "values": []
- },
- "yaxes": [
- {
- "decimals": 0,
- "format": "short",
- "label": "Connections",
- "logBase": 1,
- "max": null,
- "min": null,
- "show": true
- },
- {
- "format": "short",
- "label": null,
- "logBase": 1,
- "max": null,
- "min": null,
- "show": true
- }
- ],
- "yaxis": {
- "align": false,
- "alignLevel": null
- }
- },
- {
- "aliasColors": {},
- "bars": false,
- "dashLength": 10,
- "dashes": false,
- "datasource": { "type": "prometheus", "uid": "prometheus" },
- "fieldConfig": {
- "defaults": {
- "custom": {}
- },
- "overrides": []
- },
- "fill": 1,
- "fillGradient": 0,
- "gridPos": {
- "h": 10,
- "w": 24,
- "x": 0,
- "y": 32
- },
- "hiddenSeries": false,
- "id": 15,
- "legend": {
- "alignAsTable": true,
- "avg": true,
- "current": true,
- "hideEmpty": false,
- "hideZero": false,
- "max": true,
- "min": true,
- "rightSide": true,
- "show": true,
- "total": false,
- "values": true
- },
- "lines": true,
- "linewidth": 1,
- "links": [],
- "nullPointMode": "null",
- "options": {
- "dataLinks": []
- },
- "percentage": false,
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
- "targets": [
- {
- "expr": "irate(nginx_http_requests_total{instance=~\"$instance\"}[2m])",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "{{instance}} qps",
- "refId": "A"
- },
- {
- "expr": "sum(irate(nginx_http_requests_total[5m]))",
- "interval": "",
- "legendFormat": "total qps",
- "refId": "B"
- }
- ],
- "thresholds": [],
- "timeFrom": null,
- "timeRegions": [],
- "timeShift": null,
- "title": "QPS",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
- },
- "type": "graph",
- "xaxis": {
- "buckets": null,
- "mode": "time",
- "name": null,
- "show": true,
- "values": []
- },
- "yaxes": [
- {
- "format": "short",
- "label": null,
- "logBase": 1,
- "max": null,
- "min": null,
- "show": true
- },
- {
- "format": "short",
- "label": null,
- "logBase": 1,
- "max": null,
- "min": null,
- "show": true
- }
- ],
- "yaxis": {
- "align": false,
- "alignLevel": null
- }
- }
- ],
- "schemaVersion": 22,
- "style": "dark",
- "tags": ["nginx", "prometheus", "nginx prometheus exporter"],
- "templating": {
- "list": [
- {
- "current": {
- "selected": false,
- "text": "default",
- "value": "default"
- },
- "hide": 0,
- "includeAll": false,
- "label": "datasource",
- "multi": false,
- "name": "DS_PROMETHEUS",
- "options": [],
- "query": "prometheus",
- "refresh": 1,
- "regex": "",
- "skipUrlSync": false,
- "type": "datasource"
- },
- {
- "allValue": null,
- "current": {},
- "datasource": { "type": "prometheus", "uid": "prometheus" },
- "definition": "label_values(nginx_up, instance)",
- "hide": 0,
- "includeAll": true,
- "index": -1,
- "label": "",
- "multi": true,
- "name": "instance",
- "options": [],
- "query": "label_values(nginx_up, instance)",
- "refresh": 1,
- "regex": "",
- "skipUrlSync": false,
- "sort": 0,
- "tagValuesQuery": "",
- "tags": [],
- "tagsQuery": "",
- "type": "query",
- "useTags": false
- }
- ]
- },
- "time": {
- "from": "now-24h",
- "to": "now"
- },
- "timepicker": {
- "refresh_intervals": [
- "10s",
- "30s",
- "1m",
- "5m",
- "15m",
- "30m",
- "1h",
- "2h",
- "1d"
- ],
- "time_options": ["5m", "15m", "1h", "6h", "12h", "24h", "2d", "7d", "30d"]
- },
- "timezone": "browser",
- "title": "NGINX Overview",
- "refresh": "5s",
- "uid": "nginx-overview",
- "variables": {
- "list": []
- },
- "version": 2
-}
diff --git a/monitoring/grafana/provisioning/dashboards/scraping-status.json b/monitoring/grafana/provisioning/dashboards/scraping-status.json
deleted file mode 100644
index 7a0e431..0000000
--- a/monitoring/grafana/provisioning/dashboards/scraping-status.json
+++ /dev/null
@@ -1,415 +0,0 @@
-{
- "annotations": {
- "list": []
- },
- "editable": true,
- "fiscalYearStartMonth": 0,
- "graphTooltip": 1,
- "id": null,
- "links": [],
- "liveNow": false,
- "panels": [
- {
- "collapsed": false,
- "gridPos": { "h": 1, "w": 24, "x": 0, "y": 0 },
- "id": 100,
- "panels": [],
- "title": "학식 데이터 수집 현황",
- "type": "row"
- },
- {
- "datasource": { "type": "postgres", "uid": "postgres" },
- "fieldConfig": {
- "defaults": {
- "color": { "mode": "thresholds" },
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- { "color": "green", "value": null },
- { "color": "yellow", "value": 1 },
- { "color": "red", "value": 2 }
- ]
- },
- "unit": "none"
- },
- "overrides": []
- },
- "gridPos": { "h": 4, "w": 12, "x": 0, "y": 1 },
- "id": 5,
- "options": {
- "colorMode": "background",
- "graphMode": "none",
- "justifyMode": "center",
- "orientation": "auto",
- "reduceOptions": {
- "calcs": ["lastNotNull"],
- "fields": "",
- "values": false
- },
- "textMode": "value_and_name"
- },
- "pluginVersion": "12.3.0",
- "targets": [
- {
- "datasource": { "type": "postgres", "uid": "postgres" },
- "editorMode": "code",
- "format": "table",
- "rawQuery": true,
- "rawSql": "SELECT NOW() AS \"time\", COUNT(*) AS \"지연 식당 수\" FROM monitoring_cafeteria_status WHERE lag_days > 0",
- "refId": "A"
- }
- ],
- "title": "지연 식당 수",
- "type": "stat"
- },
- {
- "datasource": { "type": "postgres", "uid": "postgres" },
- "fieldConfig": {
- "defaults": {
- "color": { "mode": "thresholds" },
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- { "color": "green", "value": null },
- { "color": "yellow", "value": 1 },
- { "color": "red", "value": 2 }
- ]
- },
- "unit": "none"
- },
- "overrides": []
- },
- "gridPos": { "h": 4, "w": 12, "x": 12, "y": 1 },
- "id": 2,
- "options": {
- "colorMode": "background",
- "graphMode": "none",
- "justifyMode": "center",
- "orientation": "auto",
- "reduceOptions": {
- "calcs": ["max"],
- "fields": "",
- "values": false
- },
- "textMode": "value_and_name"
- },
- "pluginVersion": "12.3.0",
- "targets": [
- {
- "datasource": { "type": "postgres", "uid": "postgres" },
- "editorMode": "code",
- "format": "table",
- "rawQuery": true,
- "rawSql": "SELECT NOW() AS \"time\", MAX(lag_days) AS \"최대 지연 일수\" FROM monitoring_cafeteria_status",
- "refId": "A"
- }
- ],
- "title": "최대 지연 일수",
- "type": "stat"
- },
- {
- "datasource": { "type": "postgres", "uid": "postgres" },
- "fieldConfig": {
- "defaults": {
- "color": { "mode": "thresholds" },
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- { "color": "green", "value": null },
- { "color": "yellow", "value": 1 },
- { "color": "red", "value": 2 }
- ]
- }
- },
- "overrides": [
- {
- "matcher": { "id": "byName", "options": "lag_days" },
- "properties": [
- {
- "id": "custom.displayMode",
- "value": "color-background"
- },
- {
- "id": "displayName",
- "value": "지연 일수"
- },
- {
- "id": "thresholds",
- "value": {
- "mode": "absolute",
- "steps": [
- { "color": "green", "value": null },
- { "color": "yellow", "value": 1 },
- { "color": "red", "value": 2 }
- ]
- }
- }
- ]
- },
- {
- "matcher": { "id": "byName", "options": "name" },
- "properties": [{ "id": "displayName", "value": "식당명" }]
- },
- {
- "matcher": { "id": "byName", "options": "last_date" },
- "properties": [
- { "id": "displayName", "value": "데이터 수집 기준일" }
- ]
- }
- ]
- },
- "gridPos": { "h": 8, "w": 24, "x": 0, "y": 5 },
- "id": 1,
- "options": {
- "showHeader": true,
- "sortBy": [{ "desc": true, "displayName": "지연 일수" }]
- },
- "pluginVersion": "12.3.0",
- "targets": [
- {
- "datasource": { "type": "postgres", "uid": "postgres" },
- "editorMode": "code",
- "format": "table",
- "rawQuery": true,
- "rawSql": "SELECT name, last_date, lag_days FROM monitoring_cafeteria_status ORDER BY lag_days DESC NULLS LAST",
- "refId": "A"
- }
- ],
- "title": "식당별 데이터 수집 기준일 및 지연 일수",
- "transformations": [
- {
- "id": "organize",
- "options": {
- "excludeByName": { "Time": true },
- "indexByName": {},
- "renameByName": {}
- }
- }
- ],
- "type": "table"
- },
- {
- "collapsed": false,
- "gridPos": { "h": 1, "w": 24, "x": 0, "y": 13 },
- "id": 101,
- "panels": [],
- "title": "셔틀버스 수집 현황",
- "type": "row"
- },
- {
- "datasource": { "type": "postgres", "uid": "postgres" },
- "fieldConfig": {
- "defaults": {
- "color": { "mode": "thresholds" },
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- { "color": "green", "value": null },
- { "color": "yellow", "value": 1 },
- { "color": "red", "value": 2 }
- ]
- },
- "unit": "none"
- },
- "overrides": []
- },
- "gridPos": { "h": 4, "w": 12, "x": 0, "y": 14 },
- "id": 6,
- "options": {
- "colorMode": "background",
- "graphMode": "none",
- "justifyMode": "center",
- "orientation": "auto",
- "reduceOptions": {
- "calcs": ["lastNotNull"],
- "fields": "",
- "values": false
- },
- "textMode": "value_and_name"
- },
- "pluginVersion": "12.3.0",
- "targets": [
- {
- "datasource": { "type": "postgres", "uid": "postgres" },
- "editorMode": "code",
- "format": "table",
- "rawQuery": true,
- "rawSql": "SELECT NOW() AS \"time\", COUNT(*) AS \"지연 노선 수\" FROM monitoring_shuttle_status WHERE status = 'DELAYED'",
- "refId": "A"
- }
- ],
- "title": "지연 노선 수",
- "type": "stat"
- },
- {
- "datasource": { "type": "postgres", "uid": "postgres" },
- "fieldConfig": {
- "defaults": {
- "color": { "mode": "thresholds" },
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- { "color": "green", "value": null },
- { "color": "yellow", "value": 60 },
- { "color": "red", "value": 120 }
- ]
- },
- "unit": "none"
- },
- "overrides": []
- },
- "gridPos": { "h": 4, "w": 12, "x": 12, "y": 14 },
- "id": 4,
- "options": {
- "colorMode": "background",
- "graphMode": "none",
- "justifyMode": "center",
- "orientation": "auto",
- "reduceOptions": {
- "calcs": ["lastNotNull"],
- "fields": "",
- "values": false
- },
- "textMode": "value_and_name"
- },
- "pluginVersion": "12.3.0",
- "targets": [
- {
- "datasource": { "type": "postgres", "uid": "postgres" },
- "editorMode": "code",
- "format": "table",
- "rawQuery": true,
- "rawSql": "SELECT NOW() AS \"time\", ROUND(EXTRACT(EPOCH FROM (NOW() - MIN(last_success_at))) / 60) AS \"경과 시간(분)\" FROM monitoring_shuttle_status",
- "refId": "A"
- }
- ],
- "title": "마지막 성공 이후 경과 시간(분)",
- "type": "stat"
- },
- {
- "datasource": { "type": "postgres", "uid": "postgres" },
- "fieldConfig": {
- "defaults": {
- "color": { "mode": "thresholds" },
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [{ "color": "green", "value": null }]
- }
- },
- "overrides": [
- {
- "matcher": { "id": "byName", "options": "route_name" },
- "properties": [{ "id": "displayName", "value": "노선명" }]
- },
- {
- "matcher": { "id": "byName", "options": "updated_at" },
- "properties": [
- { "id": "displayName", "value": "원본 데이터 갱신 시각" },
- { "id": "unit", "value": "dateTimeAsLocal" }
- ]
- },
- {
- "matcher": { "id": "byName", "options": "last_success_at" },
- "properties": [
- { "id": "displayName", "value": "마지막 스크래핑 성공 시각" },
- { "id": "unit", "value": "dateTimeAsLocal" }
- ]
- },
- {
- "matcher": { "id": "byName", "options": "minutes_since_success" },
- "properties": [
- { "id": "displayName", "value": "경과(분)" },
- {
- "id": "thresholds",
- "value": {
- "mode": "absolute",
- "steps": [
- { "color": "green", "value": null },
- { "color": "yellow", "value": 60 },
- { "color": "red", "value": 120 }
- ]
- }
- },
- {
- "id": "custom.displayMode",
- "value": "color-background"
- }
- ]
- },
- {
- "matcher": { "id": "byName", "options": "status" },
- "properties": [
- { "id": "displayName", "value": "상태" },
- {
- "id": "mappings",
- "value": [
- {
- "type": "value",
- "options": {
- "OK": { "color": "green", "index": 0, "text": "OK" },
- "DELAYED": {
- "color": "red",
- "index": 1,
- "text": "DELAYED"
- }
- }
- }
- ]
- },
- {
- "id": "custom.displayMode",
- "value": "color-background"
- }
- ]
- }
- ]
- },
- "gridPos": { "h": 8, "w": 24, "x": 0, "y": 18 },
- "id": 3,
- "options": {
- "showHeader": true,
- "sortBy": [{ "desc": true, "displayName": "상태" }]
- },
- "pluginVersion": "12.3.0",
- "targets": [
- {
- "datasource": { "type": "postgres", "uid": "postgres" },
- "editorMode": "code",
- "format": "table",
- "rawQuery": true,
- "rawSql": "SELECT route_name, updated_at, last_success_at, minutes_since_success, status FROM monitoring_shuttle_status ORDER BY CASE status WHEN 'DELAYED' THEN 0 ELSE 1 END, route_name",
- "refId": "A"
- }
- ],
- "title": "노선별 스크래핑 상태",
- "transformations": [
- {
- "id": "organize",
- "options": {
- "excludeByName": { "Time": true },
- "indexByName": {},
- "renameByName": {}
- }
- }
- ],
- "type": "table"
- }
- ],
- "refresh": "1m",
- "schemaVersion": 39,
- "style": "dark",
- "tags": ["scraping", "monitoring"],
- "templating": { "list": [] },
- "time": { "from": "now-6h", "to": "now" },
- "timepicker": {},
- "timezone": "browser",
- "title": "Scraping Status",
- "uid": "scraping-status",
- "version": 0
-}
diff --git a/monitoring/grafana/provisioning/dashboards/supabase.json b/monitoring/grafana/provisioning/dashboards/supabase.json
deleted file mode 100644
index ebd0ec3..0000000
--- a/monitoring/grafana/provisioning/dashboards/supabase.json
+++ /dev/null
@@ -1,9860 +0,0 @@
-{
- "__inputs": [
- {
- "name": "DS_PROMETHEUS",
- "label": "prometheus",
- "description": "",
- "type": "datasource",
- "pluginId": "prometheus",
- "pluginName": "Prometheus"
- }
- ],
- "__elements": {},
- "__requires": [
- {
- "type": "panel",
- "id": "gauge",
- "name": "Gauge",
- "version": ""
- },
- {
- "type": "grafana",
- "id": "grafana",
- "name": "Grafana",
- "version": "12.2.0-16711121739"
- },
- {
- "type": "datasource",
- "id": "prometheus",
- "name": "Prometheus",
- "version": "1.0.0"
- },
- {
- "type": "panel",
- "id": "stat",
- "name": "Stat",
- "version": ""
- },
- {
- "type": "panel",
- "id": "timeseries",
- "name": "Time series",
- "version": ""
- }
- ],
- "annotations": {
- "list": [
- {
- "builtIn": 1,
- "datasource": {
- "type": "grafana",
- "uid": "-- Grafana --"
- },
- "enable": true,
- "hide": true,
- "iconColor": "rgba(0, 211, 255, 1)",
- "name": "Annotations & Alerts",
- "type": "dashboard"
- }
- ]
- },
- "editable": true,
- "fiscalYearStartMonth": 0,
- "graphTooltip": 0,
- "id": null,
- "links": [],
- "panels": [
- {
- "collapsed": false,
- "gridPos": {
- "h": 1,
- "w": 24,
- "x": 0,
- "y": 0
- },
- "id": 261,
- "panels": [],
- "title": "Quick CPU / Mem / Disk",
- "type": "row"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "description": "Busy state of all CPU cores together",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "thresholds"
- },
- "mappings": [
- {
- "options": {
- "match": "null",
- "result": {
- "text": "N/A"
- }
- },
- "type": "special"
- }
- ],
- "max": 100,
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "rgba(50, 172, 45, 0.97)",
- "value": 0
- },
- {
- "color": "rgba(237, 129, 40, 0.89)",
- "value": 85
- },
- {
- "color": "rgba(245, 54, 54, 0.9)",
- "value": 95
- }
- ]
- },
- "unit": "percent"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 4,
- "w": 3,
- "x": 0,
- "y": 1
- },
- "id": 20,
- "options": {
- "minVizHeight": 75,
- "minVizWidth": 75,
- "orientation": "horizontal",
- "reduceOptions": {
- "calcs": ["lastNotNull"],
- "fields": "",
- "values": false
- },
- "showThresholdLabels": false,
- "showThresholdMarkers": true,
- "sizing": "auto"
- },
- "pluginVersion": "12.2.0-16711121739",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "clamp_min(100 - (avg(rate(node_cpu_seconds_total{mode=\"idle\", supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])) by (instance) * 100), 0)",
- "hide": false,
- "intervalFactor": 1,
- "legendFormat": "",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "CPU Busy",
- "type": "gauge"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "description": "Busy state of all CPU cores together (5 min average)",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "thresholds"
- },
- "mappings": [
- {
- "options": {
- "match": "null",
- "result": {
- "text": "N/A"
- }
- },
- "type": "special"
- }
- ],
- "max": 100,
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "rgba(50, 172, 45, 0.97)",
- "value": 0
- },
- {
- "color": "rgba(237, 129, 40, 0.89)",
- "value": 85
- },
- {
- "color": "rgba(245, 54, 54, 0.9)",
- "value": 95
- }
- ]
- },
- "unit": "percent"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 4,
- "w": 3,
- "x": 3,
- "y": 1
- },
- "id": 155,
- "options": {
- "minVizHeight": 75,
- "minVizWidth": 75,
- "orientation": "horizontal",
- "reduceOptions": {
- "calcs": ["lastNotNull"],
- "fields": "",
- "values": false
- },
- "showThresholdLabels": false,
- "showThresholdMarkers": true,
- "sizing": "auto"
- },
- "pluginVersion": "12.2.0-16711121739",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "avg(node_load5{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}) / count(count(node_cpu_seconds_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}) by (cpu)) * 100",
- "format": "time_series",
- "hide": false,
- "intervalFactor": 1,
- "refId": "A",
- "step": 240
- }
- ],
- "title": "Sys Load (5m avg)",
- "type": "gauge"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "description": "Busy state of all CPU cores together (15 min average)",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "thresholds"
- },
- "mappings": [
- {
- "options": {
- "match": "null",
- "result": {
- "text": "N/A"
- }
- },
- "type": "special"
- }
- ],
- "max": 100,
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "rgba(50, 172, 45, 0.97)",
- "value": 0
- },
- {
- "color": "rgba(237, 129, 40, 0.89)",
- "value": 85
- },
- {
- "color": "rgba(245, 54, 54, 0.9)",
- "value": 95
- }
- ]
- },
- "unit": "percent"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 4,
- "w": 3,
- "x": 6,
- "y": 1
- },
- "id": 19,
- "options": {
- "minVizHeight": 75,
- "minVizWidth": 75,
- "orientation": "horizontal",
- "reduceOptions": {
- "calcs": ["lastNotNull"],
- "fields": "",
- "values": false
- },
- "showThresholdLabels": false,
- "showThresholdMarkers": true,
- "sizing": "auto"
- },
- "pluginVersion": "12.2.0-16711121739",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "avg(node_load15{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}) / count(count(node_cpu_seconds_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}) by (cpu)) * 100",
- "hide": false,
- "intervalFactor": 1,
- "refId": "A",
- "step": 240
- }
- ],
- "title": "Sys Load (15m avg)",
- "type": "gauge"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "description": "Non available RAM memory",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "thresholds"
- },
- "decimals": 0,
- "mappings": [],
- "max": 100,
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "rgba(50, 172, 45, 0.97)",
- "value": 0
- },
- {
- "color": "rgba(237, 129, 40, 0.89)",
- "value": 80
- },
- {
- "color": "rgba(245, 54, 54, 0.9)",
- "value": 90
- }
- ]
- },
- "unit": "percent"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 4,
- "w": 3,
- "x": 9,
- "y": 1
- },
- "id": 16,
- "options": {
- "minVizHeight": 75,
- "minVizWidth": 75,
- "orientation": "horizontal",
- "reduceOptions": {
- "calcs": ["lastNotNull"],
- "fields": "",
- "values": false
- },
- "showThresholdLabels": false,
- "showThresholdMarkers": true,
- "sizing": "auto"
- },
- "pluginVersion": "12.2.0-16711121739",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "editorMode": "code",
- "expr": "(1 - (node_memory_MemAvailable_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"} / node_memory_MemTotal_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"})) * 100\n",
- "format": "time_series",
- "hide": true,
- "intervalFactor": 1,
- "range": true,
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "editorMode": "code",
- "expr": "((node_memory_MemTotal_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"} - node_memory_MemFree_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"} - node_memory_Buffers_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"} - node_memory_Cached_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}) / node_memory_MemTotal_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}) * 100\n\n",
- "format": "time_series",
- "hide": false,
- "intervalFactor": 1,
- "range": true,
- "refId": "B",
- "step": 240
- }
- ],
- "title": "RAM Used",
- "type": "gauge"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "description": "Total RAM usage - including buffers and cache",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "thresholds"
- },
- "mappings": [
- {
- "options": {
- "match": "null",
- "result": {
- "text": "N/A"
- }
- },
- "type": "special"
- }
- ],
- "max": 100,
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "rgba(50, 172, 45, 0.97)",
- "value": 0
- },
- {
- "color": "rgba(237, 129, 40, 0.89)",
- "value": 75
- },
- {
- "color": "rgba(245, 54, 54, 0.9)",
- "value": 90
- }
- ]
- },
- "unit": "percent"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 4,
- "w": 3,
- "x": 12,
- "y": 1
- },
- "id": 21,
- "options": {
- "minVizHeight": 75,
- "minVizWidth": 75,
- "orientation": "horizontal",
- "reduceOptions": {
- "calcs": ["lastNotNull"],
- "fields": "",
- "values": false
- },
- "showThresholdLabels": false,
- "showThresholdMarkers": true,
- "sizing": "auto"
- },
- "pluginVersion": "12.2.0-16711121739",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "editorMode": "code",
- "expr": "((node_memory_MemTotal_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"} - node_memory_MemFree_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}) / node_memory_MemTotal_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}) * 100\n",
- "intervalFactor": 1,
- "range": true,
- "refId": "A",
- "step": 240
- }
- ],
- "title": "RAM + Cache Used",
- "type": "gauge"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "description": "Used Root FS",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "thresholds"
- },
- "mappings": [
- {
- "options": {
- "match": "null",
- "result": {
- "text": "N/A"
- }
- },
- "type": "special"
- }
- ],
- "max": 100,
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "rgba(50, 172, 45, 0.97)",
- "value": 0
- },
- {
- "color": "rgba(237, 129, 40, 0.89)",
- "value": 80
- },
- {
- "color": "rgba(245, 54, 54, 0.9)",
- "value": 90
- }
- ]
- },
- "unit": "percent"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 4,
- "w": 3,
- "x": 15,
- "y": 1
- },
- "id": 154,
- "options": {
- "minVizHeight": 75,
- "minVizWidth": 75,
- "orientation": "horizontal",
- "reduceOptions": {
- "calcs": ["lastNotNull"],
- "fields": "",
- "values": false
- },
- "showThresholdLabels": false,
- "showThresholdMarkers": true,
- "sizing": "auto"
- },
- "pluginVersion": "12.2.0-16711121739",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "100 - ((node_filesystem_avail_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\",mountpoint=\"/\",fstype!=\"rootfs\"} * 100) / node_filesystem_size_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\",mountpoint=\"/\",fstype!=\"rootfs\"})",
- "format": "time_series",
- "intervalFactor": 1,
- "refId": "A",
- "step": 240
- }
- ],
- "title": "Root FS Used",
- "type": "gauge"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "description": "Total number of CPU cores",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "thresholds"
- },
- "mappings": [
- {
- "options": {
- "match": "null",
- "result": {
- "text": "N/A"
- }
- },
- "type": "special"
- }
- ],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": 0
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "short"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 2,
- "w": 2,
- "x": 18,
- "y": 1
- },
- "id": 14,
- "maxDataPoints": 100,
- "options": {
- "colorMode": "none",
- "graphMode": "none",
- "justifyMode": "auto",
- "orientation": "horizontal",
- "percentChangeColorMode": "standard",
- "reduceOptions": {
- "calcs": ["lastNotNull"],
- "fields": "",
- "values": false
- },
- "showPercentChange": false,
- "textMode": "auto",
- "wideLayout": true
- },
- "pluginVersion": "12.2.0-16711121739",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "count(count(node_cpu_seconds_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}) by (cpu))",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "CPU Cores",
- "type": "stat"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "description": "System uptime",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "thresholds"
- },
- "decimals": 1,
- "mappings": [
- {
- "options": {
- "match": "null",
- "result": {
- "text": "N/A"
- }
- },
- "type": "special"
- }
- ],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": 0
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "s"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 2,
- "w": 2,
- "x": 20,
- "y": 1
- },
- "id": 15,
- "maxDataPoints": 100,
- "options": {
- "colorMode": "none",
- "graphMode": "none",
- "justifyMode": "auto",
- "orientation": "horizontal",
- "percentChangeColorMode": "standard",
- "reduceOptions": {
- "calcs": ["lastNotNull"],
- "fields": "",
- "values": false
- },
- "showPercentChange": false,
- "textMode": "auto",
- "wideLayout": true
- },
- "pluginVersion": "12.2.0-16711121739",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "exemplar": false,
- "expr": "node_time_seconds{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"} - node_boot_time_seconds{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "Uptime",
- "type": "stat"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "description": "Total SWAP",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "thresholds"
- },
- "decimals": 0,
- "mappings": [
- {
- "options": {
- "match": "null",
- "result": {
- "text": "N/A"
- }
- },
- "type": "special"
- }
- ],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": 0
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "bytes"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 2,
- "w": 2,
- "x": 22,
- "y": 1
- },
- "id": 18,
- "maxDataPoints": 100,
- "options": {
- "colorMode": "none",
- "graphMode": "none",
- "justifyMode": "auto",
- "orientation": "horizontal",
- "percentChangeColorMode": "standard",
- "reduceOptions": {
- "calcs": ["lastNotNull"],
- "fields": "",
- "values": false
- },
- "showPercentChange": false,
- "textMode": "auto",
- "wideLayout": true
- },
- "pluginVersion": "12.2.0-16711121739",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_memory_SwapTotal_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "intervalFactor": 1,
- "refId": "A",
- "step": 240
- }
- ],
- "title": "SWAP Total",
- "type": "stat"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "description": "Total RootFS",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "thresholds"
- },
- "decimals": 0,
- "mappings": [
- {
- "options": {
- "match": "null",
- "result": {
- "text": "N/A"
- }
- },
- "type": "special"
- }
- ],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "rgba(50, 172, 45, 0.97)",
- "value": 0
- },
- {
- "color": "rgba(237, 129, 40, 0.89)",
- "value": 70
- },
- {
- "color": "rgba(245, 54, 54, 0.9)",
- "value": 90
- }
- ]
- },
- "unit": "bytes"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 2,
- "w": 2,
- "x": 18,
- "y": 3
- },
- "id": 23,
- "maxDataPoints": 100,
- "options": {
- "colorMode": "none",
- "graphMode": "none",
- "justifyMode": "auto",
- "orientation": "horizontal",
- "percentChangeColorMode": "standard",
- "reduceOptions": {
- "calcs": ["lastNotNull"],
- "fields": "",
- "values": false
- },
- "showPercentChange": false,
- "textMode": "auto",
- "wideLayout": true
- },
- "pluginVersion": "12.2.0-16711121739",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "exemplar": false,
- "expr": "node_filesystem_size_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\",mountpoint=\"/\",fstype!=\"rootfs\"}",
- "format": "time_series",
- "hide": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "RootFS Total",
- "type": "stat"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "description": "Total data disk capacity",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "thresholds"
- },
- "decimals": 0,
- "mappings": [
- {
- "options": {
- "match": "null",
- "result": {
- "text": "N/A"
- }
- },
- "type": "special"
- }
- ],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "rgba(50, 172, 45, 0.97)",
- "value": 0
- },
- {
- "color": "rgba(237, 129, 40, 0.89)",
- "value": 70
- },
- {
- "color": "rgba(245, 54, 54, 0.9)",
- "value": 90
- }
- ]
- },
- "unit": "bytes"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 2,
- "w": 2,
- "x": 20,
- "y": 3
- },
- "id": 322,
- "maxDataPoints": 100,
- "options": {
- "colorMode": "none",
- "graphMode": "none",
- "justifyMode": "auto",
- "orientation": "horizontal",
- "percentChangeColorMode": "standard",
- "reduceOptions": {
- "calcs": ["lastNotNull"],
- "fields": "",
- "values": false
- },
- "showPercentChange": false,
- "textMode": "auto",
- "wideLayout": true
- },
- "pluginVersion": "12.2.0-16711121739",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "exemplar": false,
- "expr": "node_filesystem_size_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\",mountpoint=\"/data\",fstype!=\"rootfs\"}",
- "format": "time_series",
- "hide": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "",
- "queryType": "measurements",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "Data Disk Total",
- "type": "stat"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "description": "Total RAM",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "thresholds"
- },
- "decimals": 0,
- "mappings": [
- {
- "options": {
- "match": "null",
- "result": {
- "text": "N/A"
- }
- },
- "type": "special"
- }
- ],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": 0
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "bytes"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 2,
- "w": 2,
- "x": 22,
- "y": 3
- },
- "id": 75,
- "maxDataPoints": 100,
- "options": {
- "colorMode": "none",
- "graphMode": "none",
- "justifyMode": "auto",
- "orientation": "horizontal",
- "percentChangeColorMode": "standard",
- "reduceOptions": {
- "calcs": ["lastNotNull"],
- "fields": "",
- "values": false
- },
- "showPercentChange": false,
- "textMode": "auto",
- "wideLayout": true
- },
- "pluginVersion": "12.2.0-16711121739",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_memory_MemTotal_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "intervalFactor": 1,
- "refId": "A",
- "step": 240
- }
- ],
- "title": "RAM Total",
- "type": "stat"
- },
- {
- "collapsed": false,
- "gridPos": {
- "h": 1,
- "w": 24,
- "x": 0,
- "y": 5
- },
- "id": 263,
- "panels": [],
- "title": "Basic CPU / Mem / Net / Disk",
- "type": "row"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "description": "Basic CPU info",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisBorderShow": false,
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "barWidthFactor": 0.6,
- "drawStyle": "line",
- "fillOpacity": 40,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "insertNulls": false,
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "percent"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": 0
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "short"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byName",
- "options": "Busy"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EAB839",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Busy Iowait"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#890F02",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Busy other"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#1F78C1",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Idle"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#052B51",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Idle - Waiting for something to happen"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#052B51",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "guest"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#9AC48A",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "idle"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#052B51",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "iowait"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EAB839",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "irq"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#BF1B00",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "nice"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#C15C17",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "softirq"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#E24D42",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "steal"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#FCE2DE",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "system"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#508642",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "user"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#5195CE",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Busy Iowait"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#890F02",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Idle"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#7EB26D",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Busy System"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EAB839",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Busy User"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A437C",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Busy Other"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#6D1F62",
- "mode": "fixed"
- }
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 7,
- "w": 12,
- "x": 0,
- "y": 6
- },
- "id": 77,
- "maxPerRow": 6,
- "options": {
- "alertThreshold": true,
- "legend": {
- "calcs": [],
- "displayMode": "list",
- "placement": "bottom",
- "showLegend": true,
- "width": 250
- },
- "tooltip": {
- "hideZeros": false,
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "12.2.0-16711121739",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "sum by (instance)(rate(node_cpu_seconds_total{mode=\"system\",supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])) * 100",
- "format": "time_series",
- "hide": false,
- "intervalFactor": 1,
- "legendFormat": "Busy System",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "sum by (instance)(rate(node_cpu_seconds_total{mode='user',supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])) * 100",
- "format": "time_series",
- "hide": false,
- "intervalFactor": 1,
- "legendFormat": "Busy User",
- "refId": "B",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "sum by (instance)(rate(node_cpu_seconds_total{mode='iowait',supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])) * 100",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Busy Iowait",
- "refId": "C",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "sum by (instance)(rate(node_cpu_seconds_total{mode=~\".*irq\",supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])) * 100",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Busy IRQs",
- "refId": "D",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "sum (rate(node_cpu_seconds_total{mode!='idle',mode!='user',mode!='system',mode!='iowait',mode!='irq',mode!='softirq',supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])) * 100",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Busy Other",
- "refId": "E",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "sum by (mode)(rate(node_cpu_seconds_total{mode='idle',supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])) * 100",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Idle",
- "refId": "F",
- "step": 240
- }
- ],
- "title": "CPU Basic",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "description": "Basic memory usage",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisBorderShow": false,
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "barWidthFactor": 0.6,
- "drawStyle": "line",
- "fillOpacity": 40,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "insertNulls": false,
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "normal"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": 0
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "bytes"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byName",
- "options": "Apps"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#629E51",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Buffers"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#614D93",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Cache"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#6D1F62",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Cached"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#511749",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Committed"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#508642",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Free"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A437C",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#CFFAFF",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Inactive"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#584477",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "PageTables"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A50A1",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Page_Tables"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A50A1",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "RAM_Free"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#E0F9D7",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "SWAP Used"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#BF1B00",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Slab"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#806EB7",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Slab_Cache"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#E0752D",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Swap"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#BF1B00",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Swap Used"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#BF1B00",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Swap_Cache"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#C15C17",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Swap_Free"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#2F575E",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Unused"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#EAB839",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "RAM Total"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#E0F9D7",
- "mode": "fixed"
- }
- },
- {
- "id": "custom.fillOpacity",
- "value": 0
- },
- {
- "id": "custom.stacking",
- "value": {
- "group": "A",
- "mode": "none"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "RAM Cache + Buffer"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#052B51",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "RAM Free"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#7EB26D",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Avaliable"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#DEDAF7",
- "mode": "fixed"
- }
- },
- {
- "id": "custom.fillOpacity",
- "value": 0
- },
- {
- "id": "custom.stacking",
- "value": {
- "group": "A",
- "mode": "none"
- }
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 7,
- "w": 12,
- "x": 12,
- "y": 6
- },
- "id": 78,
- "maxPerRow": 6,
- "options": {
- "alertThreshold": true,
- "legend": {
- "calcs": [],
- "displayMode": "list",
- "placement": "bottom",
- "showLegend": true,
- "width": 350
- },
- "tooltip": {
- "hideZeros": false,
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "12.2.0-16711121739",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_memory_MemTotal_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "hide": false,
- "intervalFactor": 1,
- "legendFormat": "RAM Total",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_memory_MemTotal_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"} - node_memory_MemFree_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"} - (node_memory_Cached_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"} + node_memory_Buffers_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"})",
- "format": "time_series",
- "hide": false,
- "intervalFactor": 1,
- "legendFormat": "RAM Used",
- "refId": "B",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_memory_Cached_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"} + node_memory_Buffers_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "RAM Cache + Buffer",
- "refId": "C",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_memory_MemFree_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "RAM Free",
- "refId": "D",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "(node_memory_SwapTotal_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"} - node_memory_SwapFree_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"})",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "SWAP Used",
- "refId": "E",
- "step": 240
- }
- ],
- "title": "Memory Basic",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "description": "Basic network info per interface",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisBorderShow": false,
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "barWidthFactor": 0.6,
- "drawStyle": "line",
- "fillOpacity": 40,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "insertNulls": false,
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": 0
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "bps"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byName",
- "options": "Recv_bytes_eth2"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#7EB26D",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Recv_bytes_lo"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A50A1",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Recv_drop_eth2"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#6ED0E0",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Recv_drop_lo"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#E0F9D7",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Recv_errs_eth2"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#BF1B00",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Recv_errs_lo"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#CCA300",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Trans_bytes_eth2"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#7EB26D",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Trans_bytes_lo"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A50A1",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Trans_drop_eth2"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#6ED0E0",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Trans_drop_lo"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#E0F9D7",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Trans_errs_eth2"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#BF1B00",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "Trans_errs_lo"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#CCA300",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "recv_bytes_lo"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A50A1",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "recv_drop_eth0"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#99440A",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "recv_drop_lo"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#967302",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "recv_errs_eth0"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#BF1B00",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "recv_errs_lo"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#890F02",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "trans_bytes_eth0"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#7EB26D",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "trans_bytes_lo"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#0A50A1",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "trans_drop_eth0"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#99440A",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "trans_drop_lo"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#967302",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "trans_errs_eth0"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#BF1B00",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byName",
- "options": "trans_errs_lo"
- },
- "properties": [
- {
- "id": "color",
- "value": {
- "fixedColor": "#890F02",
- "mode": "fixed"
- }
- }
- ]
- },
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/.*trans.*/"
- },
- "properties": [
- {
- "id": "custom.transform",
- "value": "negative-Y"
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 7,
- "w": 12,
- "x": 0,
- "y": 13
- },
- "id": 74,
- "options": {
- "alertThreshold": true,
- "legend": {
- "calcs": [],
- "displayMode": "list",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "hideZeros": false,
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "12.2.0-16711121739",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_network_receive_bytes_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])*8",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "recv {{device}}",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_network_transmit_bytes_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])*8",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "trans {{device}} ",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Network Traffic Basic",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "description": "Disk space used of all filesystems mounted",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisBorderShow": false,
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "barWidthFactor": 0.6,
- "drawStyle": "line",
- "fillOpacity": 40,
- "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"
- }
- },
- "links": [],
- "mappings": [],
- "max": 100,
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": 0
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "percent"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byName",
- "options": "EBS Balance"
- },
- "properties": [
- {
- "id": "custom.fillOpacity",
- "value": 0
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 7,
- "w": 12,
- "x": 12,
- "y": 13
- },
- "id": 152,
- "options": {
- "legend": {
- "calcs": [],
- "displayMode": "list",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "hideZeros": false,
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "12.2.0-16711121739",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "100 - ((node_filesystem_avail_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\",device!~'rootfs'} * 100) / node_filesystem_size_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\",device!~'rootfs'})",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Disk mounted at {{mountpoint}}",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "Disk Space Used, EBS IO Balance",
- "type": "timeseries"
- },
- {
- "collapsed": false,
- "gridPos": {
- "h": 1,
- "w": 24,
- "x": 0,
- "y": 20
- },
- "id": 317,
- "panels": [],
- "title": "Postgres",
- "type": "row"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "description": "Disk space used by the database",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisBorderShow": false,
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "axisSoftMax": 100,
- "barAlignment": 0,
- "barWidthFactor": 0.6,
- "drawStyle": "line",
- "fillOpacity": 40,
- "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"
- }
- },
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": 0
- }
- ]
- },
- "unit": "decmbytes"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 6,
- "w": 12,
- "x": 0,
- "y": 21
- },
- "id": 321,
- "options": {
- "legend": {
- "calcs": [],
- "displayMode": "list",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "hideZeros": false,
- "mode": "single",
- "sort": "none"
- }
- },
- "pluginVersion": "12.2.0-16711121739",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "exemplar": false,
- "expr": "pg_database_size_mb{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Database size",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "Database size ",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "description": "Active number of client connections",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisBorderShow": false,
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "axisSoftMax": 20,
- "barAlignment": 0,
- "barWidthFactor": 0.6,
- "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": "never",
- "spanNulls": true,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": 0
- }
- ]
- },
- "unit": "none"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byName",
- "options": "pgbouncer client connections waiting"
- },
- "properties": [
- {
- "id": "custom.axisPlacement",
- "value": "right"
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 6,
- "w": 9,
- "x": 12,
- "y": 21
- },
- "id": 323,
- "options": {
- "legend": {
- "calcs": [],
- "displayMode": "list",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "hideZeros": false,
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "12.2.0-16711121739",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "exemplar": false,
- "expr": "pg_stat_database_num_backends{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "postgres connections",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "exemplar": false,
- "expr": "sum(supavisor_connections_active{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"})",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "supavisor connections",
- "refId": "B",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "exemplar": false,
- "expr": "pgbouncer_used_clients{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "hide": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "pgbouncer connections",
- "refId": "C",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "exemplar": false,
- "expr": "sum by (Name) (pgbouncer_pools_client_waiting_connections{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"})",
- "format": "time_series",
- "hide": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "pgbouncer client connections waiting",
- "refId": "D",
- "step": 240
- }
- ],
- "title": "Client connections",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "thresholds"
- },
- "mappings": [
- {
- "options": {
- "0": {
- "color": "red",
- "index": 1,
- "text": "Stopped"
- },
- "1": {
- "color": "green",
- "index": 0,
- "text": "Running"
- }
- },
- "type": "value"
- }
- ],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": 0
- },
- {
- "color": "red",
- "value": 0
- },
- {
- "color": "green",
- "value": 1
- }
- ]
- }
- },
- "overrides": []
- },
- "gridPos": {
- "h": 3,
- "w": 3,
- "x": 21,
- "y": 21
- },
- "id": 319,
- "options": {
- "colorMode": "value",
- "graphMode": "none",
- "justifyMode": "auto",
- "orientation": "auto",
- "percentChangeColorMode": "standard",
- "reduceOptions": {
- "calcs": ["lastNotNull"],
- "fields": "",
- "values": false
- },
- "showPercentChange": false,
- "text": {},
- "textMode": "auto",
- "wideLayout": true
- },
- "pluginVersion": "12.2.0-16711121739",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "exemplar": false,
- "expr": "pg_up{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "interval": "",
- "legendFormat": "",
- "refId": "A"
- }
- ],
- "title": "Postgres status",
- "type": "stat"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "thresholds"
- },
- "mappings": [
- {
- "options": {
- "0": {
- "color": "red",
- "index": 1,
- "text": "Stopped"
- },
- "1": {
- "color": "green",
- "index": 0,
- "text": "Running"
- }
- },
- "type": "value"
- }
- ],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": 0
- },
- {
- "color": "red",
- "value": 0
- },
- {
- "color": "green",
- "value": 1
- }
- ]
- }
- },
- "overrides": []
- },
- "gridPos": {
- "h": 3,
- "w": 3,
- "x": 21,
- "y": 24
- },
- "id": 341,
- "options": {
- "colorMode": "value",
- "graphMode": "none",
- "justifyMode": "auto",
- "orientation": "auto",
- "percentChangeColorMode": "standard",
- "reduceOptions": {
- "calcs": ["lastNotNull"],
- "fields": "",
- "values": false
- },
- "showPercentChange": false,
- "text": {},
- "textMode": "auto",
- "wideLayout": true
- },
- "pluginVersion": "12.2.0-16711121739",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "exemplar": false,
- "expr": "pgbouncer_up{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "interval": "",
- "legendFormat": "",
- "refId": "A"
- }
- ],
- "title": "pgbouncer status",
- "type": "stat"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "description": "",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisBorderShow": false,
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "axisSoftMax": 5,
- "barAlignment": 0,
- "barWidthFactor": 0.6,
- "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": "never",
- "spanNulls": true,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": 0
- }
- ]
- },
- "unit": "none"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byName",
- "options": "Total time spent"
- },
- "properties": [
- {
- "id": "custom.axisPlacement",
- "value": "right"
- },
- {
- "id": "unit",
- "value": "s"
- },
- {
- "id": "custom.axisSoftMax"
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 7,
- "w": 7,
- "x": 0,
- "y": 27
- },
- "id": 330,
- "options": {
- "legend": {
- "calcs": [],
- "displayMode": "list",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "hideZeros": false,
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "12.2.0-16711121739",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "exemplar": false,
- "expr": "rate(supabase_usage_metrics_user_queries_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "No. of user queries",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "exemplar": false,
- "expr": "rate(pg_stat_statements_total_queries{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "hide": false,
- "interval": "",
- "legendFormat": "Total no. of queries",
- "refId": "B"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "exemplar": false,
- "expr": "rate(pg_stat_statements_total_time_seconds{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "hide": false,
- "interval": "",
- "legendFormat": "Total time spent",
- "refId": "C"
- }
- ],
- "title": "Query stats",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "description": "",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisBorderShow": false,
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "axisSoftMax": 5,
- "barAlignment": 0,
- "barWidthFactor": 0.6,
- "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": "never",
- "spanNulls": true,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": 0
- }
- ]
- },
- "unit": "none"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byName",
- "options": "Deadlocks detected"
- },
- "properties": [
- {
- "id": "custom.axisPlacement",
- "value": "right"
- },
- {
- "id": "custom.axisSoftMax",
- "value": 25
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 7,
- "w": 7,
- "x": 7,
- "y": 27
- },
- "id": 342,
- "options": {
- "legend": {
- "calcs": [],
- "displayMode": "list",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "hideZeros": false,
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "12.2.0-16711121739",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "exemplar": false,
- "expr": "rate(pg_stat_database_xact_commit_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Tx committed",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "exemplar": false,
- "expr": "rate(pg_stat_database_xact_rollback_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "hide": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Tx rolled back",
- "refId": "B",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "exemplar": false,
- "expr": "rate(pg_stat_database_deadlocks_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "hide": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Deadlocks detected",
- "refId": "C",
- "step": 240
- }
- ],
- "title": "pg stats",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "description": "",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisBorderShow": false,
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "axisSoftMax": 5,
- "barAlignment": 0,
- "barWidthFactor": 0.6,
- "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": "never",
- "spanNulls": true,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": 0
- }
- ]
- },
- "unit": "none"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byName",
- "options": "Total time spent"
- },
- "properties": [
- {
- "id": "custom.axisPlacement",
- "value": "right"
- },
- {
- "id": "unit",
- "value": "s"
- },
- {
- "id": "custom.axisSoftMax"
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 7,
- "w": 7,
- "x": 14,
- "y": 27
- },
- "id": 331,
- "options": {
- "legend": {
- "calcs": [],
- "displayMode": "list",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "hideZeros": false,
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "12.2.0-16711121739",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "exemplar": false,
- "expr": "rate(pg_stat_database_conflicts_confl_tablespace_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Dropped tablespaces",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "exemplar": false,
- "expr": "rate(pg_stat_database_conflicts_confl_lock_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "hide": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Lock timeouts",
- "refId": "B",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "exemplar": false,
- "expr": "rate(pg_stat_database_conflicts_confl_snapshot_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "hide": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Old Snapshots",
- "refId": "C",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "exemplar": false,
- "expr": "rate(pg_stat_database_conflicts_confl_bufferpin_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "hide": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Pinned buffers",
- "refId": "D",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "exemplar": false,
- "expr": "rate(pg_stat_database_conflicts_confl_deadlock_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "hide": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Deadlocks",
- "refId": "E",
- "step": 240
- }
- ],
- "title": "Conflicts - Queries cancelled due to",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "thresholds"
- },
- "mappings": [
- {
- "options": {
- "0": {
- "color": "green",
- "index": 0,
- "text": "ReadWrite"
- },
- "1": {
- "color": "red",
- "index": 1,
- "text": "ReadOnly"
- }
- },
- "type": "value"
- }
- ],
- "noValue": "N/A",
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": 0
- },
- {
- "color": "green",
- "value": 0
- },
- {
- "color": "red",
- "value": 1
- }
- ]
- }
- },
- "overrides": []
- },
- "gridPos": {
- "h": 3,
- "w": 3,
- "x": 21,
- "y": 27
- },
- "id": 324,
- "options": {
- "colorMode": "value",
- "graphMode": "none",
- "justifyMode": "auto",
- "orientation": "auto",
- "percentChangeColorMode": "standard",
- "reduceOptions": {
- "calcs": ["lastNotNull"],
- "fields": "",
- "limit": 2,
- "values": false
- },
- "showPercentChange": false,
- "text": {},
- "textMode": "auto",
- "wideLayout": true
- },
- "pluginVersion": "12.2.0-16711121739",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "exemplar": false,
- "expr": "pg_settings_default_transaction_read_only{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "instant": false,
- "interval": "",
- "legendFormat": "",
- "refId": "A"
- }
- ],
- "title": "DB Mode",
- "type": "stat"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "thresholds"
- },
- "mappings": [
- {
- "options": {
- "0": {
- "color": "green",
- "index": 0,
- "text": "No"
- },
- "1": {
- "color": "red",
- "index": 1,
- "text": "Yes"
- }
- },
- "type": "value"
- }
- ],
- "noValue": "N/A",
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": 0
- },
- {
- "color": "green",
- "value": 0
- },
- {
- "color": "red",
- "value": 1
- }
- ]
- }
- },
- "overrides": []
- },
- "gridPos": {
- "h": 3,
- "w": 3,
- "x": 21,
- "y": 30
- },
- "id": 325,
- "options": {
- "colorMode": "value",
- "graphMode": "none",
- "justifyMode": "auto",
- "orientation": "auto",
- "percentChangeColorMode": "standard",
- "reduceOptions": {
- "calcs": ["last"],
- "fields": "",
- "values": false
- },
- "showPercentChange": false,
- "text": {},
- "textMode": "auto",
- "wideLayout": true
- },
- "pluginVersion": "12.2.0-16711121739",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "exemplar": false,
- "expr": "pg_status_in_recovery{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "interval": "",
- "legendFormat": "",
- "refId": "A"
- }
- ],
- "title": "In Recovery",
- "type": "stat"
- },
- {
- "collapsed": false,
- "gridPos": {
- "h": 1,
- "w": 24,
- "x": 0,
- "y": 34
- },
- "id": 337,
- "panels": [],
- "title": "Postgres: realtime",
- "type": "row"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "description": "Realtime replication status",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "thresholds"
- },
- "mappings": [
- {
- "options": {
- "0": {
- "color": "red",
- "index": 1,
- "text": "Inactive"
- },
- "1": {
- "color": "green",
- "index": 0,
- "text": "Active"
- }
- },
- "type": "value"
- }
- ],
- "noValue": "N/A",
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 0
- },
- {
- "color": "green",
- "value": 1
- }
- ]
- }
- },
- "overrides": []
- },
- "gridPos": {
- "h": 3,
- "w": 3,
- "x": 0,
- "y": 35
- },
- "id": 328,
- "options": {
- "colorMode": "value",
- "graphMode": "none",
- "justifyMode": "auto",
- "orientation": "auto",
- "percentChangeColorMode": "standard",
- "reduceOptions": {
- "calcs": ["lastNotNull"],
- "fields": "",
- "values": false
- },
- "showPercentChange": false,
- "text": {},
- "textMode": "auto",
- "wideLayout": true
- },
- "pluginVersion": "11.6.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "exemplar": false,
- "expr": "replication_realtime_slot_status{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "interval": "",
- "legendFormat": "",
- "refId": "A"
- }
- ],
- "title": "Realtime replication status",
- "type": "stat"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "description": "",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisBorderShow": false,
- "axisCenteredZero": false,
- "axisColorMode": "text",
- "axisLabel": "",
- "axisPlacement": "auto",
- "axisSoftMax": 20,
- "barAlignment": 0,
- "barWidthFactor": 0.6,
- "drawStyle": "line",
- "fillOpacity": 40,
- "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"
- }
- },
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- }
- ]
- },
- "unit": "decbytes"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 3,
- "w": 7,
- "x": 3,
- "y": 35
- },
- "id": 329,
- "options": {
- "legend": {
- "calcs": [],
- "displayMode": "list",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "hideZeros": false,
- "mode": "single",
- "sort": "none"
- }
- },
- "pluginVersion": "11.6.0",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "exemplar": false,
- "expr": "replication_realtime_lag_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Replication lag ",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "Realtime replication lag",
- "type": "timeseries"
- },
- {
- "collapsed": false,
- "gridPos": {
- "h": 1,
- "w": 24,
- "x": 0,
- "y": 38
- },
- "id": 335,
- "panels": [],
- "title": "Postgres: bgwriter",
- "type": "row"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "description": "",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisLabel": "",
- "axisPlacement": "auto",
- "axisSoftMax": 5,
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 0,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": true,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- }
- ]
- },
- "unit": "none"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byRegexp",
- "options": "/^Time spent/"
- },
- "properties": [
- {
- "id": "custom.axisPlacement",
- "value": "right"
- },
- {
- "id": "unit",
- "value": "ms"
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 7,
- "w": 8,
- "x": 0,
- "y": 39
- },
- "id": 332,
- "options": {
- "legend": {
- "calcs": [],
- "displayMode": "list",
- "placement": "bottom"
- },
- "tooltip": {
- "mode": "multi"
- }
- },
- "pluginVersion": "8.3.3",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "exemplar": false,
- "expr": "rate(pg_stat_bgwriter_checkpoints_timed_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Scheduled checkpoints",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "exemplar": false,
- "expr": "rate(pg_stat_bgwriter_checkpoints_req_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "hide": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Requested checkpoints",
- "refId": "B",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "exemplar": false,
- "expr": "rate(pg_stat_bgwriter_checkpoint_write_time_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "hide": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Time spent writing checkpoint files",
- "refId": "C",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "exemplar": false,
- "expr": "rate(pg_stat_bgwriter_checkpoint_sync_time_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "hide": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Time spent synchronizing checkpoint files",
- "refId": "D",
- "step": 240
- }
- ],
- "title": "bgwriter stats: checkpoints",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "description": "",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisLabel": "",
- "axisPlacement": "auto",
- "axisSoftMax": 5,
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 0,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": true,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- }
- ]
- },
- "unit": "none"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byName",
- "options": "Allocated"
- },
- "properties": [
- {
- "id": "custom.axisPlacement",
- "value": "right"
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 7,
- "w": 8,
- "x": 8,
- "y": 39
- },
- "id": 333,
- "options": {
- "legend": {
- "calcs": [],
- "displayMode": "list",
- "placement": "bottom"
- },
- "tooltip": {
- "mode": "multi"
- }
- },
- "pluginVersion": "8.3.3",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "exemplar": false,
- "expr": "rate(pg_stat_bgwriter_buffers_checkpoint_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Written during checkpoints",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "exemplar": false,
- "expr": "rate(pg_stat_bgwriter_buffers_clean_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "hide": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Written by bgwriter",
- "refId": "B",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "exemplar": false,
- "expr": "rate(pg_stat_bgwriter_buffers_backend_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "hide": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Written by a backend",
- "refId": "C",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "exemplar": false,
- "expr": "rate(pg_stat_bgwriter_buffers_alloc_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "hide": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Allocated",
- "refId": "D",
- "step": 240
- }
- ],
- "title": "bgwriter stats: buffers",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "description": "",
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisLabel": "",
- "axisPlacement": "auto",
- "axisSoftMax": 5,
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 0,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": true,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "links": [],
- "mappings": [],
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- }
- ]
- },
- "unit": "none"
- },
- "overrides": [
- {
- "matcher": {
- "id": "byName",
- "options": "Backend fsync calls"
- },
- "properties": [
- {
- "id": "custom.axisPlacement",
- "value": "right"
- }
- ]
- }
- ]
- },
- "gridPos": {
- "h": 7,
- "w": 8,
- "x": 16,
- "y": 39
- },
- "id": 340,
- "options": {
- "legend": {
- "calcs": [],
- "displayMode": "list",
- "placement": "bottom"
- },
- "tooltip": {
- "mode": "multi"
- }
- },
- "pluginVersion": "8.3.3",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "exemplar": false,
- "expr": "rate(pg_stat_bgwriter_maxwritten_clean_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "No. of times clean stopped due to writing too many buffers",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "exemplar": false,
- "expr": "rate(pg_stat_bgwriter_buffers_backend_fsync_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "hide": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Fsync calls by backend",
- "refId": "D",
- "step": 240
- }
- ],
- "title": "bgwriter: fsync/clean",
- "type": "timeseries"
- },
- {
- "collapsed": true,
- "gridPos": {
- "h": 1,
- "w": 24,
- "x": 0,
- "y": 46
- },
- "id": 265,
- "panels": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "description": "",
- "fieldConfig": {
- "defaults": {
- "custom": {},
- "links": []
- },
- "overrides": []
- },
- "gridPos": {
- "h": 12,
- "w": 12,
- "x": 0,
- "y": 3
- },
- "id": 3,
- "maxPerRow": 6,
- "options": {
- "alertThreshold": true
- },
- "pluginVersion": "7.3.7",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "sum by (mode)(rate(node_cpu_seconds_total{mode=\"system\",supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])) * 100",
- "format": "time_series",
- "interval": "10s",
- "intervalFactor": 1,
- "legendFormat": "System - Processes executing in kernel mode",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "sum by (mode)(rate(node_cpu_seconds_total{mode='user',supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])) * 100",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "User - Normal processes executing in user mode",
- "refId": "B",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "sum by (mode)(rate(node_cpu_seconds_total{mode='nice',supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])) * 100",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Nice - Niced processes executing in user mode",
- "refId": "C",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "sum by (mode)(rate(node_cpu_seconds_total{mode='idle',supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])) * 100",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Idle - Waiting for something to happen",
- "refId": "D",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "sum by (mode)(rate(node_cpu_seconds_total{mode='iowait',supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])) * 100",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Iowait - Waiting for I/O to complete",
- "refId": "E",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "sum by (mode)(rate(node_cpu_seconds_total{mode='irq',supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])) * 100",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Irq - Servicing interrupts",
- "refId": "F",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "sum by (mode)(rate(node_cpu_seconds_total{mode='softirq',supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])) * 100",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Softirq - Servicing softirqs",
- "refId": "G",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "sum by (mode)(rate(node_cpu_seconds_total{mode='steal',supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])) * 100",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Steal - Time spent in other operating systems when running in a virtualized environment",
- "refId": "H",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "sum by (mode)(rate(node_cpu_seconds_total{mode='guest',supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])) * 100",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Guest - Time spent running a virtual CPU for a guest operating system",
- "refId": "I",
- "step": 240
- }
- ],
- "title": "CPU",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "description": "",
- "fieldConfig": {
- "defaults": {
- "custom": {},
- "links": []
- },
- "overrides": []
- },
- "gridPos": {
- "h": 12,
- "w": 12,
- "x": 12,
- "y": 3
- },
- "id": 24,
- "maxPerRow": 6,
- "options": {
- "alertThreshold": true
- },
- "pluginVersion": "7.3.7",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_memory_MemTotal_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"} - node_memory_MemFree_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"} - node_memory_Buffers_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"} - node_memory_Cached_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"} - node_memory_Slab_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"} - node_memory_PageTables_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"} - node_memory_SwapCached_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "hide": false,
- "intervalFactor": 1,
- "legendFormat": "Apps - Memory used by user-space applications",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_memory_PageTables_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "hide": false,
- "intervalFactor": 1,
- "legendFormat": "PageTables - Memory used to map between virtual and physical memory addresses",
- "refId": "B",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_memory_SwapCached_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "SwapCache - Memory that keeps track of pages that have been fetched from swap but not yet been modified",
- "refId": "C",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_memory_Slab_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "hide": false,
- "intervalFactor": 1,
- "legendFormat": "Slab - Memory used by the kernel to cache data structures for its own use (caches like inode, dentry, etc)",
- "refId": "D",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_memory_Cached_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "hide": false,
- "intervalFactor": 1,
- "legendFormat": "Cache - Parked file data (file content) cache",
- "refId": "E",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_memory_Buffers_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "hide": false,
- "intervalFactor": 1,
- "legendFormat": "Buffers - Block device (e.g. harddisk) cache",
- "refId": "F",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_memory_MemFree_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "hide": false,
- "intervalFactor": 1,
- "legendFormat": "Unused - Free memory unassigned",
- "refId": "G",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "(node_memory_SwapTotal_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"} - node_memory_SwapFree_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"})",
- "format": "time_series",
- "hide": false,
- "intervalFactor": 1,
- "legendFormat": "Swap - Swap space used",
- "refId": "H",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_memory_HardwareCorrupted_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "hide": false,
- "intervalFactor": 1,
- "legendFormat": "Hardware Corrupted - Amount of RAM that the kernel identified as corrupted / not working",
- "refId": "I",
- "step": 240
- }
- ],
- "title": "Memory Stack",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {
- "custom": {},
- "links": []
- },
- "overrides": []
- },
- "gridPos": {
- "h": 12,
- "w": 12,
- "x": 0,
- "y": 15
- },
- "id": 84,
- "options": {
- "alertThreshold": true
- },
- "pluginVersion": "7.3.7",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_network_receive_bytes_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])*8",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "{{device}} - Receive",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_network_transmit_bytes_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])*8",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "{{device}} - Transmit",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Network Traffic",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "description": "",
- "fieldConfig": {
- "defaults": {
- "custom": {},
- "links": []
- },
- "overrides": []
- },
- "gridPos": {
- "h": 12,
- "w": 12,
- "x": 12,
- "y": 15
- },
- "id": 156,
- "maxPerRow": 6,
- "options": {
- "alertThreshold": true
- },
- "pluginVersion": "7.3.7",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_filesystem_size_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\",device!~'rootfs'} - node_filesystem_avail_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\",device!~'rootfs'}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "{{mountpoint}}",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "Disk Space Used",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "description": "",
- "fieldConfig": {
- "defaults": {
- "custom": {},
- "links": []
- },
- "overrides": []
- },
- "gridPos": {
- "h": 12,
- "w": 12,
- "x": 0,
- "y": 27
- },
- "id": 229,
- "maxPerRow": 6,
- "options": {
- "alertThreshold": true
- },
- "pluginVersion": "7.3.7",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_disk_reads_completed_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\",device=~\"$diskdevices\"}[$__rate_interval])",
- "intervalFactor": 1,
- "legendFormat": "{{device}} - Reads completed",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_disk_writes_completed_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\",device=~\"$diskdevices\"}[$__rate_interval])",
- "intervalFactor": 1,
- "legendFormat": "{{device}} - Writes completed",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Disk IOps",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "description": "",
- "fieldConfig": {
- "defaults": {
- "custom": {},
- "links": []
- },
- "overrides": []
- },
- "gridPos": {
- "h": 12,
- "w": 12,
- "x": 12,
- "y": 27
- },
- "id": 42,
- "maxPerRow": 6,
- "options": {
- "alertThreshold": true
- },
- "pluginVersion": "7.3.7",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_disk_read_bytes_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\",device=~\"$diskdevices\"}[$__rate_interval])",
- "format": "time_series",
- "hide": false,
- "intervalFactor": 1,
- "legendFormat": "{{device}} - Successfully read bytes",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_disk_written_bytes_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\",device=~\"$diskdevices\"}[$__rate_interval])",
- "format": "time_series",
- "hide": false,
- "intervalFactor": 1,
- "legendFormat": "{{device}} - Successfully written bytes",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "I/O Usage Read / Write",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "description": "",
- "fieldConfig": {
- "defaults": {
- "custom": {},
- "links": []
- },
- "overrides": []
- },
- "gridPos": {
- "h": 12,
- "w": 12,
- "x": 0,
- "y": 39
- },
- "id": 127,
- "maxPerRow": 6,
- "options": {
- "alertThreshold": true
- },
- "pluginVersion": "7.3.7",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_disk_io_time_seconds_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\",device=~\"$diskdevices\"} [$__rate_interval])",
- "format": "time_series",
- "hide": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "{{device}}",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "I/O Utilization",
- "type": "timeseries"
- }
- ],
- "title": "CPU / Memory / Net / Disk",
- "type": "row"
- },
- {
- "collapsed": true,
- "gridPos": {
- "h": 1,
- "w": 24,
- "x": 0,
- "y": 47
- },
- "id": 266,
- "panels": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {},
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 70
- },
- "id": 136,
- "maxPerRow": 2,
- "options": {
- "dataLinks": []
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_memory_Inactive_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Inactive - Memory which has been less recently used. It is more eligible to be reclaimed for other purposes",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_memory_Active_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Active - Memory that has been used more recently and usually not reclaimed unless absolutely necessary",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Memory Active / Inactive",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {},
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 70
- },
- "id": 135,
- "maxPerRow": 6,
- "options": {
- "dataLinks": []
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_memory_Committed_AS_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Committed_AS - Amount of memory presently allocated on the system",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_memory_CommitLimit_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "CommitLimit - Amount of memory currently available to be allocated on the system",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Memory Commited",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {},
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 80
- },
- "id": 191,
- "maxPerRow": 6,
- "options": {
- "dataLinks": []
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_memory_Inactive_file_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "hide": false,
- "intervalFactor": 1,
- "legendFormat": "Inactive_file - File-backed memory on inactive LRU list",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_memory_Inactive_anon_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "hide": false,
- "intervalFactor": 1,
- "legendFormat": "Inactive_anon - Anonymous and swap cache on inactive LRU list, including tmpfs (shmem)",
- "refId": "B",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_memory_Active_file_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "hide": false,
- "intervalFactor": 1,
- "legendFormat": "Active_file - File-backed memory on active LRU list",
- "refId": "C",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_memory_Active_anon_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "hide": false,
- "intervalFactor": 1,
- "legendFormat": "Active_anon - Anonymous and swap cache on active least-recently-used (LRU) list, including tmpfs",
- "refId": "D",
- "step": 240
- }
- ],
- "title": "Memory Active / Inactive Detail",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {},
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 80
- },
- "id": 130,
- "maxPerRow": 2,
- "options": {
- "dataLinks": []
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_memory_Writeback_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Writeback - Memory which is actively being written back to disk",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_memory_WritebackTmp_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "WritebackTmp - Memory used by FUSE for temporary writeback buffers",
- "refId": "B",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_memory_Dirty_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Dirty - Memory which is waiting to get written back to the disk",
- "refId": "C",
- "step": 240
- }
- ],
- "title": "Memory Writeback and Dirty",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {},
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 90
- },
- "id": 138,
- "maxPerRow": 6,
- "options": {
- "dataLinks": []
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_memory_Mapped_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Mapped - Used memory in mapped pages files which have been mmaped, such as libraries",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_memory_Shmem_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Shmem - Used shared memory (shared between several processes, thus including RAM disks)",
- "refId": "B",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_memory_ShmemHugePages_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "ShmemHugePages - Memory used by shared memory (shmem) and tmpfs allocated with huge pages",
- "refId": "C",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_memory_ShmemPmdMapped_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "ShmemPmdMapped - Ammount of shared (shmem/tmpfs) memory backed by huge pages",
- "refId": "D",
- "step": 240
- }
- ],
- "title": "Memory Shared and Mapped",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {},
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 90
- },
- "id": 131,
- "maxPerRow": 2,
- "options": {
- "dataLinks": []
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_memory_SUnreclaim_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "SUnreclaim - Part of Slab, that cannot be reclaimed on memory pressure",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_memory_SReclaimable_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "SReclaimable - Part of Slab, that might be reclaimed, such as caches",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Memory Slab",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {},
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 100
- },
- "id": 70,
- "maxPerRow": 6,
- "options": {
- "dataLinks": []
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_memory_VmallocChunk_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "hide": false,
- "intervalFactor": 1,
- "legendFormat": "VmallocChunk - Largest contigious block of vmalloc area which is free",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_memory_VmallocTotal_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "hide": false,
- "intervalFactor": 1,
- "legendFormat": "VmallocTotal - Total size of vmalloc memory area",
- "refId": "B",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_memory_VmallocUsed_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "hide": false,
- "intervalFactor": 1,
- "legendFormat": "VmallocUsed - Amount of vmalloc area which is used",
- "refId": "C",
- "step": 240
- }
- ],
- "title": "Memory Vmalloc",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {},
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 100
- },
- "id": 159,
- "maxPerRow": 6,
- "options": {
- "dataLinks": []
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_memory_Bounce_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Bounce - Memory used for block device bounce buffers",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "Memory Bounce",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {},
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 110
- },
- "id": 129,
- "maxPerRow": 6,
- "options": {
- "dataLinks": []
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_memory_AnonHugePages_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "AnonHugePages - Memory in anonymous huge pages",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_memory_AnonPages_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "AnonPages - Memory in user pages not backed by files",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Memory Anonymous",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {},
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 110
- },
- "id": 160,
- "maxPerRow": 2,
- "options": {
- "dataLinks": []
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_memory_KernelStack_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "KernelStack - Kernel memory stack. This is not reclaimable",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_memory_Percpu_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "PerCPU - Per CPU memory allocated dynamically by loadable modules",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Memory Kernel / CPU",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {},
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 120
- },
- "id": 140,
- "maxPerRow": 6,
- "options": {
- "dataLinks": []
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_memory_HugePages_Free{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "HugePages_Free - Huge pages in the pool that are not yet allocated",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_memory_HugePages_Rsvd{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "HugePages_Rsvd - Huge pages for which a commitment to allocate from the pool has been made, but no allocation has yet been made",
- "refId": "B",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_memory_HugePages_Surp{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "HugePages_Surp - Huge pages in the pool above the value in /proc/sys/vm/nr_hugepages",
- "refId": "C",
- "step": 240
- }
- ],
- "title": "Memory HugePages Counter",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {},
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 120
- },
- "id": 71,
- "maxPerRow": 2,
- "options": {
- "dataLinks": []
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_memory_HugePages_Total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "HugePages - Total size of the pool of huge pages",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_memory_Hugepagesize_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Hugepagesize - Huge Page size",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Memory HugePages Size",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {},
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 130
- },
- "id": 128,
- "maxPerRow": 6,
- "options": {
- "dataLinks": []
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_memory_DirectMap1G_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "DirectMap1G - Amount of pages mapped as this size",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_memory_DirectMap2M_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "DirectMap2M - Amount of pages mapped as this size",
- "refId": "B",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_memory_DirectMap4k_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "DirectMap4K - Amount of pages mapped as this size",
- "refId": "C",
- "step": 240
- }
- ],
- "title": "Memory DirectMap",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {},
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 130
- },
- "id": 137,
- "maxPerRow": 6,
- "options": {
- "dataLinks": []
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_memory_Unevictable_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Unevictable - Amount of unevictable memory that can't be swapped out for a variety of reasons",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_memory_Mlocked_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "MLocked - Size of pages locked to memory using the mlock() system call",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Memory Unevictable and MLocked",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {},
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 140
- },
- "id": 132,
- "maxPerRow": 6,
- "options": {
- "dataLinks": []
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_memory_NFS_Unstable_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "NFS Unstable - Memory in NFS pages sent to the server, but not yet commited to the storage",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "Memory NFS",
- "type": "timeseries"
- }
- ],
- "title": "Memory Meminfo",
- "type": "row"
- },
- {
- "collapsed": true,
- "gridPos": {
- "h": 1,
- "w": 24,
- "x": 0,
- "y": 48
- },
- "id": 267,
- "panels": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {},
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 23
- },
- "id": 176,
- "maxPerRow": 6,
- "options": {
- "dataLinks": []
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_vmstat_pgpgin{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Pagesin - Page in operations",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_vmstat_pgpgout{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Pagesout - Page out operations",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Memory Pages In / Out",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {},
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 23
- },
- "id": 22,
- "maxPerRow": 6,
- "options": {
- "dataLinks": []
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_vmstat_pswpin{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Pswpin - Pages swapped in",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_vmstat_pswpout{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Pswpout - Pages swapped out",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Memory Pages Swap In / Out",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {},
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 33
- },
- "id": 175,
- "maxPerRow": 6,
- "options": {
- "dataLinks": []
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_vmstat_pgfault{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Pgfault - Page major and minor fault operations",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_vmstat_pgmajfault{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Pgmajfault - Major page fault operations",
- "refId": "B",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_vmstat_pgfault{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval]) - rate(node_vmstat_pgmajfault{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Pgminfault - Minor page fault operations",
- "refId": "C",
- "step": 240
- }
- ],
- "title": "Memory Page Faults",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {},
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 33
- },
- "id": 307,
- "maxPerRow": 6,
- "options": {
- "dataLinks": []
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_vmstat_oom_kill{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "oom killer invocations ",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "OOM Killer",
- "type": "timeseries"
- }
- ],
- "title": "Memory Vmstat",
- "type": "row"
- },
- {
- "collapsed": true,
- "gridPos": {
- "h": 1,
- "w": 24,
- "x": 0,
- "y": 49
- },
- "id": 293,
- "panels": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "description": "",
- "fieldConfig": {
- "defaults": {},
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 24
- },
- "id": 260,
- "options": {
- "dataLinks": []
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_timex_estimated_error_seconds{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "hide": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Estimated error in seconds",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_timex_offset_seconds{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "hide": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Time offset in between local system and reference clock",
- "refId": "B",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_timex_maxerror_seconds{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "hide": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Maximum error in seconds",
- "refId": "C",
- "step": 240
- }
- ],
- "title": "Time Syncronized Drift",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "description": "",
- "fieldConfig": {
- "defaults": {},
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 24
- },
- "id": 291,
- "options": {
- "dataLinks": []
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_timex_loop_time_constant{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Phase-locked loop time adjust",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "Time PLL Adjust",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "description": "",
- "fieldConfig": {
- "defaults": {},
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 34
- },
- "id": 168,
- "options": {
- "dataLinks": []
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_timex_sync_status{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Is clock synchronized to a reliable server (1 = yes, 0 = no)",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_timex_frequency_adjustment_ratio{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Local clock frequency adjustment",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Time Syncronized Status",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "description": "",
- "fieldConfig": {
- "defaults": {},
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 34
- },
- "id": 294,
- "options": {
- "dataLinks": []
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_timex_tick_seconds{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Seconds between clock ticks",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_timex_tai_offset_seconds{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "International Atomic Time (TAI) offset",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Time Misc",
- "type": "timeseries"
- }
- ],
- "title": "System Timesync",
- "type": "row"
- },
- {
- "collapsed": true,
- "gridPos": {
- "h": 1,
- "w": 24,
- "x": 0,
- "y": 50
- },
- "id": 312,
- "panels": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {},
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 7
- },
- "id": 62,
- "maxPerRow": 6,
- "options": {
- "dataLinks": []
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_procs_blocked{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Processes blocked waiting for I/O to complete",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_procs_running{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Processes in runnable state",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Processes Status",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {},
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 7
- },
- "id": 315,
- "maxPerRow": 6,
- "options": {
- "dataLinks": []
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_processes_state{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "{{ state }}",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "Processes State",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {},
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 17
- },
- "id": 148,
- "maxPerRow": 6,
- "options": {
- "dataLinks": []
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_forks_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "hide": false,
- "intervalFactor": 1,
- "legendFormat": "Processes forks second",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "Processes Forks",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {},
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 17
- },
- "id": 149,
- "options": {
- "dataLinks": []
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(process_virtual_memory_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "hide": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Processes virtual memory size in bytes",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "process_resident_memory_max_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "hide": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Maximum amount of virtual memory available in bytes",
- "refId": "B",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(process_virtual_memory_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "hide": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Processes virtual memory size in bytes",
- "refId": "C",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(process_virtual_memory_max_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "hide": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Maximum amount of virtual memory available in bytes",
- "refId": "D",
- "step": 240
- }
- ],
- "title": "Processes Memory",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {},
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 27
- },
- "id": 313,
- "maxPerRow": 6,
- "options": {
- "dataLinks": []
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_processes_pids{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Number of PIDs",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_processes_max_processes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "PIDs limit",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "PIDs Number and Limit",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {},
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 27
- },
- "id": 305,
- "maxPerRow": 6,
- "options": {
- "dataLinks": []
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_schedstat_running_seconds_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "CPU {{ cpu }} - seconds spent running a process",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_schedstat_waiting_seconds_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "CPU {{ cpu }} - seconds spent by processing waiting for this CPU",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Process schedule stats Running / Waiting",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {},
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 37
- },
- "id": 314,
- "maxPerRow": 6,
- "options": {
- "dataLinks": []
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_processes_threads{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Allocated threads",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_processes_max_threads{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Threads limit",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Threads Number and Limit",
- "type": "timeseries"
- }
- ],
- "title": "System Processes",
- "type": "row"
- },
- {
- "collapsed": true,
- "gridPos": {
- "h": 1,
- "w": 24,
- "x": 0,
- "y": 51
- },
- "id": 269,
- "panels": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {},
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 8
- },
- "id": 8,
- "maxPerRow": 6,
- "options": {
- "dataLinks": []
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_context_switches_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Context switches",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_intr_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "hide": false,
- "intervalFactor": 1,
- "legendFormat": "Interrupts",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Context Switches / Interrupts",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {},
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 8
- },
- "id": 7,
- "maxPerRow": 6,
- "options": {
- "dataLinks": []
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_load1{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Load 1m",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_load5{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Load 5m",
- "refId": "B",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_load15{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Load 15m",
- "refId": "C",
- "step": 240
- }
- ],
- "title": "System Load",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {},
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 18
- },
- "id": 259,
- "options": {
- "dataLinks": []
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_interrupts_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "{{ type }} - {{ info }}",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "Interrupts Detail",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {},
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 18
- },
- "id": 306,
- "maxPerRow": 6,
- "options": {
- "dataLinks": []
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_schedstat_timeslices_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "CPU {{ cpu }}",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "Schedule timeslices executed by each cpu",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {},
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 28
- },
- "id": 151,
- "maxPerRow": 6,
- "options": {
- "dataLinks": []
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_entropy_available_bits{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Entropy available to random number generators",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "Entropy",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {},
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 28
- },
- "id": 308,
- "maxPerRow": 6,
- "options": {
- "dataLinks": []
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(process_cpu_seconds_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Time spent",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "CPU time spent in user and system contexts",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {},
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 38
- },
- "id": 64,
- "options": {
- "dataLinks": []
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "process_max_fds{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Maximum open file descriptors",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "process_open_fds{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Open file descriptors",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "File Descriptors",
- "type": "timeseries"
- }
- ],
- "title": "System Misc",
- "type": "row"
- },
- {
- "collapsed": true,
- "gridPos": {
- "h": 1,
- "w": 24,
- "x": 0,
- "y": 52
- },
- "id": 304,
- "panels": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {},
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 26
- },
- "id": 158,
- "options": {
- "dataLinks": []
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_hwmon_temp_celsius{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "{{ chip }} {{ sensor }} temp",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_hwmon_temp_crit_alarm_celsius{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "hide": true,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "{{ chip }} {{ sensor }} Critical Alarm",
- "refId": "B",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_hwmon_temp_crit_celsius{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "{{ chip }} {{ sensor }} Critical",
- "refId": "C",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_hwmon_temp_crit_hyst_celsius{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "hide": true,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "{{ chip }} {{ sensor }} Critical Historical",
- "refId": "D",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_hwmon_temp_max_celsius{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "hide": true,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "{{ chip }} {{ sensor }} Max",
- "refId": "E",
- "step": 240
- }
- ],
- "title": "Hardware temperature monitor",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {},
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 26
- },
- "id": 300,
- "options": {
- "dataLinks": []
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_cooling_device_cur_state{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "hide": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Current {{ name }} in {{ type }}",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_cooling_device_max_state{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Max {{ name }} in {{ type }}",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Throttle cooling device",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {},
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 36
- },
- "id": 302,
- "options": {
- "dataLinks": []
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_power_supply_online{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "hide": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "{{ power_supply }} online",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "Power supply",
- "type": "timeseries"
- }
- ],
- "title": "Hardware Misc",
- "type": "row"
- },
- {
- "collapsed": true,
- "gridPos": {
- "h": 1,
- "w": 24,
- "x": 0,
- "y": 53
- },
- "id": 296,
- "panels": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {},
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 10
- },
- "id": 297,
- "options": {
- "dataLinks": []
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_systemd_socket_accepted_connections_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "{{ name }} Connections",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "Systemd Sockets",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {},
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 10
- },
- "id": 298,
- "options": {
- "dataLinks": []
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_systemd_units{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\",state=\"activating\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Activating",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_systemd_units{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\",state=\"active\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Active",
- "refId": "B",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_systemd_units{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\",state=\"deactivating\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Deactivating",
- "refId": "C",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_systemd_units{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\",state=\"failed\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Failed",
- "refId": "D",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_systemd_units{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\",state=\"inactive\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Inactive",
- "refId": "E",
- "step": 240
- }
- ],
- "title": "Systemd Units State",
- "type": "timeseries"
- }
- ],
- "title": "Systemd",
- "type": "row"
- },
- {
- "collapsed": true,
- "gridPos": {
- "h": 1,
- "w": 24,
- "x": 0,
- "y": 54
- },
- "id": 270,
- "panels": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "description": "The number (after merges) of I/O requests completed per second for the device",
- "fieldConfig": {
- "defaults": {
- "custom": {},
- "links": []
- },
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 11
- },
- "id": 9,
- "maxPerRow": 6,
- "options": {
- "alertThreshold": true
- },
- "pluginVersion": "7.3.7",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_disk_reads_completed_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "intervalFactor": 1,
- "legendFormat": "{{device}} - Reads completed",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_disk_writes_completed_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "intervalFactor": 1,
- "legendFormat": "{{device}} - Writes completed",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Disk IOps Completed",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "description": "The number of bytes read from or written to the device per second",
- "fieldConfig": {
- "defaults": {
- "custom": {},
- "links": []
- },
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 11
- },
- "id": 33,
- "maxPerRow": 6,
- "options": {
- "alertThreshold": true
- },
- "pluginVersion": "7.3.7",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_disk_read_bytes_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "{{device}} - Read bytes",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_disk_written_bytes_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "{{device}} - Written bytes",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Disk R/W Data",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "description": "The average time for requests issued to the device to be served. This includes the time spent by the requests in queue and the time spent servicing them.",
- "fieldConfig": {
- "defaults": {
- "custom": {},
- "links": []
- },
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 21
- },
- "id": 37,
- "maxPerRow": 6,
- "options": {
- "alertThreshold": true
- },
- "pluginVersion": "7.3.7",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_disk_read_time_seconds_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval]) / rate(node_disk_reads_completed_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "hide": false,
- "interval": "",
- "intervalFactor": 4,
- "legendFormat": "{{device}} - Read wait time avg",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_disk_write_time_seconds_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval]) / rate(node_disk_writes_completed_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "hide": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "{{device}} - Write wait time avg",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Disk Average Wait Time",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "description": "The average queue length of the requests that were issued to the device",
- "fieldConfig": {
- "defaults": {
- "custom": {},
- "links": []
- },
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 21
- },
- "id": 35,
- "maxPerRow": 6,
- "options": {
- "alertThreshold": true
- },
- "pluginVersion": "7.3.7",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_disk_io_time_weighted_seconds_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "{{device}}",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "Average Queue Size",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "description": "The number of read and write requests merged per second that were queued to the device",
- "fieldConfig": {
- "defaults": {
- "custom": {},
- "links": []
- },
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 31
- },
- "id": 133,
- "maxPerRow": 6,
- "options": {
- "alertThreshold": true
- },
- "pluginVersion": "7.3.7",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_disk_reads_merged_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "intervalFactor": 1,
- "legendFormat": "{{device}} - Read merged",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_disk_writes_merged_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "intervalFactor": 1,
- "legendFormat": "{{device}} - Write merged",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Disk R/W Merged",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "description": "Percentage of elapsed time during which I/O requests were issued to the device (bandwidth utilization for the device). Device saturation occurs when this value is close to 100% for devices serving requests serially. But for devices serving requests in parallel, such as RAID arrays and modern SSDs, this number does not reflect their performance limits.",
- "fieldConfig": {
- "defaults": {
- "custom": {},
- "links": []
- },
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 31
- },
- "id": 36,
- "maxPerRow": 6,
- "options": {
- "alertThreshold": true
- },
- "pluginVersion": "7.3.7",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_disk_io_time_seconds_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "{{device}} - IO",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_disk_discard_time_seconds_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "{{device}} - discard",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Time Spent Doing I/Os",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "description": "The number of outstanding requests at the instant the sample was taken. Incremented as requests are given to appropriate struct request_queue and decremented as they finish.",
- "fieldConfig": {
- "defaults": {
- "custom": {},
- "links": []
- },
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 41
- },
- "id": 34,
- "maxPerRow": 6,
- "options": {
- "alertThreshold": true
- },
- "pluginVersion": "7.3.7",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_disk_io_now{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "interval": "",
- "intervalFactor": 4,
- "legendFormat": "{{device}} - IO now",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "Instantaneous Queue Size",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "description": "",
- "fieldConfig": {
- "defaults": {
- "custom": {},
- "links": []
- },
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 41
- },
- "id": 301,
- "maxPerRow": 6,
- "options": {
- "alertThreshold": true
- },
- "pluginVersion": "7.3.7",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_disk_discards_completed_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "{{device}} - Discards completed",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_disk_discards_merged_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "{{device}} - Discards merged",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Disk IOps Discards completed / merged",
- "type": "timeseries"
- }
- ],
- "title": "Storage Disk",
- "type": "row"
- },
- {
- "collapsed": true,
- "gridPos": {
- "h": 1,
- "w": 24,
- "x": 0,
- "y": 55
- },
- "id": 271,
- "panels": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "description": "",
- "fieldConfig": {
- "defaults": {
- "custom": {},
- "links": []
- },
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 12
- },
- "id": 43,
- "maxPerRow": 6,
- "options": {
- "alertThreshold": true
- },
- "pluginVersion": "7.3.7",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_filesystem_avail_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\",device!~'rootfs'}",
- "format": "time_series",
- "hide": false,
- "intervalFactor": 1,
- "legendFormat": "{{mountpoint}} - Available",
- "metric": "",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_filesystem_free_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\",device!~'rootfs'}",
- "format": "time_series",
- "hide": true,
- "intervalFactor": 1,
- "legendFormat": "{{mountpoint}} - Free",
- "refId": "B",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_filesystem_size_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\",device!~'rootfs'}",
- "format": "time_series",
- "hide": true,
- "intervalFactor": 1,
- "legendFormat": "{{mountpoint}} - Size",
- "refId": "C",
- "step": 240
- }
- ],
- "title": "Filesystem space available",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "description": "",
- "fieldConfig": {
- "defaults": {
- "custom": {},
- "links": []
- },
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 12
- },
- "id": 41,
- "options": {
- "alertThreshold": true
- },
- "pluginVersion": "7.3.7",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_filesystem_files_free{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\",device!~'rootfs'}",
- "format": "time_series",
- "hide": false,
- "intervalFactor": 1,
- "legendFormat": "{{mountpoint}} - Free file nodes",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "File Nodes Free",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "description": "",
- "fieldConfig": {
- "defaults": {
- "custom": {},
- "links": []
- },
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 22
- },
- "id": 28,
- "maxPerRow": 6,
- "options": {
- "alertThreshold": true
- },
- "pluginVersion": "7.3.7",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_filefd_maximum{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Max open files",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_filefd_allocated{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "Open files",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "File Descriptor",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "description": "",
- "fieldConfig": {
- "defaults": {
- "custom": {},
- "links": []
- },
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 22
- },
- "id": 219,
- "options": {
- "alertThreshold": true
- },
- "pluginVersion": "7.3.7",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_filesystem_files{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\",device!~'rootfs'}",
- "format": "time_series",
- "hide": false,
- "intervalFactor": 1,
- "legendFormat": "{{mountpoint}} - File nodes total",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "File Nodes Size",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "description": "",
- "fieldConfig": {
- "defaults": {
- "custom": {},
- "links": []
- },
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 32
- },
- "id": 44,
- "maxPerRow": 6,
- "options": {
- "alertThreshold": true
- },
- "pluginVersion": "7.3.7",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_filesystem_readonly{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\",device!~'rootfs'}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "{{mountpoint}} - ReadOnly",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_filesystem_device_error{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\",device!~'rootfs',fstype!~'tmpfs'}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "{{mountpoint}} - Device error",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Filesystem in ReadOnly / Error",
- "type": "timeseries"
- }
- ],
- "title": "Storage Filesystem",
- "type": "row"
- },
- {
- "collapsed": true,
- "gridPos": {
- "h": 1,
- "w": 24,
- "x": 0,
- "y": 56
- },
- "id": 272,
- "panels": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {},
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 30
- },
- "id": 60,
- "options": {
- "dataLinks": []
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_network_receive_packets_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "{{device}} - Receive",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_network_transmit_packets_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "{{device}} - Transmit",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Network Traffic by Packets",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {},
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 30
- },
- "id": 142,
- "options": {
- "dataLinks": []
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_network_receive_errs_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "{{device}} - Receive errors",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_network_transmit_errs_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "{{device}} - Rransmit errors",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Network Traffic Errors",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {},
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 40
- },
- "id": 143,
- "options": {
- "dataLinks": []
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_network_receive_drop_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "{{device}} - Receive drop",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_network_transmit_drop_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "{{device}} - Transmit drop",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Network Traffic Drop",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {},
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 40
- },
- "id": 141,
- "options": {
- "dataLinks": []
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_network_receive_compressed_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "{{device}} - Receive compressed",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_network_transmit_compressed_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "{{device}} - Transmit compressed",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Network Traffic Compressed",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {},
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 50
- },
- "id": 146,
- "options": {
- "dataLinks": []
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_network_receive_multicast_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "{{device}} - Receive multicast",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "Network Traffic Multicast",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {},
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 50
- },
- "id": 144,
- "options": {
- "dataLinks": []
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_network_receive_fifo_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "{{device}} - Receive fifo",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_network_transmit_fifo_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "{{device}} - Transmit fifo",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Network Traffic Fifo",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {},
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 60
- },
- "id": 145,
- "options": {
- "dataLinks": []
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_network_receive_frame_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "hide": false,
- "intervalFactor": 1,
- "legendFormat": "{{device}} - Receive frame",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "Network Traffic Frame",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {},
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 60
- },
- "id": 231,
- "options": {
- "dataLinks": []
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_network_transmit_carrier_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "{{device}} - Statistic transmit_carrier",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "Network Traffic Carrier",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {},
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 70
- },
- "id": 232,
- "options": {
- "dataLinks": []
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_network_transmit_colls_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "{{device}} - Transmit colls",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "Network Traffic Colls",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {},
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 70
- },
- "id": 61,
- "options": {
- "dataLinks": []
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_nf_conntrack_entries{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "NF conntrack entries",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_nf_conntrack_entries_limit{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "NF conntrack limit",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "NF Contrack",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {},
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 80
- },
- "id": 230,
- "options": {
- "dataLinks": []
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_arp_entries{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "{{ device }} - ARP entries",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "ARP Entries",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {},
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 80
- },
- "id": 288,
- "options": {
- "dataLinks": []
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_network_mtu_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "{{ device }} - Bytes",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "MTU",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {},
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 90
- },
- "id": 280,
- "options": {
- "dataLinks": []
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_network_speed_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "{{ device }} - Speed",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "Speed",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {},
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 90
- },
- "id": 289,
- "options": {
- "dataLinks": []
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_network_transmit_queue_length{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "{{ device }} - Interface transmit queue length",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "Queue Length",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {},
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 100
- },
- "id": 290,
- "options": {
- "dataLinks": []
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_softnet_processed_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "CPU {{cpu}} - Processed",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_softnet_dropped_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "CPU {{cpu}} - Dropped",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Softnet Packets",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {},
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 100
- },
- "id": 310,
- "options": {
- "dataLinks": []
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_softnet_times_squeezed_total{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "CPU {{cpu}} - Squeezed",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "Softnet Out of Quota",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {},
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 110
- },
- "id": 309,
- "options": {
- "dataLinks": []
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_network_up{operstate=\"up\",supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "{{interface}} - Operational state UP",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_network_carrier{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "instant": false,
- "legendFormat": "{{device}} - Physical link state",
- "refId": "B"
- }
- ],
- "title": "Network Operational Status",
- "type": "timeseries"
- }
- ],
- "title": "Network Traffic",
- "type": "row"
- },
- {
- "collapsed": true,
- "gridPos": {
- "h": 1,
- "w": 24,
- "x": 0,
- "y": 57
- },
- "id": 273,
- "panels": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {
- "custom": {},
- "links": []
- },
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 32
- },
- "id": 63,
- "options": {
- "alertThreshold": true
- },
- "pluginVersion": "7.3.7",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_sockstat_TCP_alloc{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "TCP_alloc - Allocated sockets",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_sockstat_TCP_inuse{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "TCP_inuse - Tcp sockets currently in use",
- "refId": "B",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_sockstat_TCP_mem{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "hide": true,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "TCP_mem - Used memory for tcp",
- "refId": "C",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_sockstat_TCP_orphan{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "TCP_orphan - Orphan sockets",
- "refId": "D",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_sockstat_TCP_tw{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "TCP_tw - Sockets wating close",
- "refId": "E",
- "step": 240
- }
- ],
- "title": "Sockstat TCP",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {
- "custom": {},
- "links": []
- },
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 32
- },
- "id": 124,
- "options": {
- "alertThreshold": true
- },
- "pluginVersion": "7.3.7",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_sockstat_UDPLITE_inuse{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "UDPLITE_inuse - Udplite sockets currently in use",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_sockstat_UDP_inuse{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "UDP_inuse - Udp sockets currently in use",
- "refId": "B",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_sockstat_UDP_mem{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "UDP_mem - Used memory for udp",
- "refId": "C",
- "step": 240
- }
- ],
- "title": "Sockstat UDP",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {
- "custom": {},
- "links": []
- },
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 42
- },
- "id": 125,
- "options": {
- "alertThreshold": true
- },
- "pluginVersion": "7.3.7",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_sockstat_FRAG_inuse{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "FRAG_inuse - Frag sockets currently in use",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_sockstat_RAW_inuse{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "RAW_inuse - Raw sockets currently in use",
- "refId": "C",
- "step": 240
- }
- ],
- "title": "Sockstat FRAG / RAW",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {
- "custom": {},
- "links": []
- },
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 42
- },
- "id": 220,
- "options": {
- "alertThreshold": true
- },
- "pluginVersion": "7.3.7",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_sockstat_TCP_mem_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "mem_bytes - TCP sockets in that state",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_sockstat_UDP_mem_bytes{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "mem_bytes - UDP sockets in that state",
- "refId": "B",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_sockstat_FRAG_memory{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "FRAG_memory - Used memory for frag",
- "refId": "C"
- }
- ],
- "title": "Sockstat Memory Size",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {
- "custom": {},
- "links": []
- },
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 52
- },
- "id": 126,
- "options": {
- "alertThreshold": true
- },
- "pluginVersion": "7.3.7",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_sockstat_sockets_used{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Sockets_used - Sockets currently in use",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "Sockstat Used",
- "type": "timeseries"
- }
- ],
- "title": "Network Sockstat",
- "type": "row"
- },
- {
- "collapsed": true,
- "gridPos": {
- "h": 1,
- "w": 24,
- "x": 0,
- "y": 58
- },
- "id": 274,
- "panels": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {
- "custom": {},
- "links": []
- },
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 33
- },
- "id": 221,
- "maxPerRow": 12,
- "options": {
- "alertThreshold": true
- },
- "pluginVersion": "7.3.7",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_netstat_IpExt_InOctets{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "InOctets - Received octets",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_netstat_IpExt_OutOctets{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "intervalFactor": 1,
- "legendFormat": "OutOctets - Sent octets",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Netstat IP In / Out Octets",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {
- "custom": {},
- "links": []
- },
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 33
- },
- "id": 81,
- "options": {
- "alertThreshold": true
- },
- "pluginVersion": "7.3.7",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_netstat_Ip_Forwarding{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "Forwarding - IP forwarding",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "Netstat IP Forwarding",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {
- "custom": {},
- "links": []
- },
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 43
- },
- "id": 115,
- "maxPerRow": 12,
- "options": {
- "alertThreshold": true
- },
- "pluginVersion": "7.3.7",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_netstat_Icmp_InMsgs{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "InMsgs - Messages which the entity received. Note that this counter includes all those counted by icmpInErrors",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_netstat_Icmp_OutMsgs{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "OutMsgs - Messages which this entity attempted to send. Note that this counter includes all those counted by icmpOutErrors",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "ICMP In / Out",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {
- "custom": {},
- "links": []
- },
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 43
- },
- "id": 50,
- "maxPerRow": 12,
- "options": {
- "alertThreshold": true
- },
- "pluginVersion": "7.3.7",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_netstat_Icmp_InErrors{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "InErrors - Messages which the entity received but determined as having ICMP-specific errors (bad ICMP checksums, bad length, etc.)",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "ICMP Errors",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {
- "custom": {},
- "links": []
- },
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 53
- },
- "id": 55,
- "maxPerRow": 12,
- "options": {
- "alertThreshold": true
- },
- "pluginVersion": "7.3.7",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_netstat_Udp_InDatagrams{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "InDatagrams - Datagrams received",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_netstat_Udp_OutDatagrams{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "OutDatagrams - Datagrams sent",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "UDP In / Out",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {
- "custom": {},
- "links": []
- },
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 53
- },
- "id": 109,
- "maxPerRow": 12,
- "options": {
- "alertThreshold": true
- },
- "pluginVersion": "7.3.7",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_netstat_Udp_InErrors{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "InErrors - UDP Datagrams that could not be delivered to an application",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_netstat_Udp_NoPorts{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "NoPorts - UDP Datagrams received on a port with no listener",
- "refId": "B",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_netstat_UdpLite_InErrors{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "interval": "",
- "legendFormat": "InErrors Lite - UDPLite Datagrams that could not be delivered to an application",
- "refId": "C"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_netstat_Udp_RcvbufErrors{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "RcvbufErrors - UDP buffer errors received",
- "refId": "D",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_netstat_Udp_SndbufErrors{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "SndbufErrors - UDP buffer errors send",
- "refId": "E",
- "step": 240
- }
- ],
- "title": "UDP Errors",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {
- "custom": {},
- "links": []
- },
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 63
- },
- "id": 299,
- "maxPerRow": 12,
- "options": {
- "alertThreshold": true
- },
- "pluginVersion": "7.3.7",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_netstat_Tcp_InSegs{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "instant": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "InSegs - Segments received, including those received in error. This count includes segments received on currently established connections",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_netstat_Tcp_OutSegs{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "OutSegs - Segments sent, including those on current connections but excluding those containing only retransmitted octets",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "TCP In / Out",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "description": "",
- "fieldConfig": {
- "defaults": {
- "custom": {},
- "links": []
- },
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 63
- },
- "id": 104,
- "maxPerRow": 12,
- "options": {
- "alertThreshold": true
- },
- "pluginVersion": "7.3.7",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_netstat_TcpExt_ListenOverflows{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "hide": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "ListenOverflows - Times the listen queue of a socket overflowed",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_netstat_TcpExt_ListenDrops{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "hide": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "ListenDrops - SYNs to LISTEN sockets ignored",
- "refId": "B",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_netstat_TcpExt_TCPSynRetrans{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "TCPSynRetrans - SYN-SYN/ACK retransmits to break down retransmissions in SYN, fast/timeout retransmits",
- "refId": "C",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_netstat_Tcp_RetransSegs{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "interval": "",
- "legendFormat": "RetransSegs - Segments retransmitted - that is, the number of TCP segments transmitted containing one or more previously transmitted octets",
- "refId": "D"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_netstat_Tcp_InErrs{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "interval": "",
- "legendFormat": "InErrs - Segments received in error (e.g., bad TCP checksums)",
- "refId": "E"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_netstat_Tcp_OutRsts{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "interval": "",
- "legendFormat": "OutRsts - Segments sent with RST flag",
- "refId": "F"
- }
- ],
- "title": "TCP Errors",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {
- "custom": {},
- "links": []
- },
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 73
- },
- "id": 85,
- "maxPerRow": 12,
- "options": {
- "alertThreshold": true
- },
- "pluginVersion": "7.3.7",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_netstat_Tcp_CurrEstab{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "hide": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "CurrEstab - TCP connections for which the current state is either ESTABLISHED or CLOSE- WAIT",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_netstat_Tcp_MaxConn{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "hide": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "MaxConn - Limit on the total number of TCP connections the entity can support (Dinamic is \"-1\")",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "TCP Connections",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "description": "",
- "fieldConfig": {
- "defaults": {
- "custom": {},
- "links": []
- },
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 73
- },
- "id": 91,
- "maxPerRow": 12,
- "options": {
- "alertThreshold": true
- },
- "pluginVersion": "7.3.7",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_netstat_TcpExt_SyncookiesFailed{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "hide": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "SyncookiesFailed - Invalid SYN cookies received",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_netstat_TcpExt_SyncookiesRecv{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "hide": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "SyncookiesRecv - SYN cookies received",
- "refId": "B",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_netstat_TcpExt_SyncookiesSent{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "hide": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "SyncookiesSent - SYN cookies sent",
- "refId": "C",
- "step": 240
- }
- ],
- "title": "TCP SynCookie",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "fieldConfig": {
- "defaults": {
- "custom": {},
- "links": []
- },
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 83
- },
- "id": 82,
- "maxPerRow": 12,
- "options": {
- "alertThreshold": true
- },
- "pluginVersion": "7.3.7",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_netstat_Tcp_ActiveOpens{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "ActiveOpens - TCP connections that have made a direct transition to the SYN-SENT state from the CLOSED state",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "rate(node_netstat_Tcp_PassiveOpens{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}[$__rate_interval])",
- "format": "time_series",
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "PassiveOpens - TCP connections that have made a direct transition to the SYN-RCVD state from the LISTEN state",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "TCP Direct Transition",
- "type": "timeseries"
- }
- ],
- "title": "Network Netstat",
- "type": "row"
- },
- {
- "collapsed": true,
- "gridPos": {
- "h": 1,
- "w": 24,
- "x": 0,
- "y": 59
- },
- "id": 279,
- "panels": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "description": "",
- "fieldConfig": {
- "defaults": {},
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 0,
- "y": 54
- },
- "id": 40,
- "options": {
- "dataLinks": []
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_scrape_collector_duration_seconds{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "hide": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "{{collector}} - Scrape duration",
- "refId": "A",
- "step": 240
- }
- ],
- "title": "Node Exporter Scrape Time",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "description": "",
- "fieldConfig": {
- "defaults": {},
- "overrides": []
- },
- "gridPos": {
- "h": 10,
- "w": 12,
- "x": 12,
- "y": 54
- },
- "id": 157,
- "options": {
- "dataLinks": []
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_scrape_collector_success{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "hide": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "{{collector}} - Scrape success",
- "refId": "A",
- "step": 240
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "expr": "node_textfile_scrape_error{supabase_project_ref=\"$project\", supabase_identifier=~\"${supabase_identifier:pipe}\"}",
- "format": "time_series",
- "hide": false,
- "interval": "",
- "intervalFactor": 1,
- "legendFormat": "{{collector}} - Scrape textfile error (1 = true)",
- "refId": "B",
- "step": 240
- }
- ],
- "title": "Node Exporter Scrape",
- "type": "timeseries"
- }
- ],
- "title": "Node Exporter",
- "type": "row"
- }
- ],
- "schemaVersion": 41,
- "tags": [],
- "templating": {
- "list": [
- {
- "current": {},
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "definition": "label_values(supabase_project_ref)",
- "includeAll": false,
- "label": "Project Ref",
- "name": "project",
- "options": [],
- "query": {
- "query": "label_values(supabase_project_ref)",
- "refId": "PrometheusVariableQueryEditor-VariableQuery"
- },
- "regex": "",
- "type": "query"
- },
- {
- "current": {
- "text": "[a-z]+|nvme[0-9]+n[0-9]+|mmcblk[0-9]+",
- "value": "[a-z]+|nvme[0-9]+n[0-9]+|mmcblk[0-9]+"
- },
- "hide": 2,
- "includeAll": false,
- "name": "diskdevices",
- "options": [
- {
- "selected": true,
- "text": "[a-z]+|nvme[0-9]+n[0-9]+|mmcblk[0-9]+",
- "value": "[a-z]+|nvme[0-9]+n[0-9]+|mmcblk[0-9]+"
- }
- ],
- "query": "[a-z]+|nvme[0-9]+n[0-9]+|mmcblk[0-9]+",
- "type": "custom"
- },
- {
- "allowCustomValue": false,
- "current": {},
- "datasource": {
- "type": "prometheus",
- "uid": "prometheus"
- },
- "definition": "label_values(supabase_identifier)",
- "includeAll": false,
- "label": "Supabase Identifier",
- "name": "supabase_identifier",
- "options": [],
- "query": {
- "query": "label_values(supabase_identifier)",
- "refId": "Prometheus-supabase_identifier-Variable-Query"
- },
- "regex": "",
- "type": "query"
- }
- ]
- },
- "time": {
- "from": "now-6h",
- "to": "now"
- },
- "timepicker": {},
- "timezone": "browser",
- "title": "Supabase",
- "refresh": "10s",
- "uid": "supabase",
- "version": 1,
- "weekStart": ""
-}
diff --git a/monitoring/grafana/provisioning/datasources/postgres.yml b/monitoring/grafana/provisioning/datasources/postgres.yml
deleted file mode 100644
index c4c1bb6..0000000
--- a/monitoring/grafana/provisioning/datasources/postgres.yml
+++ /dev/null
@@ -1,16 +0,0 @@
-apiVersion: 1
-
-datasources:
- - name: PostgreSQL
- type: postgres
- uid: postgres
- url: ${DB_HOST}:${DB_PORT}
- user: ${DB_USERNAME}
- secureJsonData:
- password: ${DB_PASSWORD}
- jsonData:
- database: ${DB_DATABASE}
- sslmode: disable
- postgresVersion: 1500
- timescaledb: false
- editable: false
diff --git a/monitoring/grafana/provisioning/datasources/prometheus.yml b/monitoring/grafana/provisioning/datasources/prometheus.yml
deleted file mode 100644
index 8704d9e..0000000
--- a/monitoring/grafana/provisioning/datasources/prometheus.yml
+++ /dev/null
@@ -1,10 +0,0 @@
-apiVersion: 1
-
-datasources:
- - name: Prometheus
- type: prometheus
- uid: prometheus
- access: proxy
- url: http://prometheus:9090
- isDefault: true
- editable: false
diff --git a/monitoring/letsencrypt/init-letsencrypt.sh b/monitoring/letsencrypt/init-letsencrypt.sh
deleted file mode 100755
index 5f4b056..0000000
--- a/monitoring/letsencrypt/init-letsencrypt.sh
+++ /dev/null
@@ -1,80 +0,0 @@
-#!/bin/bash
-
-if ! docker compose version &>/dev/null; then
- echo 'Error: docker compose is not installed.' >&2
- exit 1
-fi
-
-domains="monitor.connectgnu.kro.kr"
-rsa_key_size=4096
-data_path="./letsencrypt"
-email="connectgnu2024@gmail.com" # Adding a valid address is strongly recommended
-staging=0 # Set to 1 if you're testing your setup to avoid hitting request limits
-
-if [ -d "$data_path/conf/live/$domains" ]; then
- read -p "Existing data found for $domains. Continue and replace existing certificate? (y/N) " decision
- if [ "$decision" != "Y" ] && [ "$decision" != "y" ]; then
- exit
- fi
-fi
-
-
-if [ ! -e "$data_path/conf/options-ssl-nginx.conf" ] || [ ! -e "$data_path/conf/ssl-dhparams.pem" ]; then
- echo "### Downloading recommended TLS parameters ..."
- mkdir -p "$data_path/conf"
- curl -s https://raw.githubusercontent.com/certbot/certbot/master/certbot-nginx/certbot_nginx/_internal/tls_configs/options-ssl-nginx.conf > "$data_path/conf/options-ssl-nginx.conf"
- curl -s https://raw.githubusercontent.com/certbot/certbot/master/certbot/certbot/ssl-dhparams.pem > "$data_path/conf/ssl-dhparams.pem"
- echo
-fi
-
-echo "### Creating dummy certificate for $domains ..."
-path="/etc/letsencrypt/live/$domains"
-mkdir -p "$data_path/conf/live/$domains"
-docker compose run --rm --entrypoint "\
- openssl req -x509 -nodes -newkey rsa:$rsa_key_size -days 1\
- -keyout '$path/privkey.pem' \
- -out '$path/fullchain.pem' \
- -subj '/CN=localhost'" certbot
-echo
-
-
-echo "### Starting nginx ..."
-docker compose up --force-recreate -d nginx
-echo
-
-echo "### Deleting dummy certificate for $domains ..."
-docker compose run --rm --entrypoint "\
- rm -Rf /etc/letsencrypt/live/$domains && \
- rm -Rf /etc/letsencrypt/archive/$domains && \
- rm -Rf /etc/letsencrypt/renewal/$domains.conf" certbot
-echo
-
-
-echo "### Requesting Let's Encrypt certificate for $domains ..."
-#Join $domains to -d args
-domain_args=""
-for domain in "${domains[@]}"; do
- domain_args="$domain_args -d $domain"
-done
-
-# Select appropriate email arg
-case "$email" in
- "") email_arg="--register-unsafely-without-email" ;;
- *) email_arg="--email $email" ;;
-esac
-
-# Enable staging mode if needed
-if [ $staging != "0" ]; then staging_arg="--staging"; fi
-
-docker compose run --rm --entrypoint "\
- certbot certonly --webroot -w /var/www/certbot \
- $staging_arg \
- $email_arg \
- $domain_args \
- --rsa-key-size $rsa_key_size \
- --agree-tos \
- --force-renewal" certbot
-echo
-
-echo "### Reloading nginx ..."
-docker compose exec nginx nginx -s reload
diff --git a/monitoring/nginx/dev.conf b/monitoring/nginx/dev.conf
deleted file mode 100644
index cce142d..0000000
--- a/monitoring/nginx/dev.conf
+++ /dev/null
@@ -1,48 +0,0 @@
-upstream prometheus {
- server prometheus:9090;
-}
-
-upstream grafana {
- server grafana:3000;
-}
-
-# HTTP 설정
-server {
- listen 80;
- underscores_in_headers on;
-
- location /grafana/api/live/ws {
- proxy_pass http://grafana;
- proxy_http_version 1.1;
- proxy_set_header Upgrade $http_upgrade;
- proxy_set_header Connection "upgrade";
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_set_header X-Forwarded-Proto $scheme;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header Host $http_host;
- }
-
- location /grafana {
- proxy_pass http://grafana;
- proxy_pass_request_headers on;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_set_header X-Forwarded-Proto $scheme;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header Host $http_host;
- proxy_set_header X-NginX-Proxy true;
- }
-
- location /prometheus/ {
- proxy_pass http://prometheus/;
- proxy_pass_request_headers on;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_set_header X-Forwarded-Proto $scheme;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header Host $http_host;
- proxy_set_header X-NginX-Proxy true;
- }
-
- location = /prometheus {
- return 301 $scheme://$host/prometheus/;
- }
-}
diff --git a/monitoring/nginx/prod.conf b/monitoring/nginx/prod.conf
deleted file mode 100644
index 4aecc77..0000000
--- a/monitoring/nginx/prod.conf
+++ /dev/null
@@ -1,77 +0,0 @@
-upstream prometheus {
- server prometheus:9090;
-}
-
-upstream grafana {
- server grafana:3000;
-}
-
-# HTTP 설정
-server {
- listen 80;
- server_name monitor.connectgnu.kro.kr;
-
- location / {
- return 301 https://$host$request_uri;
- }
-
- # Let's Encrypt 인증서 발급을 위한 설정
- location /.well-known/acme-challenge/ {
- allow all;
- root /var/www/certbot;
- }
-}
-
-# HTTPS 설정
-server {
- listen 443 ssl;
- http2 on;
- server_name monitor.connectgnu.kro.kr;
-
- # SSL 인증서 설정
- ssl_certificate /etc/letsencrypt/live/monitor.connectgnu.kro.kr/fullchain.pem;
- ssl_certificate_key /etc/letsencrypt/live/monitor.connectgnu.kro.kr/privkey.pem;
-
- # SSL 보안 설정
- include /etc/letsencrypt/options-ssl-nginx.conf;
- ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
-
- location /grafana/api/live/ws {
- proxy_pass http://grafana;
- proxy_http_version 1.1;
- proxy_set_header Upgrade $http_upgrade;
- proxy_set_header Connection "upgrade";
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_set_header X-Forwarded-Proto https;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header Host $http_host;
- }
-
- location /grafana {
- proxy_pass http://grafana;
- proxy_pass_request_headers on;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_set_header X-Forwarded-Proto https;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header Host $http_host;
- proxy_set_header X-NginX-Proxy true;
- }
-
- location /prometheus/ {
- proxy_pass http://prometheus/;
- proxy_pass_request_headers on;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_set_header X-Forwarded-Proto https;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header Host $http_host;
- proxy_set_header X-NginX-Proxy true;
- }
-
- location = /prometheus {
- return 301 $scheme://$host/prometheus/;
- }
-
- location / {
- deny all;
- }
-}
diff --git a/monitoring/prometheus/prometheus.dev.yml b/monitoring/prometheus/prometheus.dev.yml
deleted file mode 100644
index fcf8d0e..0000000
--- a/monitoring/prometheus/prometheus.dev.yml
+++ /dev/null
@@ -1,29 +0,0 @@
-global:
- scrape_interval: 15s
- evaluation_interval: 15s
-
-rule_files:
- # - "first.rules"
- # - "second.rules"
-
-scrape_configs:
- - job_name: prometheus
- static_configs:
- - targets: ['localhost:9090']
- metrics_path: /metrics
-
- - job_name: app
- static_configs:
- - targets: ['host.docker.internal:3000']
- metrics_path: /api/metrics
-
- - job_name: supabase_db
- scheme: https
- metrics_path: /customer/v1/privileged/metrics
- basic_auth:
- username: service_role
- password: __SUPABASE_METRICS_PASSWORD__
- static_configs:
- - targets: ['__SUPABASE_HOST__']
- labels:
- group: supabase_db
diff --git a/monitoring/prometheus/prometheus.yml b/monitoring/prometheus/prometheus.yml
deleted file mode 100644
index c3d843a..0000000
--- a/monitoring/prometheus/prometheus.yml
+++ /dev/null
@@ -1,30 +0,0 @@
-global:
- scrape_interval: 15s
- evaluation_interval: 15s
-
-rule_files:
- # - "first.rules"
- # - "second.rules"
-
-scrape_configs:
- - job_name: prometheus
- static_configs:
- - targets: ['localhost:9090']
- metrics_path: /metrics
-
- - job_name: app
- scheme: https
- static_configs:
- - targets: ['connectgnu.kro.kr']
- metrics_path: /api/metrics
-
- - job_name: supabase_db
- scheme: https
- metrics_path: /customer/v1/privileged/metrics
- basic_auth:
- username: service_role
- password: __SUPABASE_METRICS_PASSWORD__
- static_configs:
- - targets: ['__SUPABASE_HOST__']
- labels:
- group: supabase_db
diff --git a/services/api/app/package.json b/services/api/app/package.json
index 8b6fa83..20b9a11 100644
--- a/services/api/app/package.json
+++ b/services/api/app/package.json
@@ -37,14 +37,12 @@
"@nestjs/typeorm": "^10.0.2",
"@sentry/nestjs": "^10.43.0",
"@sentry/node": "^10.43.0",
- "@willsoto/nestjs-prometheus": "^6.0.2",
"cache-manager": "^5.7.6",
"class-transformer": "^0.5.1",
"class-validator": "^0.14.1",
"joi": "^17.13.3",
"nest-winston": "^1.10.2",
"pg": "^8.12.0",
- "prom-client": "^15.1.3",
"reflect-metadata": "^0.1.13",
"rxjs": "^7.2.0",
"typeorm": "^0.3.20",
diff --git a/services/api/app/pnpm-lock.yaml b/services/api/app/pnpm-lock.yaml
index 5299bdd..0d556e1 100644
--- a/services/api/app/pnpm-lock.yaml
+++ b/services/api/app/pnpm-lock.yaml
@@ -35,9 +35,6 @@ importers:
'@sentry/node':
specifier: ^10.43.0
version: 10.51.0
- '@willsoto/nestjs-prometheus':
- specifier: ^6.0.2
- version: 6.1.0(@nestjs/common@9.4.3(cache-manager@5.7.6)(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.1.14)(rxjs@7.8.2))(prom-client@15.1.3)
cache-manager:
specifier: ^5.7.6
version: 5.7.6
@@ -56,9 +53,6 @@ importers:
pg:
specifier: ^8.12.0
version: 8.20.0
- prom-client:
- specifier: ^15.1.3
- version: 15.1.3
reflect-metadata:
specifier: ^0.1.13
version: 0.1.14
@@ -1145,12 +1139,6 @@ packages:
'@webassemblyjs/wast-printer@1.14.1':
resolution: {integrity: sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==}
- '@willsoto/nestjs-prometheus@6.1.0':
- resolution: {integrity: sha512-lrCEnJBBSzUIYWGR+PsZw1YXs1B9jzxFEuNAa3RzTxuFAFdI+sW7Fp52il/U/dX2MWoHc32x06OS0nm56QwyzQ==}
- peerDependencies:
- '@nestjs/common': ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0
- prom-client: ^15.0.0
-
'@xtuc/ieee754@1.2.0':
resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==}
@@ -1337,9 +1325,6 @@ packages:
resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==}
engines: {node: '>=8'}
- bintrees@1.0.2:
- resolution: {integrity: sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw==}
-
bl@4.1.0:
resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==}
@@ -2870,10 +2855,6 @@ packages:
process-nextick-args@2.0.1:
resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
- prom-client@15.1.3:
- resolution: {integrity: sha512-6ZiOBfCywsD4k1BN9IX0uZhF+tJkV8q8llP64G5Hajs4JOeVLPCwpPVcpXy3BwYiUGgyJzsJJQeOIv7+hDSq8g==}
- engines: {node: ^16 || ^18 || >=20}
-
promise-coalesce@1.5.0:
resolution: {integrity: sha512-cTJ30U+ur1LD7pMPyQxiKIwxjtAjLsyU7ivRhVWZrX9BNIXtf78pc37vSMc8Vikx7DVzEKNk2SEJ5KWUpSG2ig==}
engines: {node: '>=16'}
@@ -3228,9 +3209,6 @@ packages:
resolution: {integrity: sha512-tOG/7GyXpFevhXVh8jOPJrmtRpOTsYqUIkVdVooZYJS/z8WhfQUX8RJILmeuJNinGAMSu1veBr4asSHFt5/hng==}
engines: {node: '>=18'}
- tdigest@0.1.2:
- resolution: {integrity: sha512-+G0LLgjjo9BZX2MfdvPfH+MKLCrxlXSYec5DaPYP1fe6Iyhf0/fSmJ0bFiZ1F8BT6cGXl2LpltQptzjXKWEkKA==}
-
terser-webpack-plugin@5.5.0:
resolution: {integrity: sha512-UYhptBwhWvfIjKd/UuFo6D8uq9xpGLDK+z8EDsj/zWhrTaH34cKEbrkMKfV5YWqGBvAYA3tlzZbs2R+qYrbQJA==}
engines: {node: '>= 10.13.0'}
@@ -4973,11 +4951,6 @@ snapshots:
'@webassemblyjs/ast': 1.14.1
'@xtuc/long': 4.2.2
- '@willsoto/nestjs-prometheus@6.1.0(@nestjs/common@9.4.3(cache-manager@5.7.6)(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.1.14)(rxjs@7.8.2))(prom-client@15.1.3)':
- dependencies:
- '@nestjs/common': 9.4.3(cache-manager@5.7.6)(class-transformer@0.5.1)(class-validator@0.14.4)(reflect-metadata@0.1.14)(rxjs@7.8.2)
- prom-client: 15.1.3
-
'@xtuc/ieee754@1.2.0': {}
'@xtuc/long@4.2.2': {}
@@ -5169,8 +5142,6 @@ snapshots:
binary-extensions@2.3.0: {}
- bintrees@1.0.2: {}
-
bl@4.1.0:
dependencies:
buffer: 5.7.1
@@ -6922,11 +6893,6 @@ snapshots:
process-nextick-args@2.0.1: {}
- prom-client@15.1.3:
- dependencies:
- '@opentelemetry/api': 1.9.1
- tdigest: 0.1.2
-
promise-coalesce@1.5.0: {}
prompts@2.4.2:
@@ -7306,10 +7272,6 @@ snapshots:
minizlib: 3.1.0
yallist: 5.0.0
- tdigest@0.1.2:
- dependencies:
- bintrees: 1.0.2
-
terser-webpack-plugin@5.5.0(webpack@5.82.1):
dependencies:
'@jridgewell/trace-mapping': 0.3.31
diff --git a/services/api/app/src/api/common/interceptors/metrics.interceptor.ts b/services/api/app/src/api/common/interceptors/metrics.interceptor.ts
deleted file mode 100644
index ec9715a..0000000
--- a/services/api/app/src/api/common/interceptors/metrics.interceptor.ts
+++ /dev/null
@@ -1,76 +0,0 @@
-import { CallHandler, ExecutionContext, Injectable, NestInterceptor } from '@nestjs/common';
-import { InjectMetric } from '@willsoto/nestjs-prometheus';
-import { Counter, Histogram } from 'prom-client';
-import { Observable } from 'rxjs';
-import { tap } from 'rxjs/operators';
-
-function normalizePath(path: string): string {
- return (
- path
- .replace(/^\/api/, '')
- .replace(/\/[0-9a-f-]{36}/gi, '/:id')
- .replace(/\/\d+/g, '/:id')
- .replace(/^\/?/, '/api/')
- .replace(/\/$/, '') || '/api'
- );
-}
-
-@Injectable()
-export class MetricsInterceptor implements NestInterceptor {
- constructor(
- @InjectMetric('http_request_duration_seconds')
- private readonly httpRequestDuration: Histogram,
- @InjectMetric('http_requests_total')
- private readonly httpRequestsTotal: Counter,
- @InjectMetric('http_errors_total')
- private readonly httpErrorsTotal: Counter,
- ) {}
-
- intercept(context: ExecutionContext, next: CallHandler): Observable {
- const request = context.switchToHttp().getRequest();
-
- if (request.path === '/api/metrics' || request.path === '/api/health') {
- return next.handle();
- }
-
- const start = Date.now();
- const path = normalizePath(request.path);
- const method = request.method;
-
- return next.handle().pipe(
- tap({
- next: () => {
- this.recordMetrics(context, path, method, start, false);
- },
- error: () => {
- this.recordMetrics(context, path, method, start, true);
- },
- }),
- );
- }
-
- private recordMetrics(
- context: ExecutionContext,
- path: string,
- method: string,
- start: number,
- isError: boolean,
- ): void {
- const response = context.switchToHttp().getResponse();
- const status = isError ? 500 : response.statusCode || 200;
- const durationSeconds = (Date.now() - start) / 1000;
-
- const labels = {
- method,
- path,
- status: String(status),
- };
-
- this.httpRequestDuration.observe(labels, durationSeconds);
- this.httpRequestsTotal.inc(labels);
-
- if (isError || status >= 400) {
- this.httpErrorsTotal.inc(labels);
- }
- }
-}
diff --git a/services/api/app/src/app.module.ts b/services/api/app/src/app.module.ts
index c1cf574..68db0f5 100644
--- a/services/api/app/src/app.module.ts
+++ b/services/api/app/src/app.module.ts
@@ -1,13 +1,8 @@
import { CacheModule } from '@nestjs/cache-manager';
import { Module } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';
-import { APP_FILTER, APP_INTERCEPTOR } from '@nestjs/core';
+import { APP_FILTER } from '@nestjs/core';
import { SentryGlobalFilter, SentryModule } from '@sentry/nestjs/setup';
-import {
- makeCounterProvider,
- makeHistogramProvider,
- PrometheusModule,
-} from '@willsoto/nestjs-prometheus';
import { LoggerModule } from 'src/infrastructure/logger/logger.module';
import { CafeteriasModule } from 'src/api/public/cafeterias/cafeterias.module';
import { CampusesModule } from './api/public/campuses/campuses.module';
@@ -18,7 +13,6 @@ import { DatabaseModule } from './infrastructure/type-orm/database.module';
import { NoticesModule } from './api/public/notices/notices.module';
import { SchedulesModule } from './api/public/schedules/schedules.module';
import { ShuttlesModule } from './api/public/shuttles/shuttles.module';
-import { MetricsInterceptor } from './api/common/interceptors/metrics.interceptor';
import { HealthModule } from './api/internal/health/health.module';
@Module({
@@ -26,7 +20,6 @@ import { HealthModule } from './api/internal/health/health.module';
SentryModule.forRoot(),
LoggerModule,
CacheModule.register({ isGlobal: true, ttl: 60 * 60 * 1000 }),
- PrometheusModule.register(),
DatabaseModule,
UsersModule,
ConfigModule.forRoot({
@@ -46,26 +39,6 @@ import { HealthModule } from './api/internal/health/health.module';
provide: APP_FILTER,
useClass: SentryGlobalFilter,
},
- {
- provide: APP_INTERCEPTOR,
- useClass: MetricsInterceptor,
- },
- makeHistogramProvider({
- name: 'http_request_duration_seconds',
- help: 'HTTP request duration in seconds',
- labelNames: ['method', 'path', 'status'],
- buckets: [0.005, 0.01, 0.025, 0.05, 0.1, 0.25, 0.5, 1, 2.5, 5, 10],
- }),
- makeCounterProvider({
- name: 'http_requests_total',
- help: 'Total number of HTTP requests',
- labelNames: ['method', 'path', 'status'],
- }),
- makeCounterProvider({
- name: 'http_errors_total',
- help: 'Total number of HTTP errors',
- labelNames: ['method', 'path', 'status'],
- }),
],
})
export class AppModule {}
diff --git a/services/api/app/src/instrument.ts b/services/api/app/src/instrument.ts
index 8eea6e4..25ecc05 100644
--- a/services/api/app/src/instrument.ts
+++ b/services/api/app/src/instrument.ts
@@ -11,13 +11,7 @@ Sentry.init({
// Add Performance Monitoring by setting tracesSampleRate
// The value is automatically adjusted depending on the environment
// Learn more about sampling here: https://docs.sentry.io/platforms/javascript/guides/nestjs/configuration/sampling/
- tracesSampler: ({ name }) => {
- if (name.includes('/api/metrics')) {
- return 0;
- }
-
- return 1.0;
- },
+ tracesSampleRate: 1.0,
// Set sampling rate for profiling - this is relative to tracesSampleRate
profilesSampleRate: 1.0,
@@ -38,10 +32,6 @@ Sentry.init({
// Advanced, optional: Called for transaction events, you can further debug your transactions here
beforeSendTransaction(event) {
- if (event.transaction === '/api/metrics') {
- return null;
- }
-
return event;
},
});
diff --git a/services/api/nginx/prod.conf b/services/api/nginx/prod.conf
index ab4e4de..c212f05 100644
--- a/services/api/nginx/prod.conf
+++ b/services/api/nginx/prod.conf
@@ -46,21 +46,6 @@ server {
deny all;
}
- # 모니터링 경로
- location /api/metrics {
- proxy_pass http://app;
- proxy_http_version 1.1;
- proxy_pass_request_headers on;
- proxy_set_header Connection "";
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_set_header X-Forwarded-Proto https;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header Host $http_host;
-
- allow 35.212.243.112;
- deny all;
- }
-
# API 경로
location /api {
proxy_pass http://app;