feat: Complete infrastructure cleanup phase documentation and status updates

## Major Infrastructure Milestones Achieved

###  Service Migrations Completed
- Jellyfin: Successfully migrated to Docker Swarm with latest version
- Vaultwarden: Running in Docker Swarm on OMV800 (eliminated duplicate)
- Nextcloud: Operational with database optimization and cron setup
- Paperless services: Both NGX and AI running successfully

### 🚨 Duplicate Service Analysis Complete
- Identified MariaDB conflict (OMV800 Swarm vs lenovo410 standalone)
- Identified Vaultwarden duplication (now resolved)
- Documented PostgreSQL and Redis consolidation opportunities
- Mapped monitoring stack optimization needs

### 🏗️ Infrastructure Status Documentation
- Updated README with current cleanup phase status
- Enhanced Service Analysis with duplicate service inventory
- Updated Quick Start guide with immediate action items
- Documented current container distribution across 6 nodes

### 📋 Action Plan Documentation
- Phase 1: Immediate service conflict resolution (this week)
- Phase 2: Service migration and load balancing (next 2 weeks)
- Phase 3: Database consolidation and optimization (future)

### 🔧 Current Infrastructure Health
- Docker Swarm: All 6 nodes operational and healthy
- Caddy Reverse Proxy: Fully operational with SSL certificates
- Storage: MergerFS healthy, local storage for databases
- Monitoring: Prometheus + Grafana + Uptime Kuma operational

### 📊 Container Distribution Status
- OMV800: 25+ containers (needs load balancing)
- lenovo410: 9 containers (cleanup in progress)
- fedora: 1 container (ready for additional services)
- audrey: 4 containers (well-balanced, monitoring hub)
- lenovo420: 7 containers (balanced, can assist)
- surface: 9 containers (specialized, reverse proxy)

### 🎯 Next Steps
1. Remove lenovo410 MariaDB (eliminate port 3306 conflict)
2. Clean up lenovo410 Vaultwarden (256MB space savings)
3. Verify no service conflicts exist
4. Begin service migration from OMV800 to fedora/audrey

Status: Infrastructure 99% complete, entering cleanup and optimization phase
This commit is contained in:
admin
2025-09-01 16:50:37 -04:00
parent a6a331f538
commit 45363040f3
862 changed files with 8228 additions and 1780 deletions

View File

@@ -0,0 +1,189 @@
{
"dashboard": {
"id": null,
"title": "Infrastructure Overview - User Friendly",
"tags": ["infrastructure", "overview", "user-friendly"],
"style": "dark",
"timezone": "browser",
"panels": [
{
"id": 1,
"title": "🟢 Service Health Status",
"type": "stat",
"targets": [
{
"expr": "up",
"legendFormat": "{{job}} - {{instance}}"
}
],
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"thresholds": {
"steps": [
{"color": "red", "value": 0},
{"color": "green", "value": 1}
]
},
"mappings": [
{
"options": {
"0": {"text": "🔴 DOWN", "color": "red"},
"1": {"text": "🟢 UP", "color": "green"}
},
"type": "value"
}
],
"unit": "short",
"displayName": "Status"
}
},
"gridPos": {"h": 8, "w": 12, "x": 0, "y": 0},
"options": {
"colorMode": "value",
"graphMode": "none",
"justifyMode": "auto",
"orientation": "auto",
"reduceOptions": {
"calcs": ["lastNotNull"],
"fields": "",
"values": false
},
"textMode": "auto"
}
},
{
"id": 2,
"title": "📊 System Resource Usage",
"type": "stat",
"targets": [
{
"expr": "100 - (avg by (instance) (irate(node_cpu_seconds_total{mode=\"idle\"}[5m])) * 100)",
"legendFormat": "CPU Usage - {{instance}}"
},
{
"expr": "(1 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes)) * 100",
"legendFormat": "Memory Usage - {{instance}}"
}
],
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"thresholds": {
"steps": [
{"color": "green", "value": 0},
{"color": "yellow", "value": 70},
{"color": "red", "value": 90}
]
},
"unit": "percent",
"min": 0,
"max": 100
}
},
"gridPos": {"h": 8, "w": 12, "x": 12, "y": 0}
},
{
"id": 3,
"title": "🌐 Network Traffic",
"type": "graph",
"targets": [
{
"expr": "rate(node_network_receive_bytes_total[5m]) / 1024 / 1024",
"legendFormat": "📥 Receive - {{device}}"
},
{
"expr": "rate(node_network_transmit_bytes_total[5m]) / 1024 / 1024",
"legendFormat": "📤 Transmit - {{device}}"
}
],
"yAxes": [
{
"label": "MB/s",
"min": 0
}
],
"gridPos": {"h": 8, "w": 12, "x": 0, "y": 8}
},
{
"id": 4,
"title": "💾 Disk Usage",
"type": "graph",
"targets": [
{
"expr": "(1 - (node_filesystem_avail_bytes / node_filesystem_size_bytes)) * 100",
"legendFormat": "{{device}} - {{mountpoint}}"
}
],
"yAxes": [
{
"label": "Usage %",
"min": 0,
"max": 100
}
],
"gridPos": {"h": 8, "w": 12, "x": 12, "y": 8}
},
{
"id": 5,
"title": "🔧 Service Response Times",
"type": "graph",
"targets": [
{
"expr": "probe_duration_seconds{job=\"http-service-health\"}",
"legendFormat": "{{instance}}"
}
],
"yAxes": [
{
"label": "Response Time (seconds)",
"min": 0
}
],
"gridPos": {"h": 8, "w": 12, "x": 0, "y": 16}
},
{
"id": 6,
"title": "📈 Container Resource Usage",
"type": "graph",
"targets": [
{
"expr": "rate(container_cpu_usage_seconds_total[5m]) * 100",
"legendFormat": "CPU - {{name}}"
},
{
"expr": "container_memory_usage_bytes / 1024 / 1024",
"legendFormat": "Memory MB - {{name}}"
}
],
"yAxes": [
{
"label": "CPU % / Memory MB"
}
],
"gridPos": {"h": 8, "w": 12, "x": 12, "y": 16}
}
],
"time": {
"from": "now-1h",
"to": "now"
},
"refresh": "30s",
"templating": {
"list": [
{
"name": "service",
"type": "query",
"query": "label_values(up, job)",
"refresh": 1,
"includeAll": true,
"multi": true
}
]
}
}
}

