diff --git a/nixos/mirai/services/default.nix b/nixos/mirai/services/default.nix index bc857ce7..77023a4a 100644 --- a/nixos/mirai/services/default.nix +++ b/nixos/mirai/services/default.nix @@ -16,20 +16,7 @@ ./resolved.nix ./searxng.nix ./tailscale.nix - # ./grafana.nix - ./excalidraw.nix - # ./desmos.nix - # ./ldap.nix - # ./llama.nix - # ./navidrome.nix - # ./nextcloud.nix - # ./paperless.nix - # ./polaris.nix - # ./seafile.nix - # ./syncthing.nix - # ./vscode.nix - # ./zerotier.nix ]; services = { nix-serve = { diff --git a/nixos/mirai/services/grafana.nix b/nixos/mirai/services/grafana.nix deleted file mode 100644 index f9bfe8b1..00000000 --- a/nixos/mirai/services/grafana.nix +++ /dev/null @@ -1,248 +0,0 @@ -{config, ...}: { - services = { - grafana = { - enable = true; - settings = { - server = { - http_port = 3011; - }; - "auth.proxy" = { - enabled = false; - header_name = "Remote-User"; - header_property = "username"; - auto_sign_up = true; - sync_ttl = 60; - whitelist = "127.0.0.1"; - headers = "Name:Remote-Name Email:Remote-Email"; - enable_login_token = false; - }; - users = { - default_theme = "dark"; - home_page = "d/monitoring-homepage"; - auto_assign_org = true; - auto_assign_org_id = 1; - auto_assign_org_role = "Admin"; - }; - security = { - allow_embedding = true; - cookie_secure = false; - disable_gravatar = true; - }; - }; - provision = { - enable = true; - datasources.settings.datasources = [ - { - name = "Prometheus"; - type = "prometheus"; - access = "proxy"; - url = "http://127.0.0.1:9090"; - uid = "prometheus"; - isDefault = true; - } - ]; - dashboards.settings.providers = [ - { - name = "homepage"; - orgId = 1; - folder = ""; - type = "file"; - disableDeletion = false; - updateIntervalSeconds = 10; - allowUiUpdates = true; - options.path = "/etc/grafana/dashboards/homepage"; - } - { - name = "multi-device"; - orgId = 1; - folder = "Multi-Device Monitoring"; - type = "file"; - disableDeletion = false; - updateIntervalSeconds = 10; - allowUiUpdates = true; - options.path = "/etc/grafana/dashboards/multi-device"; - } - { - name = "device-specific"; - orgId = 1; - folder = "Device-Specific"; - type = "file"; - disableDeletion = false; - updateIntervalSeconds = 10; - allowUiUpdates = true; - options.path = "/etc/grafana/dashboards/device-specific"; - } - { - name = "legacy"; - orgId = 1; - folder = "Legacy Dashboards"; - type = "file"; - disableDeletion = false; - updateIntervalSeconds = 10; - allowUiUpdates = true; - options.path = "/etc/grafana/dashboards/legacy"; - } - ]; - }; - }; - - prometheus = { - enable = true; - port = 9090; - exporters = { - node = { - enable = true; - enabledCollectors = [ - "systemd" - "textfile" - "filesystem" - "loadavg" - "meminfo" - "netdev" - "stat" - "time" - "uname" - "vmstat" - ]; - port = 9100; - }; - process = { - enable = true; - settings.process_names = [ - { - name = "{{.Comm}}"; - cmdline = [".*"]; - } - ]; - }; - }; - scrapeConfigs = [ - { - job_name = "node"; - static_configs = [ - { - targets = ["127.0.0.1:9100"]; - labels = { - device = "mirai"; - type = "server"; - }; - } - { - targets = ["tsuba:9100"]; - labels = { - device = "tsuba"; - type = "server"; - arch = "aarch64"; - }; - } - { - targets = ["ryu:9100"]; - labels = { - device = "ryu"; - type = "desktop"; - arch = "x86_64"; - }; - } - ]; - } - { - job_name = "process"; - static_configs = [ - { - targets = ["127.0.0.1:9256"]; - labels = { - device = "mirai"; - type = "server"; - }; - } - { - targets = ["tsuba:9256"]; - labels = { - device = "tsuba"; - type = "server"; - arch = "aarch64"; - }; - } - { - targets = ["ryu:9256"]; - labels = { - device = "ryu"; - type = "desktop"; - arch = "x86_64"; - }; - } - ]; - } - { - job_name = "prometheus"; - static_configs = [ - { - targets = ["127.0.0.1:9090"]; - labels = { - device = "mirai"; - }; - } - ]; - } - ]; - }; - - caddy = { - virtualHosts."grafana.darksailor.dev".extraConfig = '' - import auth - reverse_proxy localhost:${builtins.toString config.services.grafana.settings.server.http_port} - ''; - virtualHosts."prometheus.darksailor.dev".extraConfig = '' - import auth - reverse_proxy localhost:${builtins.toString config.services.prometheus.port} - ''; - }; - authelia = { - instances.darksailor = { - settings = { - access_control = { - rules = [ - { - domain = "grafana.darksailor.dev"; - policy = "one_factor"; - } - # { - # domain = "prometheus.darksailor.dev"; - # policy = "bypass"; - # resources = [ - # "^/api([/?].*)?$" - # ]; - # } - { - domain = "prometheus.darksailor.dev"; - policy = "one_factor"; - } - ]; - }; - }; - }; - }; - }; - - # Provision dashboards in organized folders - environment.etc = { - # Homepage dashboard (root level) - "grafana/dashboards/homepage/homepage-dashboard.json".source = - ./grafana/homepage/homepage-dashboard.json; - - # Multi-device dashboards - "grafana/dashboards/multi-device/multi-device-system-dashboard.json".source = - ./grafana/multi-device/multi-device-system-dashboard.json; - "grafana/dashboards/multi-device/multi-device-processes-dashboard.json".source = - ./grafana/multi-device/multi-device-processes-dashboard.json; - - # Device-specific dashboards - "grafana/dashboards/device-specific/device-specific-system-dashboard.json".source = - ./grafana/device-specific/device-specific-system-dashboard.json; - - # Legacy dashboards - "grafana/dashboards/legacy/system-dashboard.json".source = ./grafana/legacy/system-dashboard.json; - "grafana/dashboards/legacy/processes-dashboard.json".source = - ./grafana/legacy/processes-dashboard.json; - }; -} diff --git a/nixos/mirai/services/grafana/README.md b/nixos/mirai/services/grafana/README.md deleted file mode 100644 index cf919e75..00000000 --- a/nixos/mirai/services/grafana/README.md +++ /dev/null @@ -1,163 +0,0 @@ -# Multi-Device Grafana Dashboard Setup - -This directory contains Grafana dashboards configured to monitor multiple NixOS devices: `mirai`, `tsuba`, and `ryu`. - -## Homepage Dashboard - -When you access Grafana at `grafana.darksailor.dev`, you'll be greeted with the **Monitoring Hub Homepage** that provides: - -- **Device Status Overview**: Real-time status table showing CPU, memory, disk usage, and uptime for all devices -- **Dashboard Navigation**: Color-coded tiles linking to all monitoring dashboards -- **Quick Actions**: Direct links to Prometheus targets, dashboard management, and documentation -- **Organized Layout**: Dashboards are grouped by category for easy navigation - -## Dashboard Organization - -Dashboards are organized into folders for better management: - -### **📊 Multi-Device Monitoring** -Located in `multi-device/` folder: - -#### 1. Multi-Device System Metrics -- **Purpose**: Compare system metrics across all devices on a single dashboard -- **Features**: - - Device filtering via template variable (can select one, multiple, or all devices) - - CPU usage comparison by device - - Memory usage comparison by device - - Disk usage comparison by device - - Network I/O comparison by device - - Service status overview - - System uptime tracking - - Load average trends - -#### 2. Multi-Device Process Monitoring -- **Purpose**: Monitor processes across all devices -- **Features**: - - Device filtering for process metrics - - Process resource usage table with device column - - CPU usage trends by process and device - - Memory usage (resident and virtual) by process - - Process I/O throughput monitoring - - Process count tracking per device - -### **🔍 Device-Specific** -Located in `device-specific/` folder: - -#### Device-Specific System Dashboard -- **Purpose**: Detailed system monitoring for a single selected device -- **Features**: - - Device selection via template variable - - Detailed CPU, memory, and disk metrics - - Network and disk I/O operations - - System status indicators - - Load average trends (1m, 5m, 15m) - - Enhanced visualizations with thresholds and color coding - -### **📚 Legacy Dashboards** -Located in `legacy/` folder: -- `system-dashboard.json`: Original single-device system dashboard -- `processes-dashboard.json`: Original single-device process dashboard - -## Device Labels - -Each device is configured with specific labels for better organization: - -- **mirai**: `device=mirai, type=server, arch=x86_64` -- **tsuba**: `device=tsuba, type=server, arch=aarch64` -- **ryu**: `device=ryu, type=desktop, arch=x86_64` - -## Metrics Collection - -### Node Exporter (Port 9100) -Collects system-level metrics: -- CPU usage and load average -- Memory utilization -- Disk usage and I/O -- Network interface statistics -- SystemD service status -- System uptime - -### Process Exporter (Port 9256) -Collects process-level metrics: -- CPU usage per process -- Memory usage (resident and virtual) -- Process I/O operations -- Process count and lifecycle - -## Template Variables - -### Device Selection -All multi-device dashboards include a `$device` template variable that allows: -- **Single device selection**: Monitor one specific device -- **Multiple device selection**: Compare selected devices -- **All devices**: Monitor all available devices simultaneously - -The variable automatically populates with available devices based on Prometheus metrics. - -## Usage Guide - -### Getting Started -1. **Homepage First**: Visit `grafana.darksailor.dev` to see the homepage with device overview -2. **Dashboard Navigation**: Click on the colored tiles to access different dashboard categories -3. **Quick Status Check**: Use the device status table on the homepage for immediate health overview - -### Dashboard Navigation Tips -1. **Multi-Device Comparison**: Start with multi-device dashboards to compare all systems -2. **Deep Dive Analysis**: Use device-specific dashboards for detailed single-device monitoring -3. **Process Troubleshooting**: Use multi-device process dashboard to identify resource issues -4. **Template Variables**: Use the device dropdown to filter by specific devices -5. **Time Ranges**: Adjust time ranges based on your monitoring needs (default: last 1 hour) -6. **Folder Organization**: Browse dashboards by category using the folder structure - -## Customization - -### Adding New Devices -To add monitoring for new devices: -1. Configure Prometheus exporters on the new device -2. Add scrape targets to the Prometheus configuration in `grafana.nix` -3. Include appropriate device labels -4. The dashboards will automatically detect the new device - -### Modifying Queries -All dashboard queries use the `device=~"$device"` filter to support multi-device functionality. When customizing: -- Ensure queries include the device filter -- Use `{{device}}` in legend formats to distinguish between devices -- Consider device-specific thresholds if needed - -## Troubleshooting - -### Device Not Appearing -1. Check if Prometheus can reach the device's exporters -2. Verify the device label is correctly configured -3. Check Prometheus targets at `prometheus.darksailor.dev/targets` - -### Missing Metrics -1. Ensure the required exporters are running on the target device -2. Check firewall rules allow access to exporter ports (9100, 9256) -3. Verify network connectivity between devices - -### Performance -- Limit the number of devices selected simultaneously for better performance -- Adjust refresh rates if dashboards become slow -- Consider shorter time ranges for detailed analysis - -## Homepage Features - -### Device Status Table -- Real-time overview of all monitored devices -- Color-coded status indicators (UP/DOWN) -- CPU, memory, and disk usage percentages -- System uptime tracking -- Automatically updates every 30 seconds - -### Dashboard Categories -- **Blue**: Multi-Device System monitoring -- **Green**: Device-Specific detailed monitoring -- **Purple**: Multi-Device Process monitoring -- **Orange**: Legacy single-device dashboards - -### Quick Actions -- **Prometheus Targets**: Direct link to check scrape target health -- **Dashboard Management**: Access to Grafana's dashboard browser -- **Data Sources**: Manage Prometheus and other data sources -- **Documentation**: Link to setup and usage documentation \ No newline at end of file diff --git a/nixos/mirai/services/grafana/STRUCTURE.md b/nixos/mirai/services/grafana/STRUCTURE.md deleted file mode 100644 index b51d6d28..00000000 --- a/nixos/mirai/services/grafana/STRUCTURE.md +++ /dev/null @@ -1,161 +0,0 @@ -# Grafana Dashboard Structure - -## Directory Layout - -``` -dotfiles/nixos/mirai/services/grafana/ -├── README.md # Main documentation -├── STRUCTURE.md # This file - structure overview -├── homepage/ -│ └── homepage-dashboard.json # Main homepage dashboard -├── multi-device/ -│ ├── multi-device-system-dashboard.json # System metrics across devices -│ └── multi-device-processes-dashboard.json # Process monitoring across devices -├── device-specific/ -│ └── device-specific-system-dashboard.json # Single device detailed view -└── legacy/ - ├── system-dashboard.json # Original system dashboard - └── processes-dashboard.json # Original process dashboard -``` - -## Dashboard Hierarchy - -``` -🏠 Homepage (monitoring-homepage) -├── Device Status Overview Table -├── Quick Dashboard Links -└── Action Buttons - │ - ├── 📊 Multi-Device Monitoring/ - │ ├── Multi-Device System (multi-device-system) - │ └── Multi-Device Processes (multi-device-processes) - │ - ├── 🔍 Device-Specific/ - │ └── Device System Dashboard (device-system-${device}) - │ - └── 📚 Legacy Dashboards/ - ├── Legacy System (system-metrics) - └── Legacy Processes (process-metrics) -``` - -## Dashboard Features Matrix - -| Dashboard | Device Filter | Comparison | Time Series | Status | Process Data | -|-----------|--------------|------------|-------------|---------|--------------| -| Homepage | ❌ | ✅ | ❌ | ✅ | ❌ | -| Multi-Device System | ✅ | ✅ | ✅ | ✅ | ❌ | -| Multi-Device Processes | ✅ | ✅ | ✅ | ❌ | ✅ | -| Device-Specific | ✅ | ❌ | ✅ | ✅ | ❌ | -| Legacy System | ❌ | ❌ | ✅ | ✅ | ❌ | -| Legacy Processes | ❌ | ❌ | ✅ | ❌ | ✅ | - -## User Journey Flow - -``` -1. User visits grafana.darksailor.dev - ↓ -2. Homepage loads automatically - ↓ -3. User sees device status overview - ↓ -4. User clicks dashboard tile based on need: - │ - ├── Multi-Device System → Compare all devices - ├── Device-Specific → Deep dive single device - ├── Multi-Device Processes → Process monitoring - └── Legacy → Original dashboards - ↓ -5. User uses template variables to filter data - ↓ -6. User navigates between dashboards using links -``` - -## Configuration Mapping - -| Grafana Folder | File Path | Provision Path | -|----------------|-----------|----------------| -| Root | `homepage/` | `/etc/grafana/dashboards/homepage/` | -| Multi-Device Monitoring | `multi-device/` | `/etc/grafana/dashboards/multi-device/` | -| Device-Specific | `device-specific/` | `/etc/grafana/dashboards/device-specific/` | -| Legacy Dashboards | `legacy/` | `/etc/grafana/dashboards/legacy/` | - -## Metrics Coverage - -### System Metrics (Node Exporter - Port 9100) -- ✅ CPU usage and load average -- ✅ Memory utilization (used/total) -- ✅ Disk usage and I/O operations -- ✅ Network interface statistics -- ✅ SystemD service status -- ✅ System uptime and boot time - -### Process Metrics (Process Exporter - Port 9256) -- ✅ CPU usage per process group -- ✅ Memory usage (resident/virtual) -- ✅ Process I/O operations (read/write) -- ✅ Process count and lifecycle -- ✅ Process resource trends - -## Device Labels - -| Device | Type | Architecture | Services | -|--------|------|--------------|----------| -| mirai | server | x86_64 | Grafana, Prometheus, Caddy | -| tsuba | server | aarch64 | Media services, NAS | -| ryu | desktop | x86_64 | Gaming, Development | - -## Color Coding - -### Dashboard Categories -- 🔵 **Blue**: Multi-Device System monitoring -- 🟢 **Green**: Device-Specific detailed monitoring -- 🟣 **Purple**: Multi-Device Process monitoring -- 🟠 **Orange**: Legacy single-device dashboards - -### Status Indicators -- 🟢 **Green**: Service UP / Normal operation -- 🔴 **Red**: Service DOWN / Critical threshold -- 🟡 **Yellow**: Warning threshold -- 🔵 **Blue**: Information / Navigation - -## Dashboard UIDs Reference - -| Dashboard | UID | URL Path | -|-----------|-----|----------| -| Homepage | `monitoring-homepage` | `d/monitoring-homepage` | -| Multi-Device System | `multi-device-system` | `d/multi-device-system` | -| Multi-Device Processes | `multi-device-processes` | `d/multi-device-processes` | -| Device-Specific | `device-system-${device}` | `d/device-system-mirai` | -| Legacy System | `system-metrics` | `d/system-metrics` | -| Legacy Processes | `process-metrics` | `d/process-metrics` | - -## Refresh Rates - -- Homepage: 30 seconds -- Multi-Device dashboards: 30 seconds -- Device-Specific: 30 seconds -- Legacy dashboards: 30 seconds - -## Template Variables - -### Device Selection ($device) -- **Type**: Query variable -- **Query**: `label_values(up, device)` -- **Multi-select**: Yes (for multi-device dashboards) -- **Include All**: Yes -- **Current Values**: mirai, tsuba, ryu - -## Quick Access URLs - -- Homepage: `https://grafana.darksailor.dev/d/monitoring-homepage` -- Multi-Device System: `https://grafana.darksailor.dev/d/multi-device-system` -- Prometheus Targets: `https://prometheus.darksailor.dev/targets` -- Dashboard Browser: `https://grafana.darksailor.dev/dashboards` - -## Maintenance Notes - -- Dashboards auto-update from provisioned files -- New devices appear automatically when exporters are configured -- Template variables refresh every page load -- Dashboard folders are recreated on Grafana restart -- Homepage is set as default landing page for all users \ No newline at end of file diff --git a/nixos/mirai/services/grafana/device-specific/device-specific-system-dashboard.json b/nixos/mirai/services/grafana/device-specific/device-specific-system-dashboard.json deleted file mode 100644 index 9d0e1244..00000000 --- a/nixos/mirai/services/grafana/device-specific/device-specific-system-dashboard.json +++ /dev/null @@ -1,1114 +0,0 @@ -{ - "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": 1, - "id": null, - "links": [], - "liveNow": false, - "panels": [ - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 0 - }, - "id": 200, - "panels": [], - "title": "${device} - System Metrics", - "type": "row" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 20, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "vis": false - }, - "lineInterpolation": "linear", - "lineWidth": 2, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "line" - } - }, - "mappings": [], - "max": 100, - "min": 0, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "yellow", - "value": 70 - }, - { - "color": "red", - "value": 90 - } - ] - }, - "unit": "percent" - }, - "overrides": [ - { - "matcher": { - "id": "byName", - "options": "CPU Usage" - }, - "properties": [ - { - "id": "color", - "value": { - "fixedColor": "blue", - "mode": "fixed" - } - } - ] - } - ] - }, - "gridPos": { - "h": 8, - "w": 8, - "x": 0, - "y": 1 - }, - "id": 1, - "options": { - "legend": { - "calcs": [ - "last", - "mean", - "max" - ], - "displayMode": "table", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "100 - (avg(irate(node_cpu_seconds_total{mode=\"idle\",device=\"${device}\"}[5m])) * 100)", - "format": "time_series", - "interval": "", - "intervalFactor": 1, - "legendFormat": "CPU Usage", - "refId": "A" - } - ], - "title": "CPU Usage", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 20, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "vis": false - }, - "lineInterpolation": "linear", - "lineWidth": 2, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "bytes" - }, - "overrides": [ - { - "matcher": { - "id": "byName", - "options": "Used Memory" - }, - "properties": [ - { - "id": "color", - "value": { - "fixedColor": "orange", - "mode": "fixed" - } - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "Total Memory" - }, - "properties": [ - { - "id": "color", - "value": { - "fixedColor": "light-blue", - "mode": "fixed" - } - } - ] - } - ] - }, - "gridPos": { - "h": 8, - "w": 8, - "x": 8, - "y": 1 - }, - "id": 2, - "options": { - "legend": { - "calcs": [ - "last", - "max" - ], - "displayMode": "table", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "multi", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "node_memory_MemTotal_bytes{device=\"${device}\"} - node_memory_MemFree_bytes{device=\"${device}\"} - node_memory_Buffers_bytes{device=\"${device}\"} - node_memory_Cached_bytes{device=\"${device}\"}", - "format": "time_series", - "interval": "", - "intervalFactor": 1, - "legendFormat": "Used Memory", - "refId": "A" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "node_memory_MemTotal_bytes{device=\"${device}\"}", - "format": "time_series", - "interval": "", - "intervalFactor": 1, - "legendFormat": "Total Memory", - "refId": "B" - } - ], - "title": "Memory Usage", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 20, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "vis": false - }, - "lineInterpolation": "linear", - "lineWidth": 2, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "line" - } - }, - "mappings": [], - "max": 100, - "min": 0, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "yellow", - "value": 80 - }, - { - "color": "red", - "value": 95 - } - ] - }, - "unit": "percent" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 8, - "x": 16, - "y": 1 - }, - "id": 3, - "options": { - "legend": { - "calcs": [ - "last", - "max" - ], - "displayMode": "table", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "100 - ((node_filesystem_avail_bytes{mountpoint=\"/\",fstype!=\"tmpfs\",device=\"${device}\"} * 100) / node_filesystem_size_bytes{mountpoint=\"/\",fstype!=\"tmpfs\",device=\"${device}\"})", - "format": "time_series", - "interval": "", - "intervalFactor": 1, - "legendFormat": "Root Disk Usage", - "refId": "A" - } - ], - "title": "Disk Usage", - "type": "timeseries" - }, - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 9 - }, - "id": 201, - "panels": [], - "title": "Network & I/O", - "type": "row" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 10, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "vis": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "bps" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 10 - }, - "id": 4, - "options": { - "legend": { - "calcs": [ - "last", - "max" - ], - "displayMode": "table", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "multi", - "sort": "desc" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "irate(node_network_receive_bytes_total{device_name!=\"lo\",device=\"${device}\"}[5m]) * 8", - "format": "time_series", - "interval": "", - "intervalFactor": 1, - "legendFormat": "{{device_name}} RX", - "refId": "A" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "irate(node_network_transmit_bytes_total{device_name!=\"lo\",device=\"${device}\"}[5m]) * 8", - "format": "time_series", - "interval": "", - "intervalFactor": 1, - "legendFormat": "{{device_name}} TX", - "refId": "B" - } - ], - "title": "Network I/O", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 10, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "vis": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "iops" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 10 - }, - "id": 5, - "options": { - "legend": { - "calcs": [ - "last", - "max" - ], - "displayMode": "table", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "multi", - "sort": "desc" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "irate(node_disk_reads_completed_total{device=\"${device}\"}[5m])", - "format": "time_series", - "interval": "", - "intervalFactor": 1, - "legendFormat": "{{device_name}} Reads", - "refId": "A" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "irate(node_disk_writes_completed_total{device=\"${device}\"}[5m])", - "format": "time_series", - "interval": "", - "intervalFactor": 1, - "legendFormat": "{{device_name}} Writes", - "refId": "B" - } - ], - "title": "Disk I/O Operations", - "type": "timeseries" - }, - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 18 - }, - "id": 202, - "panels": [], - "title": "System Status", - "type": "row" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [ - { - "options": { - "0": { - "color": "red", - "index": 1, - "text": "DOWN" - }, - "1": { - "color": "green", - "index": 0, - "text": "UP" - } - }, - "type": "value" - } - ], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "red", - "value": null - }, - { - "color": "green", - "value": 1 - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 4, - "w": 6, - "x": 0, - "y": 19 - }, - "id": 6, - "options": { - "colorMode": "background", - "graphMode": "none", - "justifyMode": "center", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "auto" - }, - "pluginVersion": "8.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "up{device=\"${device}\"}", - "format": "time_series", - "interval": "", - "intervalFactor": 1, - "legendFormat": "{{job}}", - "refId": "A" - } - ], - "title": "Service Status", - "type": "stat" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "yellow", - "value": 86400 - }, - { - "color": "red", - "value": 604800 - } - ] - }, - "unit": "s" - }, - "overrides": [] - }, - "gridPos": { - "h": 4, - "w": 6, - "x": 6, - "y": 19 - }, - "id": 7, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "center", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "auto" - }, - "pluginVersion": "8.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "time() - node_boot_time_seconds{device=\"${device}\"}", - "format": "time_series", - "interval": "", - "intervalFactor": 1, - "legendFormat": "Uptime", - "refId": "A" - } - ], - "title": "System Uptime", - "type": "stat" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "yellow", - "value": 1 - }, - { - "color": "red", - "value": 4 - } - ] - }, - "unit": "short" - }, - "overrides": [] - }, - "gridPos": { - "h": 4, - "w": 6, - "x": 12, - "y": 19 - }, - "id": 8, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "center", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "auto" - }, - "pluginVersion": "8.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "node_load1{device=\"${device}\"}", - "format": "time_series", - "interval": "", - "intervalFactor": 1, - "legendFormat": "Load (1m)", - "refId": "A" - } - ], - "title": "Load Average (1m)", - "type": "stat" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "yellow", - "value": 100 - }, - { - "color": "red", - "value": 200 - } - ] - }, - "unit": "short" - }, - "overrides": [] - }, - "gridPos": { - "h": 4, - "w": 6, - "x": 18, - "y": 19 - }, - "id": 9, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "center", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "auto" - }, - "pluginVersion": "8.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "node_systemd_units{state=\"active\",device=\"${device}\"}", - "format": "time_series", - "interval": "", - "intervalFactor": 1, - "legendFormat": "Active Services", - "refId": "A" - } - ], - "title": "Active SystemD Services", - "type": "stat" - }, - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 23 - }, - "id": 203, - "panels": [], - "title": "Load Average Trends", - "type": "row" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 10, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "vis": false - }, - "lineInterpolation": "linear", - "lineWidth": 2, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "short" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 24, - "x": 0, - "y": 24 - }, - "id": 10, - "options": { - "legend": { - "calcs": [ - "last", - "mean", - "max" - ], - "displayMode": "table", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "multi", - "sort": "desc" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "node_load1{device=\"${device}\"}", - "format": "time_series", - "interval": "", - "intervalFactor": 1, - "legendFormat": "Load 1m", - "refId": "A" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "node_load5{device=\"${device}\"}", - "format": "time_series", - "interval": "", - "intervalFactor": 1, - "legendFormat": "Load 5m", - "refId": "B" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "node_load15{device=\"${device}\"}", - "format": "time_series", - "interval": "", - "intervalFactor": 1, - "legendFormat": "Load 15m", - "refId": "C" - } - ], - "title": "Load Average", - "type": "timeseries" - } - ], - "refresh": "30s", - "schemaVersion": 30, - "style": "dark", - "tags": [ - "system", - "monitoring", - "device-specific" - ], - "templating": { - "list": [ - { - "current": { - "selected": false, - "text": "mirai", - "value": "mirai" - }, - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "definition": "label_values(up, device)", - "description": "Select device to monitor", - "error": null, - "hide": 0, - "includeAll": false, - "label": "Device", - "multi": false, - "name": "device", - "options": [], - "query": { - "query": "label_values(up, device)", - "refId": "StandardVariableQuery" - }, - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "sort": 1, - "type": "query" - } - ] - }, - "time": { - "from": "now-1h", - "to": "now" - }, - "timepicker": {}, - "timezone": "", - "title": "${device} System Metrics", - "uid": "device-system-${device}", - "version": 1 -} diff --git a/nixos/mirai/services/grafana/homepage/homepage-dashboard.json b/nixos/mirai/services/grafana/homepage/homepage-dashboard.json deleted file mode 100644 index c6691a97..00000000 --- a/nixos/mirai/services/grafana/homepage/homepage-dashboard.json +++ /dev/null @@ -1,956 +0,0 @@ -{ - "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": [], - "liveNow": false, - "panels": [ - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 0 - }, - "id": 1000, - "panels": [], - "title": "Infrastructure Monitoring Overview", - "type": "row" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "align": "center", - "cellOptions": { - "type": "color-background" - }, - "inspect": false - }, - "mappings": [ - { - "options": { - "0": { - "color": "red", - "index": 1, - "text": "DOWN" - }, - "1": { - "color": "green", - "index": 0, - "text": "UP" - } - }, - "type": "value" - } - ], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "red", - "value": null - }, - { - "color": "green", - "value": 1 - } - ] - } - }, - "overrides": [ - { - "matcher": { - "id": "byName", - "options": "CPU %" - }, - "properties": [ - { - "id": "unit", - "value": "percent" - }, - { - "id": "max", - "value": 100 - }, - { - "id": "min", - "value": 0 - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "Memory %" - }, - "properties": [ - { - "id": "unit", - "value": "percent" - }, - { - "id": "max", - "value": 100 - }, - { - "id": "min", - "value": 0 - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "Disk %" - }, - "properties": [ - { - "id": "unit", - "value": "percent" - }, - { - "id": "max", - "value": 100 - }, - { - "id": "min", - "value": 0 - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "Uptime" - }, - "properties": [ - { - "id": "unit", - "value": "s" - } - ] - } - ] - }, - "gridPos": { - "h": 8, - "w": 24, - "x": 0, - "y": 1 - }, - "id": 1, - "options": { - "cellHeight": "lg", - "footer": { - "countRows": false, - "fields": "", - "reducer": ["sum"], - "show": false - }, - "showHeader": true - }, - "pluginVersion": "8.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "up{job=\"node\"}", - "format": "table", - "instant": true, - "intervalFactor": 1, - "legendFormat": "", - "refId": "A" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "100 - (avg by (device) (irate(node_cpu_seconds_total{mode=\"idle\"}[5m])) * 100)", - "format": "table", - "instant": true, - "intervalFactor": 1, - "legendFormat": "", - "refId": "B" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "((node_memory_MemTotal_bytes - node_memory_MemFree_bytes - node_memory_Buffers_bytes - node_memory_Cached_bytes) / node_memory_MemTotal_bytes) * 100", - "format": "table", - "instant": true, - "intervalFactor": 1, - "legendFormat": "", - "refId": "C" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "100 - ((node_filesystem_avail_bytes{mountpoint=\"/\",fstype!=\"tmpfs\"} * 100) / node_filesystem_size_bytes{mountpoint=\"/\",fstype!=\"tmpfs\"})", - "format": "table", - "instant": true, - "intervalFactor": 1, - "legendFormat": "", - "refId": "D" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "time() - node_boot_time_seconds", - "format": "table", - "instant": true, - "intervalFactor": 1, - "legendFormat": "", - "refId": "E" - } - ], - "title": "Device Status Overview", - "transformations": [ - { - "id": "merge", - "options": {} - }, - { - "id": "organize", - "options": { - "excludeByName": { - "Time": true, - "__name__": true, - "instance": true, - "job": true, - "fstype": true, - "mountpoint": true, - "mode": true - }, - "indexByName": {}, - "renameByName": { - "Value #A": "Status", - "Value #B": "CPU %", - "Value #C": "Memory %", - "Value #D": "Disk %", - "Value #E": "Uptime", - "device": "Device" - } - } - } - ], - "type": "table" - }, - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 9 - }, - "id": 1001, - "panels": [], - "title": "System Monitoring Dashboards", - "type": "row" - }, - { - "datasource": { - "type": "testdata", - "uid": "PD8C576611E62080A" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "custom": { - "align": "center", - "cellOptions": { - "type": "color-background" - }, - "inspect": false - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "blue", - "value": null - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 4, - "w": 8, - "x": 0, - "y": 10 - }, - "id": 2, - "options": { - "cellHeight": "lg", - "footer": { - "countRows": false, - "fields": "", - "reducer": ["sum"], - "show": false - }, - "showHeader": false - }, - "pluginVersion": "8.0.0", - "targets": [ - { - "datasource": { - "type": "testdata", - "uid": "PD8C576611E62080A" - }, - "refId": "A", - "scenarioId": "csv_content", - "stringInput": "Dashboard,Description\nMulti-Device System,\"Compare CPU, memory, disk & network across all devices\"" - } - ], - "title": "", - "transformations": [], - "type": "table", - "links": [ - { - "title": "Open Multi-Device System Dashboard", - "url": "d/multi-device-system" - } - ] - }, - { - "datasource": { - "type": "testdata", - "uid": "PD8C576611E62080A" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "custom": { - "align": "center", - "cellOptions": { - "type": "color-background" - }, - "inspect": false - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 4, - "w": 8, - "x": 8, - "y": 10 - }, - "id": 3, - "options": { - "cellHeight": "lg", - "footer": { - "countRows": false, - "fields": "", - "reducer": ["sum"], - "show": false - }, - "showHeader": false - }, - "pluginVersion": "8.0.0", - "targets": [ - { - "datasource": { - "type": "testdata", - "uid": "PD8C576611E62080A" - }, - "refId": "A", - "scenarioId": "csv_content", - "stringInput": "Dashboard,Description\nDevice-Specific System,\"Detailed monitoring for individual devices with enhanced visualizations\"" - } - ], - "title": "", - "transformations": [], - "type": "table", - "links": [ - { - "title": "Open Device-Specific Dashboard", - "url": "d/device-system-${device}" - } - ] - }, - { - "datasource": { - "type": "testdata", - "uid": "PD8C576611E62080A" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "custom": { - "align": "center", - "cellOptions": { - "type": "color-background" - }, - "inspect": false - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "purple", - "value": null - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 4, - "w": 8, - "x": 16, - "y": 10 - }, - "id": 4, - "options": { - "cellHeight": "lg", - "footer": { - "countRows": false, - "fields": "", - "reducer": ["sum"], - "show": false - }, - "showHeader": false - }, - "pluginVersion": "8.0.0", - "targets": [ - { - "datasource": { - "type": "testdata", - "uid": "PD8C576611E62080A" - }, - "refId": "A", - "scenarioId": "csv_content", - "stringInput": "Dashboard,Description\nMulti-Device Processes,\"Monitor processes across all devices with resource usage tracking\"" - } - ], - "title": "", - "transformations": [], - "type": "table", - "links": [ - { - "title": "Open Multi-Device Process Dashboard", - "url": "d/multi-device-processes" - } - ] - }, - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 14 - }, - "id": 1002, - "panels": [], - "title": "Legacy Dashboards", - "type": "row" - }, - { - "datasource": { - "type": "testdata", - "uid": "PD8C576611E62080A" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "custom": { - "align": "center", - "cellOptions": { - "type": "color-background" - }, - "inspect": false - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "orange", - "value": null - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 4, - "w": 12, - "x": 0, - "y": 15 - }, - "id": 5, - "options": { - "cellHeight": "lg", - "footer": { - "countRows": false, - "fields": "", - "reducer": ["sum"], - "show": false - }, - "showHeader": false - }, - "pluginVersion": "8.0.0", - "targets": [ - { - "datasource": { - "type": "testdata", - "uid": "PD8C576611E62080A" - }, - "refId": "A", - "scenarioId": "csv_content", - "stringInput": "Dashboard,Description\nLegacy System,\"Original single-device system monitoring dashboard\"" - } - ], - "title": "", - "transformations": [], - "type": "table", - "links": [ - { - "title": "Open Legacy System Dashboard", - "url": "d/system-metrics" - } - ] - }, - { - "datasource": { - "type": "testdata", - "uid": "PD8C576611E62080A" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "custom": { - "align": "center", - "cellOptions": { - "type": "color-background" - }, - "inspect": false - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "orange", - "value": null - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 4, - "w": 12, - "x": 12, - "y": 15 - }, - "id": 6, - "options": { - "cellHeight": "lg", - "footer": { - "countRows": false, - "fields": "", - "reducer": ["sum"], - "show": false - }, - "showHeader": false - }, - "pluginVersion": "8.0.0", - "targets": [ - { - "datasource": { - "type": "testdata", - "uid": "PD8C576611E62080A" - }, - "refId": "A", - "scenarioId": "csv_content", - "stringInput": "Dashboard,Description\nLegacy Processes,\"Original single-device process monitoring dashboard\"" - } - ], - "title": "", - "transformations": [], - "type": "table", - "links": [ - { - "title": "Open Legacy Process Dashboard", - "url": "d/process-metrics" - } - ] - }, - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 19 - }, - "id": 1003, - "panels": [], - "title": "Quick Actions", - "type": "row" - }, - { - "datasource": { - "type": "testdata", - "uid": "PD8C576611E62080A" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "custom": { - "align": "center", - "cellOptions": { - "type": "color-background" - }, - "inspect": false - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "red", - "value": null - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 3, - "w": 6, - "x": 0, - "y": 20 - }, - "id": 7, - "options": { - "cellHeight": "lg", - "footer": { - "countRows": false, - "fields": "", - "reducer": ["sum"], - "show": false - }, - "showHeader": false - }, - "pluginVersion": "8.0.0", - "targets": [ - { - "datasource": { - "type": "testdata", - "uid": "PD8C576611E62080A" - }, - "refId": "A", - "scenarioId": "csv_content", - "stringInput": "Action\nView Prometheus Targets" - } - ], - "title": "", - "transformations": [], - "type": "table", - "links": [ - { - "title": "Open Prometheus Targets", - "url": "https://prometheus.darksailor.dev/targets", - "targetBlank": true - } - ] - }, - { - "datasource": { - "type": "testdata", - "uid": "PD8C576611E62080A" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "custom": { - "align": "center", - "cellOptions": { - "type": "color-background" - }, - "inspect": false - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "yellow", - "value": null - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 3, - "w": 6, - "x": 6, - "y": 20 - }, - "id": 8, - "options": { - "cellHeight": "lg", - "footer": { - "countRows": false, - "fields": "", - "reducer": ["sum"], - "show": false - }, - "showHeader": false - }, - "pluginVersion": "8.0.0", - "targets": [ - { - "datasource": { - "type": "testdata", - "uid": "PD8C576611E62080A" - }, - "refId": "A", - "scenarioId": "csv_content", - "stringInput": "Action\nManage Dashboards" - } - ], - "title": "", - "transformations": [], - "type": "table", - "links": [ - { - "title": "Browse All Dashboards", - "url": "dashboards" - } - ] - }, - { - "datasource": { - "type": "testdata", - "uid": "PD8C576611E62080A" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "custom": { - "align": "center", - "cellOptions": { - "type": "color-background" - }, - "inspect": false - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "light-blue", - "value": null - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 3, - "w": 6, - "x": 12, - "y": 20 - }, - "id": 9, - "options": { - "cellHeight": "lg", - "footer": { - "countRows": false, - "fields": "", - "reducer": ["sum"], - "show": false - }, - "showHeader": false - }, - "pluginVersion": "8.0.0", - "targets": [ - { - "datasource": { - "type": "testdata", - "uid": "PD8C576611E62080A" - }, - "refId": "A", - "scenarioId": "csv_content", - "stringInput": "Action\nData Sources" - } - ], - "title": "", - "transformations": [], - "type": "table", - "links": [ - { - "title": "Manage Data Sources", - "url": "datasources" - } - ] - }, - { - "datasource": { - "type": "testdata", - "uid": "PD8C576611E62080A" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "custom": { - "align": "center", - "cellOptions": { - "type": "color-background" - }, - "inspect": false - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "dark-green", - "value": null - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 3, - "w": 6, - "x": 18, - "y": 20 - }, - "id": 10, - "options": { - "cellHeight": "lg", - "footer": { - "countRows": false, - "fields": "", - "reducer": ["sum"], - "show": false - }, - "showHeader": false - }, - "pluginVersion": "8.0.0", - "targets": [ - { - "datasource": { - "type": "testdata", - "uid": "PD8C576611E62080A" - }, - "refId": "A", - "scenarioId": "csv_content", - "stringInput": "Action\nDocumentation" - } - ], - "title": "", - "transformations": [], - "type": "table", - "links": [ - { - "title": "View Setup Documentation", - "url": "https://github.com/uttarayan21/dotfiles/tree/main/nixos/mirai/services/grafana", - "targetBlank": true - } - ] - } - ], - "refresh": "30s", - "schemaVersion": 30, - "style": "dark", - "tags": [ - "homepage", - "overview", - "monitoring" - ], - "templating": { - "list": [] - }, - "time": { - "from": "now-5m", - "to": "now" - }, - "timepicker": {}, - "timezone": "", - "title": "Monitoring Hub - Homepage", - "uid": "monitoring-homepage", - "version": 1 -} diff --git a/nixos/mirai/services/grafana/legacy/processes-dashboard.json b/nixos/mirai/services/grafana/legacy/processes-dashboard.json deleted file mode 100644 index d0be44ed..00000000 --- a/nixos/mirai/services/grafana/legacy/processes-dashboard.json +++ /dev/null @@ -1,762 +0,0 @@ -{ - "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": [], - "liveNow": false, - "panels": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 10, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "vis": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "percent" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 0 - }, - "id": 1, - "options": { - "legend": { - "calcs": [], - "displayMode": "table", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "rate(namedprocess_namegroup_cpu_seconds_total{groupname=~\"(gitea|grafana|caddy|immich|prometheus|node_exporter)\"}[5m]) * 100", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{groupname}}", - "refId": "A" - } - ], - "title": "Process CPU Usage", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 10, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "vis": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "bytes" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 0 - }, - "id": 2, - "options": { - "legend": { - "calcs": [], - "displayMode": "table", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "namedprocess_namegroup_memory_bytes{groupname=~\"(gitea|grafana|caddy|immich|prometheus|node_exporter)\", memtype=\"resident\"}", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{groupname}} RSS", - "refId": "A" - } - ], - "title": "Process Memory Usage (RSS)", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "custom": { - "align": "auto", - "cellOptions": { - "type": "auto" - }, - "inspect": false - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [ - { - "matcher": { - "id": "byName", - "options": "Memory (MB)" - }, - "properties": [ - { - "id": "unit", - "value": "decmbytes" - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "CPU %" - }, - "properties": [ - { - "id": "unit", - "value": "percent" - } - ] - } - ] - }, - "gridPos": { - "h": 8, - "w": 24, - "x": 0, - "y": 8 - }, - "id": 3, - "options": { - "cellHeight": "sm", - "footer": { - "countRows": false, - "fields": "", - "reducer": ["sum"], - "show": false - }, - "showHeader": true, - "sortBy": [ - { - "desc": true, - "displayName": "Memory (MB)" - } - ] - }, - "pluginVersion": "8.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "namedprocess_namegroup_memory_bytes{memtype=\"resident\"}", - "format": "table", - "instant": true, - "intervalFactor": 1, - "legendFormat": "", - "refId": "A" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "rate(namedprocess_namegroup_cpu_seconds_total[5m]) * 100", - "format": "table", - "instant": true, - "intervalFactor": 1, - "legendFormat": "", - "refId": "B" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "namedprocess_namegroup_num_procs", - "format": "table", - "instant": true, - "intervalFactor": 1, - "legendFormat": "", - "refId": "C" - } - ], - "title": "Process Resource Usage Table", - "transformations": [ - { - "id": "merge", - "options": {} - }, - { - "id": "organize", - "options": { - "excludeByName": { - "Time": true, - "__name__": true, - "instance": true, - "job": true, - "memtype": true - }, - "indexByName": {}, - "renameByName": { - "Value #A": "Memory (MB)", - "Value #B": "CPU %", - "Value #C": "Process Count", - "groupname": "Process Group" - } - } - }, - { - "id": "calculateField", - "options": { - "alias": "Memory (MB)", - "binary": { - "left": "Memory (MB)", - "operator": "/", - "reducer": "sum", - "right": "1048576" - }, - "mode": "binary", - "reduce": { - "reducer": "sum" - }, - "replaceFields": true - } - } - ], - "type": "table" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 10, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "vis": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 16 - }, - "id": 4, - "options": { - "legend": { - "calcs": [], - "displayMode": "table", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "namedprocess_namegroup_num_procs{groupname=~\"(gitea|grafana|caddy|immich|prometheus|node_exporter)\"}", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{groupname}}", - "refId": "A" - } - ], - "title": "Process Count", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 10, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "vis": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 16 - }, - "id": 5, - "options": { - "legend": { - "calcs": [], - "displayMode": "table", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "namedprocess_namegroup_num_threads{groupname=~\"(gitea|grafana|caddy|immich|prometheus|node_exporter)\"}", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{groupname}}", - "refId": "A" - } - ], - "title": "Thread Count", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 10, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "vis": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "Bps" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 24 - }, - "id": 6, - "options": { - "legend": { - "calcs": [], - "displayMode": "table", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "rate(namedprocess_namegroup_read_bytes_total{groupname=~\"(gitea|grafana|caddy|immich|prometheus|node_exporter)\"}[5m])", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{groupname}} Read", - "refId": "A" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "rate(namedprocess_namegroup_write_bytes_total{groupname=~\"(gitea|grafana|caddy|immich|prometheus|node_exporter)\"}[5m])", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{groupname}} Write", - "refId": "B" - } - ], - "title": "Process I/O", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 10, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "vis": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 24 - }, - "id": 7, - "options": { - "legend": { - "calcs": [], - "displayMode": "table", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "namedprocess_namegroup_open_filedesc{groupname=~\"(gitea|grafana|caddy|immich|prometheus|node_exporter)\"}", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{groupname}}", - "refId": "A" - } - ], - "title": "Open File Descriptors", - "type": "timeseries" - } - ], - "refresh": "30s", - "schemaVersion": 27, - "style": "dark", - "tags": ["processes", "monitoring", "performance"], - "templating": { - "list": [] - }, - "time": { - "from": "now-1h", - "to": "now" - }, - "timepicker": {}, - "timezone": "", - "title": "Process Monitoring Dashboard", - "uid": "process-monitoring", - "version": 1 -} diff --git a/nixos/mirai/services/grafana/legacy/system-dashboard.json b/nixos/mirai/services/grafana/legacy/system-dashboard.json deleted file mode 100644 index d1f4090e..00000000 --- a/nixos/mirai/services/grafana/legacy/system-dashboard.json +++ /dev/null @@ -1,673 +0,0 @@ -{ - "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": [], - "liveNow": false, - "panels": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 10, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "vis": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "percent" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 0 - }, - "id": 1, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom" - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "100 - (avg by (instance) (irate(node_cpu_seconds_total{mode=\"idle\"}[5m])) * 100)", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "CPU Usage", - "refId": "A" - } - ], - "title": "CPU Usage", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 10, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "vis": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "bytes" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 0 - }, - "id": 2, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom" - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "node_memory_MemTotal_bytes - node_memory_MemFree_bytes - node_memory_Buffers_bytes - node_memory_Cached_bytes", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "Used Memory", - "refId": "A" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "node_memory_MemTotal_bytes", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "Total Memory", - "refId": "B" - } - ], - "title": "Memory Usage", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 10, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "vis": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "percent" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 8 - }, - "id": 3, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom" - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "100 - ((node_filesystem_avail_bytes{mountpoint=\"/\",fstype!=\"tmpfs\"} * 100) / node_filesystem_size_bytes{mountpoint=\"/\",fstype!=\"tmpfs\"})", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "Root Filesystem Usage", - "refId": "A" - } - ], - "title": "Disk Usage", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 10, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "vis": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "bps" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 8 - }, - "id": 4, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom" - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "irate(node_network_receive_bytes_total{device!=\"lo\"}[5m]) * 8", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{device}} RX", - "refId": "A" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "irate(node_network_transmit_bytes_total{device!=\"lo\"}[5m]) * 8", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{device}} TX", - "refId": "B" - } - ], - "title": "Network I/O", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 4, - "w": 6, - "x": 0, - "y": 16 - }, - "id": 5, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": ["lastNotNull"], - "fields": "", - "values": false - }, - "textMode": "auto" - }, - "pluginVersion": "8.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "up", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{job}}", - "refId": "A" - } - ], - "title": "Service Status", - "type": "stat" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "s" - }, - "overrides": [] - }, - "gridPos": { - "h": 4, - "w": 6, - "x": 6, - "y": 16 - }, - "id": 6, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": ["lastNotNull"], - "fields": "", - "values": false - }, - "textMode": "auto" - }, - "pluginVersion": "8.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "time() - node_boot_time_seconds", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "Uptime", - "refId": "A" - } - ], - "title": "System Uptime", - "type": "stat" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "yellow", - "value": 1 - }, - { - "color": "red", - "value": 2 - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 4, - "w": 6, - "x": 12, - "y": 16 - }, - "id": 7, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": ["lastNotNull"], - "fields": "", - "values": false - }, - "textMode": "auto" - }, - "pluginVersion": "8.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "node_load1", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "Load Average (1m)", - "refId": "A" - } - ], - "title": "Load Average", - "type": "stat" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 4, - "w": 6, - "x": 18, - "y": 16 - }, - "id": 8, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": ["lastNotNull"], - "fields": "", - "values": false - }, - "textMode": "auto" - }, - "pluginVersion": "8.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "node_systemd_units{state=\"active\"}", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "Active Services", - "refId": "A" - } - ], - "title": "Active SystemD Services", - "type": "stat" - } - ], - "refresh": "30s", - "schemaVersion": 27, - "style": "dark", - "tags": ["system", "monitoring"], - "templating": { - "list": [] - }, - "time": { - "from": "now-1h", - "to": "now" - }, - "timepicker": {}, - "timezone": "", - "title": "System Metrics Dashboard", - "uid": "system-metrics", - "version": 1 -} diff --git a/nixos/mirai/services/grafana/multi-device/multi-device-processes-dashboard.json b/nixos/mirai/services/grafana/multi-device/multi-device-processes-dashboard.json deleted file mode 100644 index 2afa5da6..00000000 --- a/nixos/mirai/services/grafana/multi-device/multi-device-processes-dashboard.json +++ /dev/null @@ -1,782 +0,0 @@ -{ - "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": 1, - "id": null, - "links": [], - "liveNow": false, - "panels": [ - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 0 - }, - "id": 100, - "panels": [], - "title": "Process Overview", - "type": "row" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "align": "auto", - "cellOptions": { - "type": "auto" - }, - "inspect": false - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [ - { - "matcher": { - "id": "byName", - "options": "CPU %" - }, - "properties": [ - { - "id": "unit", - "value": "percent" - }, - { - "id": "custom.cellOptions", - "value": { - "type": "color-background" - } - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "Memory" - }, - "properties": [ - { - "id": "unit", - "value": "bytes" - } - ] - } - ] - }, - "gridPos": { - "h": 12, - "w": 24, - "x": 0, - "y": 1 - }, - "id": 1, - "options": { - "cellHeight": "sm", - "footer": { - "countRows": false, - "fields": "", - "reducer": ["sum"], - "show": false - }, - "showHeader": true, - "sortBy": [ - { - "desc": true, - "displayName": "CPU %" - } - ] - }, - "pluginVersion": "8.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "namedprocess_namegroup_memory_bytes{memtype=\"resident\",device=~\"$device\"}", - "format": "table", - "instant": true, - "intervalFactor": 1, - "legendFormat": "", - "refId": "A" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "rate(namedprocess_namegroup_cpu_seconds_total{device=~\"$device\"}[5m]) * 100", - "format": "table", - "instant": true, - "intervalFactor": 1, - "legendFormat": "", - "refId": "B" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "namedprocess_namegroup_num_procs{device=~\"$device\"}", - "format": "table", - "instant": true, - "intervalFactor": 1, - "legendFormat": "", - "refId": "C" - } - ], - "title": "Process Resource Usage by Device", - "transformations": [ - { - "id": "merge", - "options": {} - }, - { - "id": "organize", - "options": { - "excludeByName": { - "Time": true, - "__name__": true, - "instance": true, - "job": true, - "memtype": true - }, - "indexByName": {}, - "renameByName": { - "Value #A": "Memory", - "Value #B": "CPU %", - "Value #C": "Process Count", - "groupname": "Process Name", - "device": "Device" - } - } - }, - { - "id": "calculateField", - "options": { - "alias": "CPU % per Process", - "binary": { - "left": "CPU %", - "operator": "/", - "reducer": "sum", - "right": "Process Count" - }, - "mode": "binary", - "reduce": { - "reducer": "sum" - }, - "replaceFields": false - } - } - ], - "type": "table" - }, - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 13 - }, - "id": 101, - "panels": [], - "title": "CPU Usage Trends", - "type": "row" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 10, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "vis": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "percent" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 24, - "x": 0, - "y": 14 - }, - "id": 2, - "options": { - "legend": { - "calcs": [ - "last", - "max" - ], - "displayMode": "table", - "placement": "right", - "showLegend": true - }, - "tooltip": { - "mode": "multi", - "sort": "desc" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "rate(namedprocess_namegroup_cpu_seconds_total{device=~\"$device\"}[5m]) * 100", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{device}} - {{groupname}}", - "refId": "A" - } - ], - "title": "CPU Usage by Process and Device", - "type": "timeseries" - }, - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 22 - }, - "id": 102, - "panels": [], - "title": "Memory Usage Trends", - "type": "row" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 10, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "vis": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "bytes" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 23 - }, - "id": 3, - "options": { - "legend": { - "calcs": [ - "last", - "max" - ], - "displayMode": "table", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "multi", - "sort": "desc" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "namedprocess_namegroup_memory_bytes{memtype=\"resident\",device=~\"$device\"}", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{device}} - {{groupname}} RSS", - "refId": "A" - } - ], - "title": "Resident Memory Usage by Process", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 10, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "vis": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "bytes" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 23 - }, - "id": 4, - "options": { - "legend": { - "calcs": [ - "last", - "max" - ], - "displayMode": "table", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "multi", - "sort": "desc" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "namedprocess_namegroup_memory_bytes{memtype=\"virtual\",device=~\"$device\"}", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{device}} - {{groupname}} Virtual", - "refId": "A" - } - ], - "title": "Virtual Memory Usage by Process", - "type": "timeseries" - }, - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 31 - }, - "id": 103, - "panels": [], - "title": "Process I/O", - "type": "row" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 10, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "vis": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "Bps" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 32 - }, - "id": 5, - "options": { - "legend": { - "calcs": [ - "last", - "max" - ], - "displayMode": "table", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "multi", - "sort": "desc" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "rate(namedprocess_namegroup_read_bytes_total{device=~\"$device\"}[5m])", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{device}} - {{groupname}} Read", - "refId": "A" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "rate(namedprocess_namegroup_write_bytes_total{device=~\"$device\"}[5m])", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{device}} - {{groupname}} Write", - "refId": "B" - } - ], - "title": "Process I/O Throughput", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 10, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "vis": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "short" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 32 - }, - "id": 6, - "options": { - "legend": { - "calcs": [ - "last", - "max" - ], - "displayMode": "table", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "multi", - "sort": "desc" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "namedprocess_namegroup_num_procs{device=~\"$device\"}", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{device}} - {{groupname}} Count", - "refId": "A" - } - ], - "title": "Process Count by Device", - "type": "timeseries" - } - ], - "refresh": "30s", - "schemaVersion": 30, - "style": "dark", - "tags": [ - "processes", - "monitoring", - "multi-device" - ], - "templating": { - "list": [ - { - "current": { - "selected": false, - "text": "All", - "value": "$__all" - }, - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "definition": "label_values(namedprocess_namegroup_num_procs, device)", - "description": "Select devices to monitor", - "error": null, - "hide": 0, - "includeAll": true, - "label": "Device", - "multi": true, - "name": "device", - "options": [], - "query": { - "query": "label_values(namedprocess_namegroup_num_procs, device)", - "refId": "StandardVariableQuery" - }, - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "sort": 1, - "type": "query" - } - ] - }, - "time": { - "from": "now-1h", - "to": "now" - }, - "timepicker": {}, - "timezone": "", - "title": "Multi-Device Process Monitoring", - "uid": "multi-device-processes", - "version": 1 -} diff --git a/nixos/mirai/services/grafana/multi-device/multi-device-system-dashboard.json b/nixos/mirai/services/grafana/multi-device/multi-device-system-dashboard.json deleted file mode 100644 index 1f1ecc7a..00000000 --- a/nixos/mirai/services/grafana/multi-device/multi-device-system-dashboard.json +++ /dev/null @@ -1,949 +0,0 @@ -{ - "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": 1, - "id": null, - "links": [], - "liveNow": false, - "panels": [ - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 0 - }, - "id": 100, - "panels": [], - "title": "System Overview", - "type": "row" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 10, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "vis": false - }, - "lineInterpolation": "linear", - "lineWidth": 2, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "max": 100, - "min": 0, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "yellow", - "value": 70 - }, - { - "color": "red", - "value": 90 - } - ] - }, - "unit": "percent" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 1 - }, - "id": 1, - "options": { - "legend": { - "calcs": [ - "last", - "max" - ], - "displayMode": "table", - "placement": "right", - "showLegend": true - }, - "tooltip": { - "mode": "multi", - "sort": "desc" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "100 - (avg by (device) (irate(node_cpu_seconds_total{mode=\"idle\",device=~\"$device\"}[5m])) * 100)", - "format": "time_series", - "interval": "", - "intervalFactor": 1, - "legendFormat": "{{device}} CPU Usage", - "refId": "A" - } - ], - "title": "CPU Usage by Device", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 10, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "vis": false - }, - "lineInterpolation": "linear", - "lineWidth": 2, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "yellow", - "value": 0.8 - }, - { - "color": "red", - "value": 0.9 - } - ] - }, - "unit": "bytes" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 1 - }, - "id": 2, - "options": { - "legend": { - "calcs": [ - "last", - "max" - ], - "displayMode": "table", - "placement": "right", - "showLegend": true - }, - "tooltip": { - "mode": "multi", - "sort": "desc" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "node_memory_MemTotal_bytes{device=~\"$device\"} - node_memory_MemFree_bytes{device=~\"$device\"} - node_memory_Buffers_bytes{device=~\"$device\"} - node_memory_Cached_bytes{device=~\"$device\"}", - "format": "time_series", - "interval": "", - "intervalFactor": 1, - "legendFormat": "{{device}} Used Memory", - "refId": "A" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "node_memory_MemTotal_bytes{device=~\"$device\"}", - "format": "time_series", - "interval": "", - "intervalFactor": 1, - "legendFormat": "{{device}} Total Memory", - "refId": "B" - } - ], - "title": "Memory Usage by Device", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 10, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "vis": false - }, - "lineInterpolation": "linear", - "lineWidth": 2, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "max": 100, - "min": 0, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "yellow", - "value": 80 - }, - { - "color": "red", - "value": 95 - } - ] - }, - "unit": "percent" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 9 - }, - "id": 3, - "options": { - "legend": { - "calcs": [ - "last", - "max" - ], - "displayMode": "table", - "placement": "right", - "showLegend": true - }, - "tooltip": { - "mode": "multi", - "sort": "desc" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "100 - ((node_filesystem_avail_bytes{mountpoint=\"/\",fstype!=\"tmpfs\",device=~\"$device\"} * 100) / node_filesystem_size_bytes{mountpoint=\"/\",fstype!=\"tmpfs\",device=~\"$device\"})", - "format": "time_series", - "interval": "", - "intervalFactor": 1, - "legendFormat": "{{device}} Root Disk Usage", - "refId": "A" - } - ], - "title": "Disk Usage by Device", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 10, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "vis": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "bps" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 9 - }, - "id": 4, - "options": { - "legend": { - "calcs": [ - "last", - "max" - ], - "displayMode": "table", - "placement": "right", - "showLegend": true - }, - "tooltip": { - "mode": "multi", - "sort": "desc" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "irate(node_network_receive_bytes_total{device_name!=\"lo\",device=~\"$device\"}[5m]) * 8", - "format": "time_series", - "interval": "", - "intervalFactor": 1, - "legendFormat": "{{device}} {{device_name}} RX", - "refId": "A" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "irate(node_network_transmit_bytes_total{device_name!=\"lo\",device=~\"$device\"}[5m]) * 8", - "format": "time_series", - "interval": "", - "intervalFactor": 1, - "legendFormat": "{{device}} {{device_name}} TX", - "refId": "B" - } - ], - "title": "Network I/O by Device", - "type": "timeseries" - }, - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 17 - }, - "id": 101, - "panels": [], - "title": "Device Status", - "type": "row" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [ - { - "options": { - "0": { - "color": "red", - "index": 1, - "text": "DOWN" - }, - "1": { - "color": "green", - "index": 0, - "text": "UP" - } - }, - "type": "value" - } - ], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "red", - "value": null - }, - { - "color": "green", - "value": 1 - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 4, - "w": 6, - "x": 0, - "y": 18 - }, - "id": 5, - "options": { - "colorMode": "background", - "graphMode": "none", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "auto" - }, - "pluginVersion": "8.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "up{device=~\"$device\"}", - "format": "time_series", - "interval": "", - "intervalFactor": 1, - "legendFormat": "{{device}} {{job}}", - "refId": "A" - } - ], - "title": "Service Status", - "type": "stat" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "yellow", - "value": 604800 - }, - { - "color": "red", - "value": 86400 - } - ] - }, - "unit": "s" - }, - "overrides": [] - }, - "gridPos": { - "h": 4, - "w": 6, - "x": 6, - "y": 18 - }, - "id": 6, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "auto" - }, - "pluginVersion": "8.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "time() - node_boot_time_seconds{device=~\"$device\"}", - "format": "time_series", - "interval": "", - "intervalFactor": 1, - "legendFormat": "{{device}} Uptime", - "refId": "A" - } - ], - "title": "System Uptime", - "type": "stat" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "yellow", - "value": 1 - }, - { - "color": "red", - "value": 4 - } - ] - }, - "unit": "short" - }, - "overrides": [] - }, - "gridPos": { - "h": 4, - "w": 6, - "x": 12, - "y": 18 - }, - "id": 7, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "auto" - }, - "pluginVersion": "8.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "node_load1{device=~\"$device\"}", - "format": "time_series", - "interval": "", - "intervalFactor": 1, - "legendFormat": "{{device}} Load (1m)", - "refId": "A" - } - ], - "title": "Load Average (1m)", - "type": "stat" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "yellow", - "value": 100 - }, - { - "color": "red", - "value": 200 - } - ] - }, - "unit": "short" - }, - "overrides": [] - }, - "gridPos": { - "h": 4, - "w": 6, - "x": 18, - "y": 18 - }, - "id": 8, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "auto" - }, - "pluginVersion": "8.0.0", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "node_systemd_units{state=\"active\",device=~\"$device\"}", - "format": "time_series", - "interval": "", - "intervalFactor": 1, - "legendFormat": "{{device}} Active Services", - "refId": "A" - } - ], - "title": "Active SystemD Services", - "type": "stat" - }, - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 22 - }, - "id": 102, - "panels": [], - "title": "Load Average Trends", - "type": "row" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 10, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "vis": false - }, - "lineInterpolation": "linear", - "lineWidth": 2, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "short" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 24, - "x": 0, - "y": 23 - }, - "id": 9, - "options": { - "legend": { - "calcs": [ - "last", - "max" - ], - "displayMode": "table", - "placement": "right", - "showLegend": true - }, - "tooltip": { - "mode": "multi", - "sort": "desc" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "node_load1{device=~\"$device\"}", - "format": "time_series", - "interval": "", - "intervalFactor": 1, - "legendFormat": "{{device}} Load 1m", - "refId": "A" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "node_load5{device=~\"$device\"}", - "format": "time_series", - "interval": "", - "intervalFactor": 1, - "legendFormat": "{{device}} Load 5m", - "refId": "B" - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "expr": "node_load15{device=~\"$device\"}", - "format": "time_series", - "interval": "", - "intervalFactor": 1, - "legendFormat": "{{device}} Load 15m", - "refId": "C" - } - ], - "title": "Load Average by Device", - "type": "timeseries" - } - ], - "refresh": "30s", - "schemaVersion": 30, - "style": "dark", - "tags": [ - "system", - "monitoring", - "multi-device" - ], - "templating": { - "list": [ - { - "current": { - "selected": false, - "text": "All", - "value": "$__all" - }, - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "definition": "label_values(up, device)", - "description": "Select devices to monitor", - "error": null, - "hide": 0, - "includeAll": true, - "label": "Device", - "multi": true, - "name": "device", - "options": [], - "query": { - "query": "label_values(up, device)", - "refId": "StandardVariableQuery" - }, - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "sort": 1, - "type": "query" - } - ] - }, - "time": { - "from": "now-1h", - "to": "now" - }, - "timepicker": {}, - "timezone": "", - "title": "Multi-Device System Metrics", - "uid": "multi-device-system", - "version": 1 -}