apiVersion: v1 kind: ConfigMap metadata: name: immich-grafana-dashboard namespace: immich labels: grafana_dashboard: "1" data: immich.json: |- { "uid": "immich", "title": "Immich", "tags": ["immich", "homelab"], "timezone": "browser", "schemaVersion": 39, "version": 1, "refresh": "1m", "time": {"from": "now-6h", "to": "now"}, "panels": [ { "id": 6, "title": "Users", "type": "stat", "datasource": {"type": "prometheus", "uid": "aevstx976yku8a"}, "gridPos": {"x": 0, "y": 0, "w": 6, "h": 4}, "targets": [{"refId": "A", "expr": "max(immich_users_total{namespace=\"immich\",endpoint=\"metrics-api\"})", "instant": true}], "fieldConfig": {"defaults": {"unit": "none"}, "overrides": []}, "options": {"colorMode": "value", "graphMode": "area", "reduceOptions": {"calcs": ["lastNotNull"], "fields": "", "values": false}} }, { "id": 7, "title": "Photos", "type": "stat", "datasource": {"type": "prometheus", "uid": "aevstx976yku8a"}, "gridPos": {"x": 6, "y": 0, "w": 6, "h": 4}, "targets": [{"refId": "A", "expr": "sum(cnpg_immich_user_assets_photos{namespace=\"immich\"})", "instant": true}], "fieldConfig": {"defaults": {"unit": "none"}, "overrides": []}, "options": {"colorMode": "value", "graphMode": "area", "reduceOptions": {"calcs": ["lastNotNull"], "fields": "", "values": false}} }, { "id": 8, "title": "Videos", "type": "stat", "datasource": {"type": "prometheus", "uid": "aevstx976yku8a"}, "gridPos": {"x": 12, "y": 0, "w": 6, "h": 4}, "targets": [{"refId": "A", "expr": "sum(cnpg_immich_user_assets_videos{namespace=\"immich\"})", "instant": true}], "fieldConfig": {"defaults": {"unit": "none"}, "overrides": []}, "options": {"colorMode": "value", "graphMode": "area", "reduceOptions": {"calcs": ["lastNotNull"], "fields": "", "values": false}} }, { "id": 9, "title": "Immich-reported storage", "description": "Sum of active users' quotaUsageInBytes; this is not the bcachefs volume's physical usage.", "type": "stat", "datasource": {"type": "prometheus", "uid": "aevstx976yku8a"}, "gridPos": {"x": 18, "y": 0, "w": 6, "h": 4}, "targets": [{"refId": "A", "expr": "sum(cnpg_immich_user_assets_storage_bytes{namespace=\"immich\"})", "instant": true}], "fieldConfig": {"defaults": {"unit": "bytes"}, "overrides": []}, "options": {"colorMode": "value", "graphMode": "area", "reduceOptions": {"calcs": ["lastNotNull"], "fields": "", "values": false}} }, { "id": 10, "title": "Top users by photos", "type": "bargauge", "datasource": {"type": "prometheus", "uid": "aevstx976yku8a"}, "gridPos": {"x": 0, "y": 4, "w": 8, "h": 8}, "targets": [{"refId": "A", "expr": "topk(10, cnpg_immich_user_assets_photos{namespace=\"immich\"})", "instant": true, "legendFormat": "{{user_guid}}"}], "fieldConfig": {"defaults": {"unit": "none"}, "overrides": []}, "options": {"displayMode": "gradient", "orientation": "horizontal", "showUnfilled": true, "reduceOptions": {"calcs": ["lastNotNull"], "fields": "", "values": false}} }, { "id": 11, "title": "Top users by videos", "type": "bargauge", "datasource": {"type": "prometheus", "uid": "aevstx976yku8a"}, "gridPos": {"x": 8, "y": 4, "w": 8, "h": 8}, "targets": [{"refId": "A", "expr": "topk(10, cnpg_immich_user_assets_videos{namespace=\"immich\"})", "instant": true, "legendFormat": "{{user_guid}}"}], "fieldConfig": {"defaults": {"unit": "none"}, "overrides": []}, "options": {"displayMode": "gradient", "orientation": "horizontal", "showUnfilled": true, "reduceOptions": {"calcs": ["lastNotNull"], "fields": "", "values": false}} }, { "id": 12, "title": "Top users by storage", "type": "bargauge", "datasource": {"type": "prometheus", "uid": "aevstx976yku8a"}, "gridPos": {"x": 16, "y": 4, "w": 8, "h": 8}, "targets": [{"refId": "A", "expr": "topk(10, cnpg_immich_user_assets_storage_bytes{namespace=\"immich\"})", "instant": true, "legendFormat": "{{user_guid}}"}], "fieldConfig": {"defaults": {"unit": "bytes"}, "overrides": []}, "options": {"displayMode": "gradient", "orientation": "horizontal", "showUnfilled": true, "reduceOptions": {"calcs": ["lastNotNull"], "fields": "", "values": false}} }, { "id": 13, "title": "Library growth", "type": "timeseries", "datasource": {"type": "prometheus", "uid": "aevstx976yku8a"}, "gridPos": {"x": 0, "y": 12, "w": 12, "h": 7}, "targets": [ {"refId": "A", "expr": "sum(cnpg_immich_user_assets_photos{namespace=\"immich\"})", "legendFormat": "Photos"}, {"refId": "B", "expr": "sum(cnpg_immich_user_assets_videos{namespace=\"immich\"})", "legendFormat": "Videos"} ], "fieldConfig": {"defaults": {"unit": "none", "custom": {"drawStyle": "line", "lineWidth": 2, "fillOpacity": 10}}, "overrides": []}, "options": {"legend": {"displayMode": "table", "placement": "bottom"}, "tooltip": {"mode": "multi"}} }, { "id": 14, "title": "Active background jobs", "type": "timeseries", "datasource": {"type": "prometheus", "uid": "aevstx976yku8a"}, "gridPos": {"x": 12, "y": 12, "w": 12, "h": 7}, "targets": [ {"refId": "A", "expr": "immich_queues_thumbnail_generation_active{namespace=\"immich\"}", "legendFormat": "Thumbnails"}, {"refId": "B", "expr": "immich_queues_video_conversion_active{namespace=\"immich\"}", "legendFormat": "Video conversion"}, {"refId": "C", "expr": "immich_queues_smart_search_active{namespace=\"immich\"}", "legendFormat": "Smart search"}, {"refId": "D", "expr": "immich_queues_face_detection_active{namespace=\"immich\"}", "legendFormat": "Face detection"}, {"refId": "E", "expr": "immich_queues_facial_recognition_active{namespace=\"immich\"}", "legendFormat": "Facial recognition"}, {"refId": "F", "expr": "immich_queues_ocr_active{namespace=\"immich\"}", "legendFormat": "OCR"} ], "fieldConfig": {"defaults": {"unit": "none", "custom": {"drawStyle": "line", "lineWidth": 2}}, "overrides": []}, "options": {"legend": {"displayMode": "list", "placement": "bottom"}, "tooltip": {"mode": "multi"}} }, { "id": 15, "title": "Completed background jobs per minute", "type": "timeseries", "datasource": {"type": "prometheus", "uid": "aevstx976yku8a"}, "gridPos": {"x": 0, "y": 19, "w": 24, "h": 7}, "targets": [ {"refId": "A", "expr": "60 * rate(immich_jobs_asset_generate_thumbnails_success_total{namespace=\"immich\"}[5m])", "legendFormat": "Thumbnails"}, {"refId": "B", "expr": "60 * rate(immich_jobs_asset_encode_video_success_total{namespace=\"immich\"}[5m])", "legendFormat": "Video conversion"}, {"refId": "C", "expr": "60 * rate(immich_jobs_smart_search_success_total{namespace=\"immich\"}[5m])", "legendFormat": "Smart search"}, {"refId": "D", "expr": "60 * rate(immich_jobs_facial_recognition_success_total{namespace=\"immich\"}[5m])", "legendFormat": "Facial recognition"} ], "fieldConfig": {"defaults": {"unit": "none", "custom": {"drawStyle": "line", "lineWidth": 2}}, "overrides": []}, "options": {"legend": {"displayMode": "list", "placement": "bottom"}, "tooltip": {"mode": "multi"}} }, { "id": 1, "title": "CPU by pod and container", "type": "timeseries", "datasource": {"type": "prometheus", "uid": "aevstx976yku8a"}, "gridPos": {"x": 0, "y": 26, "w": 12, "h": 8}, "targets": [{"refId": "A", "expr": "sum by (pod, container) (rate(container_cpu_usage_seconds_total{namespace=\"immich\",pod=~\"immich-(server|machine-learning|valkey|postgresql-[0-9]+).*\",container!=\"\",container!=\"POD\"}[5m]))", "legendFormat": "{{pod}} / {{container}}"}], "fieldConfig": {"defaults": {"unit": "cores", "custom": {"drawStyle": "line", "lineWidth": 2, "fillOpacity": 10}}, "overrides": []}, "options": {"legend": {"displayMode": "table", "placement": "bottom"}, "tooltip": {"mode": "multi", "sort": "desc"}} }, { "id": 2, "title": "Memory working set by pod and container", "type": "timeseries", "datasource": {"type": "prometheus", "uid": "aevstx976yku8a"}, "gridPos": {"x": 12, "y": 26, "w": 12, "h": 8}, "targets": [{"refId": "A", "expr": "sum by (pod, container) (container_memory_working_set_bytes{namespace=\"immich\",pod=~\"immich-(server|machine-learning|valkey|postgresql-[0-9]+).*\",container!=\"\",container!=\"POD\"})", "legendFormat": "{{pod}} / {{container}}"}], "fieldConfig": {"defaults": {"unit": "bytes", "custom": {"drawStyle": "line", "lineWidth": 2, "fillOpacity": 10}}, "overrides": []}, "options": {"legend": {"displayMode": "table", "placement": "bottom"}, "tooltip": {"mode": "multi", "sort": "desc"}} }, { "id": 3, "title": "Network throughput by pod", "type": "timeseries", "datasource": {"type": "prometheus", "uid": "aevstx976yku8a"}, "gridPos": {"x": 0, "y": 34, "w": 12, "h": 8}, "targets": [ {"refId": "A", "expr": "sum by (pod) (rate(container_network_receive_bytes_total{namespace=\"immich\",pod=~\"immich-(server|machine-learning|valkey|postgresql-[0-9]+).*\",interface!=\"lo\"}[5m]))", "legendFormat": "{{pod}} receive"}, {"refId": "B", "expr": "sum by (pod) (rate(container_network_transmit_bytes_total{namespace=\"immich\",pod=~\"immich-(server|machine-learning|valkey|postgresql-[0-9]+).*\",interface!=\"lo\"}[5m]))", "legendFormat": "{{pod}} transmit"} ], "fieldConfig": {"defaults": {"unit": "Bps", "custom": {"drawStyle": "line", "lineWidth": 2}}, "overrides": []}, "options": {"legend": {"displayMode": "table", "placement": "bottom"}, "tooltip": {"mode": "multi", "sort": "desc"}} }, { "id": 4, "title": "Immich database size", "type": "stat", "datasource": {"type": "prometheus", "uid": "aevstx976yku8a"}, "gridPos": {"x": 12, "y": 34, "w": 12, "h": 4}, "targets": [{"refId": "A", "expr": "max(cnpg_pg_database_size_bytes{namespace=\"immich\",datname=\"immich\"})", "instant": true, "legendFormat": "immich"}], "fieldConfig": {"defaults": {"unit": "bytes", "color": {"mode": "thresholds"}, "thresholds": {"mode": "absolute", "steps": [{"color": "green", "value": null}]}}, "overrides": []}, "options": {"colorMode": "value", "graphMode": "area", "reduceOptions": {"calcs": ["lastNotNull"], "fields": "", "values": false}, "orientation": "auto", "textMode": "auto"} }, { "id": 5, "title": "PostgreSQL replication lag", "type": "timeseries", "datasource": {"type": "prometheus", "uid": "aevstx976yku8a"}, "gridPos": {"x": 12, "y": 38, "w": 12, "h": 4}, "targets": [{"refId": "A", "expr": "max by (pod) (cnpg_pg_replication_lag{namespace=\"immich\"})", "legendFormat": "{{pod}}"}], "fieldConfig": {"defaults": {"unit": "s", "custom": {"drawStyle": "line", "lineWidth": 2}}, "overrides": []}, "options": {"legend": {"displayMode": "list", "placement": "bottom"}, "tooltip": {"mode": "multi"}} } ], "annotations": {"list": []}, "links": [] }