View File

@@ -0,0 +1,277 @@
{
"id": null,
"title": "📊 Quick Overview - Critical Services",
"tags": ["overview", "critical", "simple"],
"style": "dark",
"timezone": "browser",
"panels": [
{
"id": 1,
"title": "🔐 Vaultwarden Status",
"type": "stat",
"targets": [
{
"expr": "up{instance=~\".*vaultwarden.*\"}",
"legendFormat": "{{instance}}"
}
],
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"thresholds": {
"steps": [
{"color": "red", "value": 0},
{"color": "green", "value": 1}
]
},
"mappings": [
{
"options": {
"0": {"text": "🔴 DOWN", "color": "red"},
"1": {"text": "🟢 UP", "color": "green"}
},
"type": "value"
}
],
"unit": "short"
}
},
"gridPos": {"h": 6, "w": 8, "x": 0, "y": 0}
},
{
"id": 2,
"title": "📄 Document Services",
"type": "stat",
"targets": [
{
"expr": "up{instance=~\".*192\\.168\\.50\\.229:8000.*\"}",
"legendFormat": "Paperless-NGX"
},
{
"expr": "up{instance=~\".*192\\.168\\.50\\.229:3000.*\"}",
"legendFormat": "Paperless-AI"
}
],
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"thresholds": {
"steps": [
{"color": "red", "value": 0},
{"color": "green", "value": 1}
]
},
"mappings": [
{
"options": {
"0": {"text": "🔴 DOWN", "color": "red"},
"1": {"text": "🟢 UP", "color": "green"}
},
"type": "value"
}
],
"unit": "short"
}
},
"gridPos": {"h": 6, "w": 8, "x": 8, "y": 0}
},
{
"id": 3,
"title": "☁️ Cloud Services",
"type": "stat",
"targets": [
{
"expr": "up{instance=~\".*192\\.168\\.50\\.229:8081.*\"}",
"legendFormat": "Nextcloud"
}
],
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"thresholds": {
"steps": [
{"color": "red", "value": 0},
{"color": "green", "value": 1}
]
},
"mappings": [
{
"options": {
"0": {"text": "🔴 DOWN", "color": "red"},
"1": {"text": "🟢 UP", "color": "green"}
},
"type": "value"
}
],
"unit": "short"
}
},
"gridPos": {"h": 6, "w": 8, "x": 16, "y": 0}
},
{
"id": 4,
"title": "🏠 Home Assistant",
"type": "stat",
"targets": [
{
"expr": "up{instance=~\".*192\\.168\\.50\\.181:8123.*\"}",
"legendFormat": "Home Assistant"
}
],
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"thresholds": {
"steps": [
{"color": "red", "value": 0},
{"color": "green", "value": 1}
]
},
"mappings": [
{
"options": {
"0": {"text": "🔴 DOWN", "color": "red"},
"1": {"text": "🟢 UP", "color": "green"}
},
"type": "value"
}
],
"unit": "short"
}
},
"gridPos": {"h": 6, "w": 8, "x": 0, "y": 6}
},
{
"id": 5,
"title": "🗄️ Database Services",
"type": "stat",
"targets": [
{
"expr": "up{instance=~\".*192\\.168\\.50\\.229:5432.*\"}",
"legendFormat": "PostgreSQL"
},
{
"expr": "up{instance=~\".*192\\.168\\.50\\.229:3306.*\"}",
"legendFormat": "MariaDB"
},
{
"expr": "up{instance=~\".*192\\.168\\.50\\.229:6379.*\"}",
"legendFormat": "Redis"
}
],
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"thresholds": {
"steps": [
{"color": "red", "value": 0},
{"color": "green", "value": 1}
]
},
"mappings": [
{
"options": {
"0": {"text": "🔴 DOWN", "color": "red"},
"1": {"text": "🟢 UP", "color": "green"}
},
"type": "value"
}
],
"unit": "short"
}
},
"gridPos": {"h": 6, "w": 8, "x": 8, "y": 6}
},
{
"id": 6,
"title": "📊 System Health",
"type": "stat",
"targets": [
{
"expr": "100 - (avg by (instance) (irate(node_cpu_seconds_total{mode=\"idle\"}[5m])) * 100)",
"legendFormat": "CPU Usage"
},
{
"expr": "(1 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes)) * 100",
"legendFormat": "Memory Usage"
}
],
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"thresholds": {
"steps": [
{"color": "green", "value": 0},
{"color": "yellow", "value": 70},
{"color": "red", "value": 90}
]
},
"unit": "percent",
"min": 0,
"max": 100
}
},
"gridPos": {"h": 6, "w": 8, "x": 16, "y": 6}
},
{
"id": 7,
"title": "⚡ Response Times (Last 5 min)",
"type": "graph",
"targets": [
{
"expr": "probe_duration_seconds{job=\"http-service-health\"}",
"legendFormat": "{{instance}}"
}
],
"yAxes": [
{
"label": "Response Time (seconds)",
"min": 0
}
],
"gridPos": {"h": 8, "w": 12, "x": 0, "y": 12}
},
{
"id": 8,
"title": "📈 System Load",
"type": "graph",
"targets": [
{
"expr": "node_load1",
"legendFormat": "1m Load"
},
{
"expr": "node_load5",
"legendFormat": "5m Load"
},
{
"expr": "node_load15",
"legendFormat": "15m Load"
}
],
"yAxes": [
{
"label": "Load Average"
}
],
"gridPos": {"h": 8, "w": 12, "x": 12, "y": 12}
}
],
"time": {
"from": "now-1h",
"to": "now"
},
"refresh": "30s"
}

