{ "apiVersion": "dashboard.grafana.app/v1beta1", "kind": "Dashboard", "metadata": { "name": "9012547f-46a9-44d0-bbb0-a6e8d861fdd6" }, "spec": { "annotations": { "list": [ { "builtIn": 1, "datasource": { "type": "grafana", "uid": "-- Grafana --" }, "enable": true, "hide": true, "iconColor": "rgba(0, 211, 255, 1)", "name": "Annotations \u0026 Alerts", "type": "dashboard" } ] }, "editable": true, "fiscalYearStartMonth": 0, "graphTooltip": 0, "links": [], "panels": [ { "collapsed": false, "gridPos": { "h": 1, "w": 24, "x": 0, "y": 0 }, "id": 1, "panels": [], "title": "System Overview", "type": "row" }, { "datasource": { "type": "prometheus", "uid": "ff1qkncht70n4c" }, "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisBorderShow": false, "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "barWidthFactor": 0.6, "drawStyle": "line", "fillOpacity": 0, "gradientMode": "none", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 5, "scaleDistribution": { "type": "linear" }, "showPoints": "auto", "showValues": false, "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": 0 }, { "color": "red", "value": 80 } ] } }, "overrides": [] }, "gridPos": { "h": 6, "w": 8, "x": 0, "y": 1 }, "id": 2, "options": { "legend": { "calcs": [], "displayMode": "list", "placement": "bottom", "showLegend": true }, "tooltip": { "hideZeros": false, "mode": "single", "sort": "none" } }, "pluginVersion": "12.2.1", "targets": [ { "expr": "100 - (avg by (instance) (rate(node_cpu_seconds_total{job=\"vyos\", mode=\"idle\", instance=~\"$instance\"}[5m])) * 100)", "legendFormat": "{{instance}}", "refId": "A" } ], "title": "CPU Usage (%)", "type": "timeseries" }, { "datasource": { "type": "prometheus", "uid": "ff1qkncht70n4c" }, "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisBorderShow": false, "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "barWidthFactor": 0.6, "drawStyle": "line", "fillOpacity": 0, "gradientMode": "none", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 5, "scaleDistribution": { "type": "linear" }, "showPoints": "auto", "showValues": false, "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": 0 }, { "color": "red", "value": 80 } ] } }, "overrides": [] }, "gridPos": { "h": 6, "w": 8, "x": 8, "y": 1 }, "id": 3, "options": { "legend": { "calcs": [], "displayMode": "list", "placement": "bottom", "showLegend": true }, "tooltip": { "hideZeros": false, "mode": "single", "sort": "none" } }, "pluginVersion": "12.2.1", "targets": [ { "expr": "(1 - (node_memory_MemAvailable_bytes{job=\"vyos\", instance=~\"$instance\"} / node_memory_MemTotal_bytes{job=\"vyos\", instance=~\"$instance\"})) * 100", "legendFormat": "{{instance}}", "refId": "A" } ], "title": "Memory Usage (%)", "type": "timeseries" }, { "datasource": { "type": "prometheus", "uid": "ff1qkncht70n4c" }, "description": "Disk usage percentage - monitor for low disk space", "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "mappings": [], "max": 100, "min": 0, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": 0 }, { "color": "yellow", "value": 70 }, { "color": "orange", "value": 85 }, { "color": "red", "value": 95 } ] }, "unit": "percent" }, "overrides": [] }, "gridPos": { "h": 6, "w": 4, "x": 16, "y": 1 }, "id": 21, "options": { "minVizHeight": 75, "minVizWidth": 75, "orientation": "auto", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showThresholdLabels": false, "showThresholdMarkers": true, "sizing": "auto" }, "pluginVersion": "12.2.1", "targets": [ { "expr": "(1 - (node_filesystem_avail_bytes{job=\"vyos\", instance=~\"$instance\", fstype!~\"tmpfs|fuse.lxcfs|squashfs|vfat\"} / node_filesystem_size_bytes{job=\"vyos\", instance=~\"$instance\", fstype!~\"tmpfs|fuse.lxcfs|squashfs|vfat\"})) * 100", "legendFormat": "{{mountpoint}}", "refId": "A" } ], "title": "Disk Usage (%)", "type": "gauge" }, { "collapsed": false, "gridPos": { "h": 1, "w": 24, "x": 0, "y": 7 }, "id": 18, "panels": [], "title": "System Health \u0026 Performance (High Priority)", "type": "row" }, { "datasource": { "type": "prometheus", "uid": "ff1qkncht70n4c" }, "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisBorderShow": false, "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "barWidthFactor": 0.6, "drawStyle": "line", "fillOpacity": 0, "gradientMode": "none", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 5, "scaleDistribution": { "type": "linear" }, "showPoints": "auto", "showValues": false, "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": 0 }, { "color": "red", "value": 80 } ] }, "unit": "KBs" }, "overrides": [] }, "gridPos": { "h": 8, "w": 24, "x": 0, "y": 8 }, "id": 12, "options": { "legend": { "calcs": [], "displayMode": "list", "placement": "bottom", "showLegend": true }, "tooltip": { "hideZeros": false, "mode": "single", "sort": "none" } }, "pluginVersion": "12.2.1", "targets": [ { "expr": "sum by (device) (rate(node_network_receive_bytes_total{job=\"vyos\", instance=~\"$instance\", device=~\"pppoe0|wg0|wg1|eth1|eth1\\\\.20|eth1\\\\.40\"}[1m])) / 1000", "legendFormat": "↓ {{device}}", "refId": "A" }, { "expr": "sum by (device) (rate(node_network_transmit_bytes_total{job=\"vyos\", instance=~\"$instance\", device=~\"pppoe0|wg0|wg1|eth1|eth1\\\\.20|eth1\\\\.40\"}[1m])) / 1000", "legendFormat": "↑ {{device}}", "refId": "B" } ], "title": "Network Throughput (Brief)", "type": "timeseries" }, { "datasource": { "type": "prometheus", "uid": "ff1qkncht70n4c" }, "description": "Connection tracking table usage - critical for router performance", "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "mappings": [], "max": 100, "min": 0, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": 0 }, { "color": "yellow", "value": 60 }, { "color": "orange", "value": 80 }, { "color": "red", "value": 90 } ] }, "unit": "percent" }, "overrides": [] }, "gridPos": { "h": 6, "w": 6, "x": 0, "y": 16 }, "id": 19, "options": { "minVizHeight": 75, "minVizWidth": 75, "orientation": "auto", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showThresholdLabels": false, "showThresholdMarkers": true, "sizing": "auto" }, "pluginVersion": "12.2.1", "targets": [ { "expr": "(node_nf_conntrack_entries{job=\"vyos\", instance=~\"$instance\"} / node_nf_conntrack_entries_limit{job=\"vyos\", instance=~\"$instance\"}) * 100", "legendFormat": "{{instance}}", "refId": "A" } ], "title": "Conntrack Usage (%)", "type": "gauge" }, { "datasource": { "type": "prometheus", "uid": "ff1qkncht70n4c" }, "description": "Connection tracking entries over time", "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisBorderShow": false, "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "Connections", "axisPlacement": "auto", "barAlignment": 0, "barWidthFactor": 0.6, "drawStyle": "line", "fillOpacity": 10, "gradientMode": "none", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "insertNulls": false, "lineInterpolation": "smooth", "lineWidth": 2, "pointSize": 5, "scaleDistribution": { "type": "linear" }, "showPoints": "never", "showValues": false, "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": 0 } ] } }, "overrides": [] }, "gridPos": { "h": 6, "w": 9, "x": 6, "y": 16 }, "id": 20, "options": { "legend": { "calcs": [ "lastNotNull", "max" ], "displayMode": "table", "placement": "bottom", "showLegend": true }, "tooltip": { "hideZeros": false, "mode": "multi", "sort": "none" } }, "pluginVersion": "12.2.1", "targets": [ { "expr": "node_nf_conntrack_entries{job=\"vyos\", instance=~\"$instance\"}", "legendFormat": "Current: {{instance}}", "refId": "A" }, { "expr": "node_nf_conntrack_entries_limit{job=\"vyos\", instance=~\"$instance\"}", "legendFormat": "Limit: {{instance}}", "refId": "B" } ], "title": "Conntrack Entries", "type": "timeseries" }, { "datasource": { "type": "prometheus", "uid": "ff1qkncht70n4c" }, "description": "System load averages over 1, 5, and 15 minutes", "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisBorderShow": false, "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "Load", "axisPlacement": "auto", "barAlignment": 0, "barWidthFactor": 0.6, "drawStyle": "line", "fillOpacity": 10, "gradientMode": "none", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "insertNulls": false, "lineInterpolation": "smooth", "lineWidth": 2, "pointSize": 5, "scaleDistribution": { "type": "linear" }, "showPoints": "never", "showValues": false, "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": 0 } ] } }, "overrides": [] }, "gridPos": { "h": 6, "w": 10, "x": 0, "y": 22 }, "id": 22, "options": { "legend": { "calcs": [ "lastNotNull" ], "displayMode": "table", "placement": "bottom", "showLegend": true }, "tooltip": { "hideZeros": false, "mode": "multi", "sort": "none" } }, "pluginVersion": "12.2.1", "targets": [ { "expr": "node_load1{job=\"vyos\", instance=~\"$instance\"}", "legendFormat": "Load 1m", "refId": "A" }, { "expr": "node_load5{job=\"vyos\", instance=~\"$instance\"}", "legendFormat": "Load 5m", "refId": "B" }, { "expr": "node_load15{job=\"vyos\", instance=~\"$instance\"}", "legendFormat": "Load 15m", "refId": "C" } ], "title": "System Load Average", "type": "timeseries" }, { "datasource": { "type": "prometheus", "uid": "ff1qkncht70n4c" }, "description": "File descriptor usage - high usage can cause system issues", "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisBorderShow": false, "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "%", "axisPlacement": "auto", "barAlignment": 0, "barWidthFactor": 0.6, "drawStyle": "line", "fillOpacity": 10, "gradientMode": "none", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "insertNulls": false, "lineInterpolation": "smooth", "lineWidth": 2, "pointSize": 5, "scaleDistribution": { "type": "linear" }, "showPoints": "never", "showValues": false, "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "line" } }, "mappings": [], "max": 100, "min": 0, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": 0 }, { "color": "yellow", "value": 70 }, { "color": "red", "value": 90 } ] }, "unit": "percent" }, "overrides": [] }, "gridPos": { "h": 6, "w": 9, "x": 10, "y": 22 }, "id": 23, "options": { "legend": { "calcs": [ "lastNotNull", "max" ], "displayMode": "table", "placement": "bottom", "showLegend": true }, "tooltip": { "hideZeros": false, "mode": "multi", "sort": "none" } }, "pluginVersion": "12.2.1", "targets": [ { "expr": "(node_filefd_allocated{job=\"vyos\", instance=~\"$instance\"} / node_filefd_maximum{job=\"vyos\", instance=~\"$instance\"}) * 100", "legendFormat": "{{instance}}", "refId": "A" } ], "title": "File Descriptors Usage (%)", "type": "timeseries" }, { "datasource": { "type": "prometheus", "uid": "ff1qkncht70n4c" }, "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisBorderShow": false, "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "barWidthFactor": 0.6, "drawStyle": "line", "fillOpacity": 0, "gradientMode": "none", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 5, "scaleDistribution": { "type": "linear" }, "showPoints": "auto", "showValues": false, "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": 0 }, { "color": "red", "value": 80 } ] } }, "overrides": [] }, "gridPos": { "h": 8, "w": 24, "x": 0, "y": 28 }, "id": 6, "options": { "legend": { "calcs": [], "displayMode": "list", "placement": "bottom", "showLegend": true }, "tooltip": { "hideZeros": false, "mode": "single", "sort": "none" } }, "pluginVersion": "12.2.1", "targets": [ { "expr": "sum by (device) (rate(node_network_receive_bytes_total{job=\"vyos\", instance=~\"$instance\", device!~\"lo\"}[1m]))", "legendFormat": "↓ {{device}}", "refId": "A" }, { "expr": "sum by (device) (rate(node_network_transmit_bytes_total{job=\"vyos\", instance=~\"$instance\", device!~\"lo\"}[1m]))", "legendFormat": "↑ {{device}}", "refId": "B" } ], "title": "Network Throughput (bytes/s)", "type": "timeseries" }, { "collapsed": false, "gridPos": { "h": 1, "w": 24, "x": 0, "y": 36 }, "id": 24, "panels": [], "title": "Network Quality Metrics (Medium Priority)", "type": "row" }, { "datasource": { "type": "prometheus", "uid": "ff1qkncht70n4c" }, "description": "Packet rate by interface", "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisBorderShow": false, "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "Packets/s", "axisPlacement": "auto", "barAlignment": 0, "barWidthFactor": 0.6, "drawStyle": "line", "fillOpacity": 10, "gradientMode": "none", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "insertNulls": false, "lineInterpolation": "smooth", "lineWidth": 1, "pointSize": 5, "scaleDistribution": { "type": "linear" }, "showPoints": "never", "showValues": false, "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": 0 } ] }, "unit": "pps" }, "overrides": [] }, "gridPos": { "h": 8, "w": 16, "x": 0, "y": 37 }, "id": 25, "options": { "legend": { "calcs": [ "mean", "max" ], "displayMode": "table", "placement": "bottom", "showLegend": true }, "tooltip": { "hideZeros": false, "mode": "multi", "sort": "desc" } }, "pluginVersion": "12.2.1", "targets": [ { "expr": "rate(node_network_receive_packets_total{job=\"vyos\", instance=~\"$instance\", device!~\"lo\"}[1m])", "legendFormat": "↓ RX {{device}}", "refId": "A" }, { "expr": "rate(node_network_transmit_packets_total{job=\"vyos\", instance=~\"$instance\", device!~\"lo\"}[1m])", "legendFormat": "↑ TX {{device}}", "refId": "B" } ], "title": "Network Packets Rate", "type": "timeseries" }, { "datasource": { "type": "prometheus", "uid": "ff1qkncht70n4c" }, "description": "Interface operational status (1=up, 0=down)", "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "mappings": [ { "options": { "0": { "color": "red", "index": 1, "text": "DOWN" } }, "type": "value" }, { "options": { "1": { "color": "green", "index": 0, "text": "UP" } }, "type": "value" } ], "thresholds": { "mode": "absolute", "steps": [ { "color": "red", "value": 0 }, { "color": "green", "value": 1 } ] } }, "overrides": [] }, "gridPos": { "h": 8, "w": 8, "x": 16, "y": 37 }, "id": 26, "options": { "colorMode": "background", "graphMode": "none", "justifyMode": "auto", "orientation": "auto", "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showPercentChange": false, "textMode": "value_and_name", "wideLayout": true }, "pluginVersion": "12.2.1", "targets": [ { "expr": "node_network_up{job=\"vyos\", instance=~\"$instance\", device!~\"lo\"}", "legendFormat": "{{device}}", "refId": "A" } ], "title": "Interface Status", "type": "stat" }, { "datasource": { "type": "prometheus", "uid": "ff1qkncht70n4c" }, "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisBorderShow": false, "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "barWidthFactor": 0.6, "drawStyle": "line", "fillOpacity": 0, "gradientMode": "none", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 5, "scaleDistribution": { "type": "linear" }, "showPoints": "auto", "showValues": false, "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": 0 }, { "color": "red", "value": 80 } ] } }, "overrides": [] }, "gridPos": { "h": 8, "w": 24, "x": 0, "y": 45 }, "id": 7, "options": { "legend": { "calcs": [], "displayMode": "list", "placement": "bottom", "showLegend": true }, "tooltip": { "hideZeros": false, "mode": "single", "sort": "none" } }, "pluginVersion": "12.2.1", "targets": [ { "expr": "sum by (device) (rate(node_network_receive_errs_total{job=\"vyos\", instance=~\"$instance\", device!~\"lo\"}[1m]))", "legendFormat": "rx_err {{device}}", "refId": "A" }, { "expr": "sum by (device) (rate(node_network_transmit_errs_total{job=\"vyos\", instance=~\"$instance\", device!~\"lo\"}[1m]))", "legendFormat": "tx_err {{device}}", "refId": "B" }, { "expr": "sum by (device) (rate(node_network_receive_drop_total{job=\"vyos\", instance=~\"$instance\", device!~\"lo\"}[1m]))", "legendFormat": "rx_drop {{device}}", "refId": "C" }, { "expr": "sum by (device) (rate(node_network_transmit_drop_total{job=\"vyos\", instance=~\"$instance\", device!~\"lo\"}[1m]))", "legendFormat": "tx_drop {{device}}", "refId": "D" } ], "title": "Interface Errors/Drops (per s)", "type": "timeseries" }, { "collapsed": false, "gridPos": { "h": 1, "w": 24, "x": 0, "y": 53 }, "id": 27, "panels": [], "title": "VPN Monitoring (Medium Priority)", "type": "row" }, { "datasource": { "type": "prometheus", "uid": "ff1qkncht70n4c" }, "description": "WireGuard VPN traffic by interface", "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisBorderShow": false, "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "barWidthFactor": 0.6, "drawStyle": "line", "fillOpacity": 15, "gradientMode": "none", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "insertNulls": false, "lineInterpolation": "smooth", "lineWidth": 2, "pointSize": 5, "scaleDistribution": { "type": "linear" }, "showPoints": "never", "showValues": false, "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": 0 } ] }, "unit": "Bps" }, "overrides": [] }, "gridPos": { "h": 8, "w": 16, "x": 0, "y": 54 }, "id": 28, "options": { "legend": { "calcs": [ "mean", "max" ], "displayMode": "table", "placement": "bottom", "showLegend": true }, "tooltip": { "hideZeros": false, "mode": "multi", "sort": "desc" } }, "pluginVersion": "12.2.1", "targets": [ { "expr": "rate(node_network_receive_bytes_total{job=\"vyos\", instance=~\"$instance\", device=~\"wg.*\"}[1m])", "legendFormat": "↓ RX {{device}}", "refId": "A" }, { "expr": "rate(node_network_transmit_bytes_total{job=\"vyos\", instance=~\"$instance\", device=~\"wg.*\"}[1m])", "legendFormat": "↑ TX {{device}}", "refId": "B" } ], "title": "WireGuard VPN Traffic", "type": "timeseries" }, { "collapsed": false, "gridPos": { "h": 1, "w": 24, "x": 0, "y": 62 }, "id": 13, "panels": [], "title": "Firewall Events (Firehol \u0026 Custom Rules)", "type": "row" }, { "datasource": { "type": "loki", "uid": "ef1qnibjxb5z4a" }, "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisBorderShow": false, "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "Events/min", "axisPlacement": "auto", "barAlignment": 0, "barWidthFactor": 0.6, "drawStyle": "line", "fillOpacity": 10, "gradientMode": "none", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 5, "scaleDistribution": { "type": "linear" }, "showPoints": "auto", "showValues": false, "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": 0 }, { "color": "red", "value": 80 } ] } }, "overrides": [] }, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 63 }, "id": 14, "options": { "legend": { "calcs": [], "displayMode": "list", "placement": "bottom", "showLegend": true }, "tooltip": { "hideZeros": false, "mode": "multi", "sort": "desc" } }, "pluginVersion": "12.2.1", "targets": [ { "expr": "sum by (rule) (count_over_time({vyos=\"syslog\", appname=\"kernel\"} |~ \"IN=pppoe0\" | pattern `\u003c_\u003e[\u003crule\u003e]\u003c_\u003e` [1m]))", "legendFormat": "{{rule}}", "refId": "A" } ], "title": "Firewall Events by Rule (per min)", "type": "timeseries" }, { "datasource": { "type": "loki", "uid": "ef1qnibjxb5z4a" }, "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisBorderShow": false, "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "Events/min", "axisPlacement": "auto", "barAlignment": 0, "barWidthFactor": 0.6, "drawStyle": "line", "fillOpacity": 15, "gradientMode": "none", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "insertNulls": false, "lineInterpolation": "smooth", "lineWidth": 2, "pointSize": 5, "scaleDistribution": { "type": "linear" }, "showPoints": "auto", "showValues": false, "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": 0 }, { "color": "red", "value": 80 } ] } }, "overrides": [] }, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 63 }, "id": 15, "options": { "legend": { "calcs": [ "last" ], "displayMode": "table", "placement": "bottom", "showLegend": true }, "tooltip": { "hideZeros": false, "mode": "multi", "sort": "desc" } }, "pluginVersion": "12.2.1", "targets": [ { "expr": "sum by (proto) (count_over_time({vyos=\"syslog\", appname=\"kernel\"} |~ \"IN=pppoe0\" | pattern `\u003c_\u003ePROTO=\u003cproto\u003e` [1m]))", "legendFormat": "{{proto}}", "refId": "A" } ], "title": "Firewall Events by Protocol (per min)", "type": "timeseries" }, { "datasource": { "type": "loki", "uid": "ef1qnibjxb5z4a" }, "description": "Potential port scanning activity - IPs hitting multiple ports in short time", "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisBorderShow": false, "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "Unique Ports Hit", "axisPlacement": "auto", "barAlignment": 0, "barWidthFactor": 0.6, "drawStyle": "bars", "fillOpacity": 80, "gradientMode": "none", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 5, "scaleDistribution": { "type": "linear" }, "showPoints": "never", "showValues": false, "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "line" } }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": 0 }, { "color": "yellow", "value": 10 }, { "color": "red", "value": 20 } ] } }, "overrides": [] }, "gridPos": { "h": 8, "w": 24, "x": 0, "y": 71 }, "id": 33, "options": { "legend": { "calcs": [ "max" ], "displayMode": "table", "placement": "bottom", "showLegend": true }, "tooltip": { "hideZeros": false, "mode": "multi", "sort": "desc" } }, "pluginVersion": "12.2.1", "targets": [ { "expr": "topk(15, count by (src_ip) (count_over_time({vyos=\"syslog\", appname=\"kernel\"} |~ \"IN=pppoe0\" | pattern `\u003c_\u003eSRC=\u003csrc_ip\u003e \u003c_\u003eDPT=\u003cdpt\u003e` [30s])))", "legendFormat": "{{src_ip}}", "refId": "A" } ], "title": "Port Scan Detection (Unique Ports per IP in 30s)", "type": "timeseries" }, { "datasource": { "type": "loki", "uid": "ef1qnibjxb5z4a" }, "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "custom": { "align": "auto", "cellOptions": { "type": "auto" }, "footer": { "reducers": [] }, "inspect": false }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": 0 }, { "color": "yellow", "value": 50 }, { "color": "red", "value": 100 } ] } }, "overrides": [ { "matcher": { "id": "byName", "options": "Value" }, "properties": [ { "id": "displayName", "value": "Count" }, { "id": "custom.cellOptions", "value": { "type": "color-background" } }, { "id": "custom.width", "value": 100 } ] } ] }, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 79 }, "id": 16, "options": { "cellHeight": "sm", "footer": { "fields": "", "reducer": [ "sum" ], "show": false }, "showHeader": true, "sortBy": [ { "desc": true, "displayName": "Count" } ] }, "pluginVersion": "12.2.1", "targets": [ { "expr": "topk(20, sum by (src_ip) (count_over_time({vyos=\"syslog\", appname=\"kernel\"} |~ \"IN=pppoe0\" | pattern `\u003c_\u003eSRC=\u003csrc_ip\u003e DST=\u003c_\u003e` [10m])))", "instant": true, "legendFormat": "", "refId": "A" } ], "title": "Top 20 Blocked Source IPs (Last 10m)", "transformations": [ { "id": "labelsToFields", "options": { "keepLabels": [ "src_ip" ], "mode": "columns" } }, { "id": "organize", "options": { "excludeByName": { "Time": true }, "indexByName": { "Value": 1, "src_ip": 0 }, "renameByName": { "Value": "Count", "src_ip": "Source IP" } } }, { "id": "sortBy", "options": { "fields": {}, "sort": [ { "desc": true, "field": "Count" } ] } } ], "type": "table" }, { "datasource": { "type": "loki", "uid": "ef1qnibjxb5z4a" }, "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "custom": { "align": "auto", "cellOptions": { "type": "auto" }, "footer": { "reducers": [] }, "inspect": false }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": 0 }, { "color": "yellow", "value": 20 }, { "color": "red", "value": 50 } ] } }, "overrides": [ { "matcher": { "id": "byName", "options": "Value" }, "properties": [ { "id": "displayName", "value": "Count" }, { "id": "custom.cellOptions", "value": { "type": "color-background" } }, { "id": "custom.width", "value": 100 } ] } ] }, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 79 }, "id": 17, "options": { "cellHeight": "sm", "footer": { "fields": "", "reducer": [ "sum" ], "show": false }, "showHeader": true, "sortBy": [ { "desc": true, "displayName": "Count" } ] }, "pluginVersion": "12.2.1", "targets": [ { "expr": "topk(20, sum by (dpt) (count_over_time({vyos=\"syslog\", appname=\"kernel\"} |~ \"IN=pppoe0\" | pattern `\u003c_\u003eDPT=\u003cdpt\u003e \u003c_\u003e` [10m])))", "instant": true, "legendFormat": "", "refId": "A" } ], "title": "Top 20 Targeted Ports (Last 10m)", "transformations": [ { "id": "labelsToFields", "options": { "keepLabels": [ "dpt" ], "mode": "columns" } }, { "id": "organize", "options": { "excludeByName": { "Time": true }, "indexByName": { "Value": 1, "dpt": 0 }, "renameByName": { "Value": "Count", "dpt": "Port" } } }, { "id": "sortBy", "options": { "fields": {}, "sort": [ { "desc": true, "field": "Count" } ] } } ], "type": "table" }, { "datasource": { "type": "loki", "uid": "ef1qnibjxb5z4a" }, "fieldConfig": { "defaults": {}, "overrides": [] }, "gridPos": { "h": 10, "w": 24, "x": 0, "y": 87 }, "id": 11, "options": { "dedupStrategy": "none", "enableInfiniteScrolling": false, "enableLogDetails": true, "prettifyLogMessage": false, "showCommonLabels": false, "showLabels": false, "showTime": true, "sortOrder": "Descending", "wrapLogMessage": true }, "pluginVersion": "12.2.1", "targets": [ { "expr": "{vyos=~\"$loki_vyos\"}", "refId": "A" } ], "title": "Live Logs (filtered by $loki_vyos)", "type": "logs" } ], "preload": false, "refresh": "5s", "schemaVersion": 42, "tags": [ "vyos", "prometheus", "loki", "network" ], "templating": { "list": [ { "current": { "text": "192.168.20.1:9100", "value": "192.168.20.1:9100" }, "datasource": { "type": "prometheus", "uid": "ff1qkncht70n4c" }, "includeAll": false, "name": "instance", "options": [], "query": "label_values(up{job=\"vyos\"}, instance)", "refresh": 1, "sort": 1, "type": "query" }, { "current": { "text": [ "All" ], "value": [ "$__all" ] }, "datasource": { "type": "loki", "uid": "ef1qnibjxb5z4a" }, "includeAll": true, "multi": true, "name": "loki_vyos", "options": [], "query": "label_values(vyos)", "refresh": 1, "sort": 1, "type": "query" } ] }, "time": { "from": "now-15m", "to": "now" }, "timepicker": {}, "timezone": "browser", "title": "VyOS Router" } }