apiVersion: monitoring.coreos.com/v1 kind: PodMonitor metadata: labels: app.kubernetes.io/name: wg-exporter jobLabel: wg-exporter release: prometheus name: wg-exporter namespace: mon spec: namespaceSelector: matchNames: - mon podMetricsEndpoints: - interval: 15s port: metrics path: /metrics selector: matchLabels: app.kubernetes.io/name: wg-exporter --- apiVersion: apps/v1 kind: DaemonSet metadata: labels: app.kubernetes.io/name: wg-exporter name: wg-exporter namespace: mon spec: selector: matchLabels: app.kubernetes.io/name: wg-exporter template: metadata: labels: app.kubernetes.io/name: wg-exporter namespace: mon spec: hostNetwork: true containers: - args: - -a=true - -p=9586 - -v=false - -d=true image: mindflavor/prometheus-wireguard-exporter name: wg-exporter ports: - containerPort: 9586 name: metrics protocol: TCP securityContext: capabilities: add: ["NET_ADMIN", "SYS_MODULE"] privileged: true terminationMessagePath: /dev/termination-log terminationMessagePolicy: File volumeMounts: - name: wireguard mountPath: /var/run/wireguard volumes: - name: wireguard hostPath: path: /var/run/wireguard tolerations: - effect: NoSchedule operator: Exists --- apiVersion: v1 kind: ConfigMap metadata: name: grafana-wireguard namespace: mon labels: grafana_dashboard: "1" data: elastic.json: | { "__inputs": [ { "name": "DS_PROMETHEUS", "label": "Prometheus", "description": "", "type": "datasource", "pluginId": "prometheus", "pluginName": "Prometheus" } ], "__requires": [ { "type": "grafana", "id": "grafana", "name": "Grafana", "version": "7.0.5" }, { "type": "panel", "id": "graph", "name": "Graph", "version": "" }, { "type": "datasource", "id": "prometheus", "name": "Prometheus", "version": "1.0.0" }, { "type": "panel", "id": "table-old", "name": "Table (old)", "version": "" } ], "annotations": { "list": [ { "builtIn": 1, "datasource": "-- Grafana --", "enable": true, "hide": true, "iconColor": "rgba(0, 211, 255, 1)", "name": "Annotations & Alerts", "type": "dashboard" } ] }, "editable": true, "gnetId": null, "graphTooltip": 0, "id": null, "iteration": 1602541218129, "links": [], "panels": [ { "cacheTimeout": null, "columns": [ { "$$hashKey": "object:197", "text": "Current", "value": "current" } ], "datasource": "${DS_PROMETHEUS}", "description": "", "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, "fontSize": "100%", "gridPos": { "h": 16, "w": 7, "x": 0, "y": 0 }, "id": 7, "links": [], "pageSize": null, "pluginVersion": "6.2.1", "scroll": true, "showHeader": true, "sort": { "col": 1, "desc": false }, "styles": [ { "$$hashKey": "object:340", "alias": "", "align": "auto", "colorMode": "row", "colors": [ "rgba(50, 172, 45, 0.97)", "rgba(237, 129, 40, 0.89)", "rgba(245, 54, 54, 0.9)" ], "dateFormat": "YYYY-MM-DD HH:mm:ss", "decimals": 0, "mappingType": 1, "pattern": "Current", "thresholds": [ "600", "3600" ], "type": "number", "unit": "s" } ], "targets": [ { "expr": "time() - wireguard_latest_handshake_seconds{node=\"$node\"}", "format": "time_series", "interval": "", "intervalFactor": 1, "legendFormat": "{{allowed_ips}} ({{friendly_name}})", "refId": "A" } ], "timeFrom": null, "timeShift": null, "title": "Latest Handshake", "transform": "timeseries_aggregations", "type": "table-old" }, { "aliasColors": { "sent 10.70.0.2": "green" }, "bars": false, "dashLength": 10, "dashes": false, "datasource": "${DS_PROMETHEUS}", "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 8, "w": 17, "x": 7, "y": 0 }, "hiddenSeries": false, "id": 8, "legend": { "alignAsTable": false, "avg": true, "current": false, "hideEmpty": true, "hideZero": true, "max": true, "min": true, "rightSide": true, "show": true, "total": false, "values": true }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "dataLinks": [] }, "percentage": false, "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "irate(wireguard_sent_bytes_total{node=\"$node\"}[5m])", "format": "time_series", "instant": false, "interval": "", "intervalFactor": 1, "legendFormat": "{{allowed_ips}} ({{friendly_name}})", "refId": "A" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Sent Bytes", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "$$hashKey": "object:975", "format": "Bps", "label": null, "logBase": 1, "max": null, "min": null, "show": true }, { "$$hashKey": "object:976", "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": { "sent 10.70.0.2": "green" }, "bars": false, "dashLength": 10, "dashes": false, "datasource": "${DS_PROMETHEUS}", "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 8, "w": 17, "x": 7, "y": 8 }, "hiddenSeries": false, "id": 4, "legend": { "alignAsTable": false, "avg": true, "current": false, "hideEmpty": true, "hideZero": true, "max": true, "min": true, "rightSide": true, "show": true, "total": false, "values": true }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "dataLinks": [] }, "percentage": false, "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "irate(wireguard_received_bytes_total{node=\"$node\"}[5m])", "format": "time_series", "instant": false, "interval": "", "intervalFactor": 1, "legendFormat": "{{allowed_ips}} ({{friendly_name}})", "refId": "A" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Received Bytes", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "$$hashKey": "object:975", "format": "Bps", "label": null, "logBase": 1, "max": null, "min": null, "show": true }, { "$$hashKey": "object:976", "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } } ], "refresh": "30s", "schemaVersion": 25, "style": "dark", "tags": [ "prometheus", "wireguard", "network" ], "templating": { "list": [ { "allValue": null, "current": {}, "datasource": "${DS_PROMETHEUS}", "definition": "label_values(wireguard_latest_handshake_seconds{job=\"wireguard-exporter\"}, node)", "hide": 0, "includeAll": false, "label": "Node:", "multi": false, "name": "node", "options": [], "query": "label_values(wireguard_latest_handshake_seconds{job=\"wireguard-exporter\"}, node)", "refresh": 1, "regex": "", "skipUrlSync": false, "sort": 0, "tagValuesQuery": "", "tags": [], "tagsQuery": "", "type": "query", "useTags": false } ] }, "time": { "from": "now-30m", "to": "now" }, "timepicker": { "refresh_intervals": [ "10s", "30s", "1m", "5m", "15m", "30m", "1h", "2h", "1d" ], "time_options": [ "5m", "15m", "1h", "6h", "12h", "24h", "2d", "7d", "30d" ] }, "timezone": "", "title": "WireGuard", "uid": "c0T_8RkZz", "version": 37 }