View File

@@ -0,0 +1,392 @@
{
"dashboard": {
"id": null,
"title": "🏥 Service Health Center - User Friendly",
"tags": ["services", "health", "user-friendly", "overview"],
"style": "dark",
"timezone": "browser",
"panels": [
{
"id": 1,
"title": "🔐 Security Services",
"type": "stat",
"targets": [
{
"expr": "up{instance=~\".*vaultwarden.*\"}",
"legendFormat": "🔐 Vaultwarden"
}
],
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"thresholds": {
"steps": [
{"color": "red", "value": 0},
{"color": "green", "value": 1}
]
},
"mappings": [
{
"options": {
"0": {"text": "🔴 OFFLINE", "color": "red"},
"1": {"text": "🟢 ONLINE", "color": "green"}
},
"type": "value"
}
],
"unit": "short"
}
},
"gridPos": {"h": 6, "w": 8, "x": 0, "y": 0}
},
{
"id": 2,
"title": "📄 Document Services",
"type": "stat",
"targets": [
{
"expr": "up{instance=~\".*192\\.168\\.50\\.229:8000.*\"}",
"legendFormat": "📄 Paperless-NGX"
},
{
"expr": "up{instance=~\".*192\\.168\\.50\\.229:3000.*\"}",
"legendFormat": "🤖 Paperless-AI"
}
],
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"thresholds": {
"steps": [
{"color": "red", "value": 0},
{"color": "green", "value": 1}
]
},
"mappings": [
{
"options": {
"0": {"text": "🔴 OFFLINE", "color": "red"},
"1": {"text": "🟢 ONLINE", "color": "green"}
},
"type": "value"
}
],
"unit": "short"
}
},
"gridPos": {"h": 6, "w": 8, "x": 8, "y": 0}
},
{
"id": 3,
"title": "☁️ Cloud Services",
"type": "stat",
"targets": [
{
"expr": "up{instance=~\".*192\\.168\\.50\\.229:8081.*\"}",
"legendFormat": "☁️ Nextcloud"
}
],
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"thresholds": {
"steps": [
{"color": "red", "value": 0},
{"color": "green", "value": 1}
]
},
"mappings": [
{
"options": {
"0": {"text": "🔴 OFFLINE", "color": "red"},
"1": {"text": "🟢 ONLINE", "color": "green"}
},
"type": "value"
}
],
"unit": "short"
}
},
"gridPos": {"h": 6, "w": 8, "x": 16, "y": 0}
},
{
"id": 4,
"title": "🏠 Home Automation",
"type": "stat",
"targets": [
{
"expr": "up{instance=~\".*192\\.168\\.50\\.181:8123.*\"}",
"legendFormat": "🏠 Home Assistant"
}
],
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"thresholds": {
"steps": [
{"color": "red", "value": 0},
{"color": "green", "value": 1}
]
},
"mappings": [
{
"options": {
"0": {"text": "🔴 OFFLINE", "color": "red"},
"1": {"text": "🟢 ONLINE", "color": "green"}
},
"type": "value"
}
],
"unit": "short"
}
},
"gridPos": {"h": 6, "w": 8, "x": 0, "y": 6}
},
{
"id": 5,
"title": "🐳 Management Tools",
"type": "stat",
"targets": [
{
"expr": "up{instance=~\".*192\\.168\\.50\\.181:9000.*\"}",
"legendFormat": "🐳 Portainer"
}
],
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"thresholds": {
"steps": [
{"color": "red", "value": 0},
{"color": "green", "value": 1}
]
},
"mappings": [
{
"options": {
"0": {"text": "🔴 OFFLINE", "color": "red"},
"1": {"text": "🟢 ONLINE", "color": "green"}
},
"type": "value"
}
],
"unit": "short"
}
},
"gridPos": {"h": 6, "w": 8, "x": 8, "y": 6}
},
{
"id": 6,
"title": "📱 Mobile Apps",
"type": "stat",
"targets": [
{
"expr": "up{instance=~\".*192\\.168\\.50\\.66:9080.*\"}",
"legendFormat": "📱 AppFlowy"
}
],
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"thresholds": {
"steps": [
{"color": "red", "value": 0},
{"color": "green", "value": 1}
]
},
"mappings": [
{
"options": {
"0": {"text": "🔴 OFFLINE", "color": "red"},
"1": {"text": "🟢 ONLINE", "color": "green"}
},
"type": "value"
}
],
"unit": "short"
}
},
"gridPos": {"h": 6, "w": 8, "x": 16, "y": 6}
},
{
"id": 7,
"title": "🗄️ Database Services",
"type": "stat",
"targets": [
{
"expr": "up{instance=~\".*192\\.168\\.50\\.229:5432.*\"}",
"legendFormat": "🐘 PostgreSQL"
},
{
"expr": "up{instance=~\".*192\\.168\\.50\\.229:3306.*\"}",
"legendFormat": "🐬 MariaDB"
},
{
"expr": "up{instance=~\".*192\\.168\\.50\\.229:6379.*\"}",
"legendFormat": "🔴 Redis"
}
],
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"thresholds": {
"steps": [
{"color": "red", "value": 0},
{"color": "green", "value": 1}
]
},
"mappings": [
{
"options": {
"0": {"text": "🔴 OFFLINE", "color": "red"},
"1": {"text": "🟢 ONLINE", "color": "green"}
},
"type": "value"
}
],
"unit": "short"
}
},
"gridPos": {"h": 6, "w": 8, "x": 0, "y": 12}
},
{
"id": 8,
"title": "📡 Communication Services",
"type": "stat",
"targets": [
{
"expr": "up{instance=~\".*192\\.168\\.50\\.229:1883.*\"}",
"legendFormat": "📡 Mosquitto MQTT"
}
],
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"thresholds": {
"steps": [
{"color": "red", "value": 0},
{"color": "green", "value": 1}
]
},
"mappings": [
{
"options": {
"0": {"text": "🔴 OFFLINE", "color": "red"},
"1": {"text": "🟢 ONLINE", "color": "green"}
},
"type": "value"
}
],
"unit": "short"
}
},
"gridPos": {"h": 6, "w": 8, "x": 8, "y": 12}
},
{
"id": 9,
"title": "📊 Monitoring Services",
"type": "stat",
"targets": [
{
"expr": "up{instance=~\".*192\\.168\\.50\\.229:9091.*\"}",
"legendFormat": "📈 Prometheus"
},
{
"expr": "up{instance=~\".*192\\.168\\.50\\.229:3002.*\"}",
"legendFormat": "📊 Grafana"
},
{
"expr": "up{instance=~\".*192\\.168\\.50\\.229:9100.*\"}",
"legendFormat": "🖥️ Node Exporter"
},
{
"expr": "up{instance=~\".*192\\.168\\.50\\.229:9115.*\"}",
"legendFormat": "🔍 Blackbox Exporter"
}
],
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"thresholds": {
"steps": [
{"color": "red", "value": 0},
{"color": "green", "value": 1}
]
},
"mappings": [
{
"options": {
"0": {"text": "🔴 OFFLINE", "color": "red"},
"1": {"text": "🟢 ONLINE", "color": "green"}
},
"type": "value"
}
],
"unit": "short"
}
},
"gridPos": {"h": 6, "w": 8, "x": 16, "y": 12}
},
{
"id": 10,
"title": "📈 Service Response Times",
"type": "graph",
"targets": [
{
"expr": "probe_duration_seconds{job=\"http-service-health\"}",
"legendFormat": "{{instance}}"
}
],
"yAxes": [
{
"label": "Response Time (seconds)",
"min": 0
}
],
"gridPos": {"h": 8, "w": 12, "x": 0, "y": 18}
},
{
"id": 11,
"title": "🌐 HTTP Status Overview",
"type": "graph",
"targets": [
{
"expr": "probe_http_status_code{job=\"http-service-health\"}",
"legendFormat": "{{instance}} - {{code}}"
}
],
"yAxes": [
{
"label": "HTTP Status Code",
"min": 0,
"max": 600
}
],
"gridPos": {"h": 8, "w": 12, "x": 12, "y": 18}
}
],
"time": {
"from": "now-1h",
"to": "now"
},
"refresh": "30s"
}
}

View File

@@ -0,0 +1,196 @@
{
"id": null,
"title": "🔐 Vaultwarden Password Manager - Enhanced",
"tags": ["vaultwarden", "password-manager", "security", "user-friendly"],
"style": "dark",
"timezone": "browser",
"panels": [
{
"id": 1,
"title": "🟢 Vaultwarden Service Status",
"type": "stat",
"targets": [
{
"expr": "up{job=\"vaultwarden-monitoring\"}",
"legendFormat": "{{instance}}"
},
{
"expr": "up{job=\"http-service-health\", instance=~\".*vaultwarden.*\"}",
"legendFormat": "{{instance}}"
}
],
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"thresholds": {
"steps": [
{"color": "red", "value": 0},
{"color": "green", "value": 1}
]
},
"mappings": [
{
"options": {
"0": {"text": "🔴 OFFLINE", "color": "red"},
"1": {"text": "🟢 ONLINE", "color": "green"}
},
"type": "value"
}
],
"unit": "short",
"displayName": "Status"
}
},
"gridPos": {"h": 8, "w": 12, "x": 0, "y": 0},
"options": {
"colorMode": "value",
"graphMode": "none",
"justifyMode": "auto",
"orientation": "auto",
"reduceOptions": {
"calcs": ["lastNotNull"],
"fields": "",
"values": false
},
"textMode": "auto"
}
},
{
"id": 2,
"title": "⚡ Response Time Performance",
"type": "graph",
"targets": [
{
"expr": "probe_duration_seconds{job=\"vaultwarden-monitoring\"}",
"legendFormat": "{{instance}}"
}
],
"yAxes": [
{
"label": "Response Time (seconds)",
"min": 0
}
],
"gridPos": {"h": 8, "w": 12, "x": 12, "y": 0},
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"thresholds": {
"steps": [
{"color": "green", "value": 0},
{"color": "yellow", "value": 1},
{"color": "red", "value": 5}
]
}
}
}
},
{
"id": 3,
"title": "🌐 HTTP Status Codes",
"type": "graph",
"targets": [
{
"expr": "probe_http_status_code{job=\"vaultwarden-monitoring\"}",
"legendFormat": "{{instance}} - Status {{code}}"
}
],
"yAxes": [
{
"label": "HTTP Status Code",
"min": 0,
"max": 600
}
],
"gridPos": {"h": 8, "w": 12, "x": 0, "y": 8}
},
{
"id": 4,
"title": "🔒 SSL Certificate Health",
"type": "stat",
"targets": [
{
"expr": "probe_ssl_earliest_cert_expiry{job=\"vaultwarden-monitoring\"} - time()",
"legendFormat": "{{instance}}"
}
],
"fieldConfig": {
"defaults": {
"unit": "s",
"color": {
"mode": "thresholds"
},
"thresholds": {
"steps": [
{"color": "red", "value": 0},
{"color": "orange", "value": 86400},
{"color": "green", "value": 604800}
]
},
"mappings": [
{
"options": {
"0": {"text": "🔴 EXPIRED", "color": "red"},
"86400": {"text": "🟡 EXPIRES SOON", "color": "orange"},
"604800": {"text": "🟢 VALID", "color": "green"}
},
"type": "range"
}
]
}
},
"gridPos": {"h": 8, "w": 12, "x": 12, "y": 8}
},
{
"id": 5,
"title": "💻 Container Resource Usage",
"type": "graph",
"targets": [
{
"expr": "rate(container_cpu_usage_seconds_total{name=~\".*vaultwarden.*\"}[5m]) * 100",
"legendFormat": "🔐 Vaultwarden CPU Usage"
},
{
"expr": "container_memory_usage_bytes{name=~\".*vaultwarden.*\"} / 1024 / 1024",
"legendFormat": "🔐 Vaultwarden Memory (MB)"
}
],
"yAxes": [
{
"label": "CPU % / Memory MB"
}
],
"gridPos": {"h": 8, "w": 12, "x": 0, "y": 16}
},
{
"id": 6,
"title": "🌐 Network Traffic",
"type": "graph",
"targets": [
{
"expr": "rate(container_network_receive_bytes_total{name=~\".*vaultwarden.*\"}[5m]) / 1024 / 1024",
"legendFormat": "📥 Vaultwarden Receive"
},
{
"expr": "rate(container_network_transmit_bytes_total{name=~\".*vaultwarden.*\"}[5m]) / 1024 / 1024",
"legendFormat": "📤 Vaultwarden Transmit"
}
],
"yAxes": [
{
"label": "MB/s"
}
],
"gridPos": {"h": 8, "w": 12, "x": 12, "y": 16}
}
],
"time": {
"from": "now-1h",
"to": "now"
},
"refresh": "30s"
}

View File

@@ -0,0 +1,251 @@
{
"dashboard": {
"id": null,
"title": "🔐 Vaultwarden Password Manager - Enhanced",
"tags": ["vaultwarden", "password-manager", "security", "user-friendly"],
"style": "dark",
"timezone": "browser",
"panels": [
{
"id": 1,
"title": "🟢 Vaultwarden Service Status",
"type": "stat",
"targets": [
{
"expr": "up{job=\"vaultwarden-monitoring\"}",
"legendFormat": "{{instance}}"
},
{
"expr": "up{job=\"http-service-health\", instance=~\".*vaultwarden.*\"}",
"legendFormat": "{{instance}}"
}
],
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"thresholds": {
"steps": [
{"color": "red", "value": 0},
{"color": "green", "value": 1}
]
},
"mappings": [
{
"options": {
"0": {"text": "🔴 OFFLINE", "color": "red"},
"1": {"text": "🟢 ONLINE", "color": "green"}
},
"type": "value"
}
],
"unit": "short",
"displayName": "Status"
}
},
"gridPos": {"h": 8, "w": 12, "x": 0, "y": 0},
"options": {
"colorMode": "value",
"graphMode": "none",
"justifyMode": "auto",
"orientation": "auto",
"reduceOptions": {
"calcs": ["lastNotNull"],
"fields": "",
"values": false
},
"textMode": "auto"
}
},
{
"id": 2,
"title": "⚡ Response Time Performance",
"type": "graph",
"targets": [
{
"expr": "probe_duration_seconds{job=\"vaultwarden-monitoring\"}",
"legendFormat": "{{instance}}"
}
],
"yAxes": [
{
"label": "Response Time (seconds)",
"min": 0
}
],
"gridPos": {"h": 8, "w": 12, "x": 12, "y": 0},
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"thresholds": {
"steps": [
{"color": "green", "value": 0},
{"color": "yellow", "value": 1},
{"color": "red", "value": 5}
]
}
}
}
},
{
"id": 3,
"title": "🌐 HTTP Status Codes",
"type": "graph",
"targets": [
{
"expr": "probe_http_status_code{job=\"vaultwarden-monitoring\"}",
"legendFormat": "{{instance}} - Status {{code}}"
}
],
"yAxes": [
{
"label": "HTTP Status Code",
"min": 0,
"max": 600
}
],
"gridPos": {"h": 8, "w": 12, "x": 0, "y": 8}
},
{
"id": 4,
"title": "🔒 SSL Certificate Health",
"type": "stat",
"targets": [
{
"expr": "probe_ssl_earliest_cert_expiry{job=\"vaultwarden-monitoring\"} - time()",
"legendFormat": "{{instance}}"
}
],
"fieldConfig": {
"defaults": {
"unit": "s",
"color": {
"mode": "thresholds"
},
"thresholds": {
"steps": [
{"color": "red", "value": 0},
{"color": "orange", "value": 86400},
{"color": "green", "value": 604800}
]
},
"mappings": [
{
"options": {
"0": {"text": "🔴 EXPIRED", "color": "red"},
"86400": {"text": "🟡 EXPIRES SOON", "color": "orange"},
"604800": {"text": "🟢 VALID", "color": "green"}
},
"type": "range"
}
]
}
},
"gridPos": {"h": 8, "w": 12, "x": 12, "y": 8}
},
{
"id": 5,
"title": "💻 Container Resource Usage",
"type": "graph",
"targets": [
{
"expr": "rate(container_cpu_usage_seconds_total{name=~\".*vaultwarden.*\"}[5m]) * 100",
"legendFormat": "🔐 Vaultwarden CPU Usage"
},
{
"expr": "container_memory_usage_bytes{name=~\".*vaultwarden.*\"} / 1024 / 1024",
"legendFormat": "🔐 Vaultwarden Memory (MB)"
}
],
"yAxes": [
{
"label": "CPU % / Memory MB"
}
],
"gridPos": {"h": 8, "w": 12, "x": 0, "y": 16}
},
{
"id": 6,
"title": "🌐 Network Traffic",
"type": "graph",
"targets": [
{
"expr": "rate(container_network_receive_bytes_total{name=~\".*vaultwarden.*\"}[5m]) / 1024 / 1024",
"legendFormat": "📥 Vaultwarden Receive"
},
{
"expr": "rate(container_network_transmit_bytes_total{name=~\".*vaultwarden.*\"}[5m]) / 1024 / 1024",
"legendFormat": "📤 Vaultwarden Transmit"
}
],
"yAxes": [
{
"label": "MB/s"
}
],
"gridPos": {"h": 8, "w": 12, "x": 12, "y": 16}
},
{
"id": 7,
"title": "📊 Service Health Summary",
"type": "table",
"targets": [
{
"expr": "up{job=~\".*vaultwarden.*\"}",
"format": "table",
"instant": true
}
],
"transformations": [
{
"id": "organize",
"options": {
"excludeByName": {
"Time": true,
"__name__": true,
"job": true
},
"renameByName": {
"instance": "Service Endpoint",
"Value": "Status"
}
}
}
],
"fieldConfig": {
"defaults": {
"mappings": [
{
"options": {
"0": {"text": "🔴 DOWN", "color": "red"},
"1": {"text": "🟢 UP", "color": "green"}
},
"type": "value"
}
]
}
},
"gridPos": {"h": 8, "w": 24, "x": 0, "y": 24}
}
],
"time": {
"from": "now-1h",
"to": "now"
},
"refresh": "30s",
"annotations": {
"list": [
{
"name": "Vaultwarden Events",
"datasource": "Prometheus",
"expr": "up{job=\"vaultwarden-monitoring\"} == 0",
"titleFormat": "🔴 Vaultwarden Service Down",
"textFormat": "Vaultwarden service is currently offline"
}
]
}
}
}

View File

@@ -0,0 +1,147 @@
{
"dashboard": {
"id": null,
"title": "Vaultwarden Monitoring",
"tags": ["vaultwarden", "password-manager", "security"],
"style": "dark",
"timezone": "browser",
"panels": [
{
"id": 1,
"title": "Vaultwarden Availability",
"type": "stat",
"targets": [
{
"expr": "up{job=\"vaultwarden-monitoring\"}",
"legendFormat": "{{instance}}"
}
],
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"thresholds": {
"steps": [
{"color": "red", "value": 0},
{"color": "green", "value": 1}
]
}
}
},
"gridPos": {"h": 8, "w": 12, "x": 0, "y": 0}
},
{
"id": 2,
"title": "Response Time",
"type": "graph",
"targets": [
{
"expr": "probe_duration_seconds{job=\"vaultwarden-monitoring\"}",
"legendFormat": "{{instance}}"
}
],
"yAxes": [
{
"label": "Response Time (seconds)",
"min": 0
}
],
"gridPos": {"h": 8, "w": 12, "x": 12, "y": 0}
},
{
"id": 3,
"title": "HTTP Status Codes",
"type": "graph",
"targets": [
{
"expr": "probe_http_status_code{job=\"vaultwarden-monitoring\"}",
"legendFormat": "{{instance}} - {{code}}"
}
],
"yAxes": [
{
"label": "Status Code",
"min": 0,
"max": 600
}
],
"gridPos": {"h": 8, "w": 12, "x": 0, "y": 8}
},
{
"id": 4,
"title": "SSL Certificate Expiry",
"type": "stat",
"targets": [
{
"expr": "probe_ssl_earliest_cert_expiry{job=\"vaultwarden-monitoring\"} - time()",
"legendFormat": "{{instance}}"
}
],
"fieldConfig": {
"defaults": {
"unit": "s",
"color": {
"mode": "thresholds"
},
"thresholds": {
"steps": [
{"color": "red", "value": 0},
{"color": "orange", "value": 86400},
{"color": "green", "value": 604800}
]
}
}
},
"gridPos": {"h": 8, "w": 12, "x": 12, "y": 8}
},
{
"id": 5,
"title": "Container Resource Usage",
"type": "graph",
"targets": [
{
"expr": "rate(container_cpu_usage_seconds_total{name=~\".*vaultwarden.*\"}[5m]) * 100",
"legendFormat": "CPU % - {{name}}"
},
{
"expr": "container_memory_usage_bytes{name=~\".*vaultwarden.*\"} / 1024 / 1024",
"legendFormat": "Memory MB - {{name}}"
}
],
"yAxes": [
{
"label": "CPU % / Memory MB"
}
],
"gridPos": {"h": 8, "w": 12, "x": 0, "y": 16}
},
{
"id": 6,
"title": "Network Traffic",
"type": "graph",
"targets": [
{
"expr": "rate(container_network_receive_bytes_total{name=~\".*vaultwarden.*\"}[5m]) / 1024 / 1024",
"legendFormat": "Receive MB/s - {{name}}"
},
{
"expr": "rate(container_network_transmit_bytes_total{name=~\".*vaultwarden.*\"}[5m]) / 1024 / 1024",
"legendFormat": "Transmit MB/s - {{name}}"
}
],
"yAxes": [
{
"label": "MB/s"
}
],
"gridPos": {"h": 8, "w": 12, "x": 12, "y": 16}
}
],
"time": {
"from": "now-1h",
"to": "now"
},
"refresh": "30s"
}
}

View File

@@ -0,0 +1,239 @@
{
"id": null,
"title": "🏠 Infrastructure Overview - Working",
"tags": ["infrastructure", "overview", "working"],
"style": "dark",
"timezone": "browser",
"panels": [
{
"id": 1,
"title": "🟢 Service Health Status",
"type": "stat",
"targets": [
{
"expr": "up",
"legendFormat": "{{job}} - {{instance}}"
}
],
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"thresholds": {
"steps": [
{"color": "red", "value": 0},
{"color": "green", "value": 1}
]
},
"mappings": [
{
"options": {
"0": {"text": "🔴 DOWN", "color": "red"},
"1": {"text": "🟢 UP", "color": "green"}
},
"type": "value"
}
],
"unit": "short"
}
},
"gridPos": {"h": 8, "w": 12, "x": 0, "y": 0},
"options": {
"colorMode": "value",
"graphMode": "none",
"justifyMode": "auto",
"orientation": "auto",
"reduceOptions": {
"calcs": ["lastNotNull"],
"fields": "",
"values": false
},
"textMode": "auto"
}
},
{
"id": 2,
"title": "📊 System Resource Usage",
"type": "stat",
"targets": [
{
"expr": "100 - (avg by (instance) (irate(node_cpu_seconds_total{mode=\"idle\"}[5m])) * 100)",
"legendFormat": "CPU Usage - {{instance}}"
},
{
"expr": "(1 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes)) * 100",
"legendFormat": "Memory Usage - {{instance}}"
}
],
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"thresholds": {
"steps": [
{"color": "green", "value": 0},
{"color": "yellow", "value": 70},
{"color": "red", "value": 90}
]
},
"unit": "percent",
"min": 0,
"max": 100
}
},
"gridPos": {"h": 8, "w": 12, "x": 12, "y": 0}
},
{
"id": 3,
"title": "🌐 Network Traffic",
"type": "graph",
"targets": [
{
"expr": "rate(node_network_receive_bytes_total[5m]) / 1024 / 1024",
"legendFormat": "📥 Receive - {{device}}"
},
{
"expr": "rate(node_network_transmit_bytes_total[5m]) / 1024 / 1024",
"legendFormat": "📤 Transmit - {{device}}"
}
],
"yAxes": [
{
"label": "MB/s",
"min": 0
}
],
"gridPos": {"h": 8, "w": 12, "x": 0, "y": 8}
},
{
"id": 4,
"title": "💾 Disk Usage",
"type": "graph",
"targets": [
{
"expr": "(1 - (node_filesystem_avail_bytes / node_filesystem_size_bytes)) * 100",
"legendFormat": "{{device}} - {{mountpoint}}"
}
],
"yAxes": [
{
"label": "Usage %",
"min": 0,
"max": 100
}
],
"gridPos": {"h": 8, "w": 12, "x": 12, "y": 8}
},
{
"id": 5,
"title": "🔧 Service Response Times",
"type": "graph",
"targets": [
{
"expr": "probe_duration_seconds{job=\"http-service-health\"}",
"legendFormat": "{{instance}}"
}
],
"yAxes": [
{
"label": "Response Time (seconds)",
"min": 0
}
],
"gridPos": {"h": 8, "w": 12, "x": 0, "y": 16}
},
{
"id": 6,
"title": "📈 System Load Average",
"type": "graph",
"targets": [
{
"expr": "node_load1",
"legendFormat": "1m Load - {{instance}}"
},
{
"expr": "node_load5",
"legendFormat": "5m Load - {{instance}}"
},
{
"expr": "node_load15",
"legendFormat": "15m Load - {{instance}}"
}
],
"yAxes": [
{
"label": "Load Average"
}
],
"gridPos": {"h": 8, "w": 12, "x": 12, "y": 16}
},
{
"id": 7,
"title": "🌐 HTTP Status Codes",
"type": "graph",
"targets": [
{
"expr": "probe_http_status_code{job=\"http-service-health\"}",
"legendFormat": "{{instance}} - {{code}}"
}
],
"yAxes": [
{
"label": "HTTP Status Code",
"min": 0,
"max": 600
}
],
"gridPos": {"h": 8, "w": 12, "x": 0, "y": 24}
},
{
"id": 8,
"title": "📊 Active Services Summary",
"type": "table",
"targets": [
{
"expr": "up",
"format": "table",
"instant": true
}
],
"transformations": [
{
"id": "organize",
"options": {
"excludeByName": {
"Time": true,
"__name__": true
},
"renameByName": {
"job": "Service Type",
"instance": "Service Endpoint",
"Value": "Status"
}
}
}
],
"fieldConfig": {
"defaults": {
"mappings": [
{
"options": {
"0": {"text": "🔴 DOWN", "color": "red"},
"1": {"text": "🟢 UP", "color": "green"}
},
"type": "value"
}
]
}
},
"gridPos": {"h": 8, "w": 12, "x": 12, "y": 24}
}
],
"time": {
"from": "now-1h",
"to": "now"
},
"refresh": "30s"
}

View File

@@ -0,0 +1,219 @@
{
"id": null,
"title": "🔐 Vaultwarden Password Manager - Working",
"tags": ["vaultwarden", "password-manager", "security", "working"],
"style": "dark",
"timezone": "browser",
"panels": [
{
"id": 1,
"title": "🟢 Vaultwarden Service Status",
"type": "stat",
"targets": [
{
"expr": "up{instance=~\".*vaultwarden.*\"}",
"legendFormat": "{{instance}}"
}
],
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"thresholds": {
"steps": [
{"color": "red", "value": 0},
{"color": "green", "value": 1}
]
},
"mappings": [
{
"options": {
"0": {"text": "🔴 OFFLINE", "color": "red"},
"1": {"text": "🟢 ONLINE", "color": "green"}
},
"type": "value"
}
],
"unit": "short"
}
},
"gridPos": {"h": 8, "w": 12, "x": 0, "y": 0},
"options": {
"colorMode": "value",
"graphMode": "none",
"justifyMode": "auto",
"orientation": "auto",
"reduceOptions": {
"calcs": ["lastNotNull"],
"fields": "",
"values": false
},
"textMode": "auto"
}
},
{
"id": 2,
"title": "⚡ Response Time Performance",
"type": "graph",
"targets": [
{
"expr": "probe_duration_seconds{instance=~\".*vaultwarden.*\"}",
"legendFormat": "{{instance}}"
}
],
"yAxes": [
{
"label": "Response Time (seconds)",
"min": 0
}
],
"gridPos": {"h": 8, "w": 12, "x": 12, "y": 0}
},
{
"id": 3,
"title": "🌐 HTTP Status Codes",
"type": "graph",
"targets": [
{
"expr": "probe_http_status_code{instance=~\".*vaultwarden.*\"}",
"legendFormat": "{{instance}} - Status {{code}}"
}
],
"yAxes": [
{
"label": "HTTP Status Code",
"min": 0,
"max": 600
}
],
"gridPos": {"h": 8, "w": 12, "x": 0, "y": 8}
},
{
"id": 4,
"title": "🔒 SSL Certificate Health",
"type": "stat",
"targets": [
{
"expr": "probe_ssl_earliest_cert_expiry{instance=~\".*vaultwarden.*\"} - time()",
"legendFormat": "{{instance}}"
}
],
"fieldConfig": {
"defaults": {
"unit": "s",
"color": {
"mode": "thresholds"
},
"thresholds": {
"steps": [
{"color": "red", "value": 0},
{"color": "orange", "value": 86400},
{"color": "green", "value": 604800}
]
},
"mappings": [
{
"options": {
"0": {"text": "🔴 EXPIRED", "color": "red"},
"86400": {"text": "🟡 EXPIRES SOON", "color": "orange"},
"604800": {"text": "🟢 VALID", "color": "green"}
},
"type": "range"
}
]
}
},
"gridPos": {"h": 8, "w": 12, "x": 12, "y": 8}
},
{
"id": 5,
"title": "📊 System Resources (Host)",
"type": "graph",
"targets": [
{
"expr": "100 - (avg by (instance) (irate(node_cpu_seconds_total{mode=\"idle\"}[5m])) * 100)",
"legendFormat": "CPU Usage - {{instance}}"
},
{
"expr": "(1 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes)) * 100",
"legendFormat": "Memory Usage - {{instance}}"
}
],
"yAxes": [
{
"label": "Usage %"
}
],
"gridPos": {"h": 8, "w": 12, "x": 0, "y": 16}
},
{
"id": 6,
"title": "🌐 Network Traffic (Host)",
"type": "graph",
"targets": [
{
"expr": "rate(node_network_receive_bytes_total[5m]) / 1024 / 1024",
"legendFormat": "📥 Receive - {{device}}"
},
{
"expr": "rate(node_network_transmit_bytes_total[5m]) / 1024 / 1024",
"legendFormat": "📤 Transmit - {{device}}"
}
],
"yAxes": [
{
"label": "MB/s"
}
],
"gridPos": {"h": 8, "w": 12, "x": 12, "y": 16}
},
{
"id": 7,
"title": "📋 Vaultwarden Health Summary",
"type": "table",
"targets": [
{
"expr": "up{instance=~\".*vaultwarden.*\"}",
"format": "table",
"instant": true
}
],
"transformations": [
{
"id": "organize",
"options": {
"excludeByName": {
"Time": true,
"__name__": true
},
"renameByName": {
"job": "Service Type",
"instance": "Service Endpoint",
"Value": "Status"
}
}
}
],
"fieldConfig": {
"defaults": {
"mappings": [
{
"options": {
"0": {"text": "🔴 DOWN", "color": "red"},
"1": {"text": "🟢 UP", "color": "green"}
},
"type": "value"
}
]
}
},
"gridPos": {"h": 8, "w": 24, "x": 0, "y": 24}
}
],
"time": {
"from": "now-1h",
"to": "now"
},
"refresh": "30s"
}