632 lines
21 KiB
YAML
632 lines
21 KiB
YAML
---
|
|
apiVersion: v1
|
|
kind: ConfigMap
|
|
metadata:
|
|
name: dashboard-cilium
|
|
namespace: monitoring
|
|
|
|
labels:
|
|
grafana_dashboard: "1"
|
|
annotations:
|
|
grafana_folder: Networking
|
|
data:
|
|
cilium-networking.json: |-
|
|
{
|
|
"annotations": {
|
|
"list": [
|
|
{
|
|
"builtIn": 1,
|
|
"datasource": {
|
|
"type": "grafana",
|
|
"uid": "-- Grafana --"
|
|
},
|
|
"enable": true,
|
|
"hide": true,
|
|
"iconColor": "rgba(0, 211, 255, 1)",
|
|
"name": "Annotations & Alerts",
|
|
"type": "dashboard"
|
|
}
|
|
]
|
|
},
|
|
"description": "Cilium networking dashboard for monitoring network flows, policy denials, drops, and connectivity",
|
|
"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": "Network Traffic Overview",
|
|
"type": "row"
|
|
},
|
|
{
|
|
"datasource": { "type": "prometheus", "uid": "$datasource" },
|
|
"description": "Total bytes received across the cluster",
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"color": { "mode": "palette-classic" },
|
|
"custom": {
|
|
"drawStyle": "line",
|
|
"fillOpacity": 20,
|
|
"lineWidth": 2,
|
|
"showPoints": "never"
|
|
},
|
|
"thresholds": { "mode": "absolute", "steps": [{ "color": "green", "value": null }] },
|
|
"unit": "bytes"
|
|
},
|
|
"overrides": []
|
|
},
|
|
"gridPos": { "h": 8, "w": 12, "x": 0, "y": 1 },
|
|
"id": 1,
|
|
"options": {
|
|
"legend": { "calcs": ["mean", "max"], "displayMode": "table", "placement": "bottom" },
|
|
"tooltip": { "mode": "multi", "sort": "desc" }
|
|
},
|
|
"title": "Network Received Bytes Total",
|
|
"type": "timeseries",
|
|
"targets": [
|
|
{
|
|
"datasource": { "type": "prometheus", "uid": "$datasource" },
|
|
"expr": "rate(cilium_network_received_bytes_total[5m])",
|
|
"legendFormat": "{{namespace}} - {{pod}}",
|
|
"refId": "A"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"datasource": { "type": "prometheus", "uid": "$datasource" },
|
|
"description": "Total bytes sent across the cluster",
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"color": { "mode": "palette-classic" },
|
|
"custom": {
|
|
"drawStyle": "line",
|
|
"fillOpacity": 20,
|
|
"lineWidth": 2,
|
|
"showPoints": "never"
|
|
},
|
|
"thresholds": { "mode": "absolute", "steps": [{ "color": "green", "value": null }] },
|
|
"unit": "bytes"
|
|
},
|
|
"overrides": []
|
|
},
|
|
"gridPos": { "h": 8, "w": 12, "x": 12, "y": 1 },
|
|
"id": 2,
|
|
"options": {
|
|
"legend": { "calcs": ["mean", "max"], "displayMode": "table", "placement": "bottom" },
|
|
"tooltip": { "mode": "multi", "sort": "desc" }
|
|
},
|
|
"title": "Network Sent Bytes Total",
|
|
"type": "timeseries",
|
|
"targets": [
|
|
{
|
|
"datasource": { "type": "prometheus", "uid": "$datasource" },
|
|
"expr": "rate(cilium_network_sent_bytes_total[5m])",
|
|
"legendFormat": "{{namespace}} - {{pod}}",
|
|
"refId": "A"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"datasource": { "type": "prometheus", "uid": "$datasource" },
|
|
"description": "Bandwidth received per namespace",
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"color": { "mode": "palette-classic" },
|
|
"custom": {
|
|
"drawStyle": "line",
|
|
"fillOpacity": 20,
|
|
"lineWidth": 2,
|
|
"showPoints": "never"
|
|
},
|
|
"thresholds": { "mode": "absolute", "steps": [{ "color": "green", "value": null }] },
|
|
"unit": "Bps"
|
|
},
|
|
"overrides": []
|
|
},
|
|
"gridPos": { "h": 8, "w": 12, "x": 0, "y": 9 },
|
|
"id": 3,
|
|
"options": {
|
|
"legend": { "calcs": ["mean", "max"], "displayMode": "table", "placement": "bottom" },
|
|
"tooltip": { "mode": "multi", "sort": "desc" }
|
|
},
|
|
"title": "Bandwidth Received Per Namespace",
|
|
"type": "timeseries",
|
|
"targets": [
|
|
{
|
|
"datasource": { "type": "prometheus", "uid": "$datasource" },
|
|
"expr": "sum by (namespace) (rate(cilium_network_received_bytes_total[5m]))",
|
|
"legendFormat": "{{namespace}}",
|
|
"refId": "A"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"datasource": { "type": "prometheus", "uid": "$datasource" },
|
|
"description": "Bandwidth sent per namespace",
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"color": { "mode": "palette-classic" },
|
|
"custom": {
|
|
"drawStyle": "line",
|
|
"fillOpacity": 20,
|
|
"lineWidth": 2,
|
|
"showPoints": "never"
|
|
},
|
|
"thresholds": { "mode": "absolute", "steps": [{ "color": "green", "value": null }] },
|
|
"unit": "Bps"
|
|
},
|
|
"overrides": []
|
|
},
|
|
"gridPos": { "h": 8, "w": 12, "x": 12, "y": 9 },
|
|
"id": 4,
|
|
"options": {
|
|
"legend": { "calcs": ["mean", "max"], "displayMode": "table", "placement": "bottom" },
|
|
"tooltip": { "mode": "multi", "sort": "desc" }
|
|
},
|
|
"title": "Bandwidth Sent Per Namespace",
|
|
"type": "timeseries",
|
|
"targets": [
|
|
{
|
|
"datasource": { "type": "prometheus", "uid": "$datasource" },
|
|
"expr": "sum by (namespace) (rate(cilium_network_sent_bytes_total[5m]))",
|
|
"legendFormat": "{{namespace}}",
|
|
"refId": "A"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"collapsed": false,
|
|
"gridPos": { "h": 1, "w": 24, "x": 0, "y": 17 },
|
|
"id": 200,
|
|
"panels": [],
|
|
"title": "Network Policy Enforcement",
|
|
"type": "row"
|
|
},
|
|
{
|
|
"datasource": { "type": "prometheus", "uid": "$datasource" },
|
|
"description": "Policy L3/L4 denied connections",
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"color": { "mode": "palette-classic" },
|
|
"custom": {
|
|
"drawStyle": "line",
|
|
"fillOpacity": 10,
|
|
"lineWidth": 2,
|
|
"showPoints": "never"
|
|
},
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [
|
|
{ "color": "green", "value": null },
|
|
{ "color": "red", "value": 1 }
|
|
]
|
|
},
|
|
"unit": "short"
|
|
},
|
|
"overrides": []
|
|
},
|
|
"gridPos": { "h": 8, "w": 12, "x": 0, "y": 18 },
|
|
"id": 5,
|
|
"options": {
|
|
"legend": { "calcs": ["sum", "max"], "displayMode": "table", "placement": "bottom" },
|
|
"tooltip": { "mode": "multi", "sort": "desc" }
|
|
},
|
|
"title": "Policy L3/L4 Denied Total",
|
|
"type": "timeseries",
|
|
"targets": [
|
|
{
|
|
"datasource": { "type": "prometheus", "uid": "$datasource" },
|
|
"expr": "increase(cilium_policy_l3_l4_denied_total[5m])",
|
|
"legendFormat": "{{namespace}} - {{pod}}",
|
|
"refId": "A"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"datasource": { "type": "prometheus", "uid": "$datasource" },
|
|
"description": "Policy L3/L4 allowed connections",
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"color": { "mode": "palette-classic" },
|
|
"custom": {
|
|
"drawStyle": "line",
|
|
"fillOpacity": 20,
|
|
"lineWidth": 2,
|
|
"showPoints": "never"
|
|
},
|
|
"thresholds": { "mode": "absolute", "steps": [{ "color": "green", "value": null }] },
|
|
"unit": "short"
|
|
},
|
|
"overrides": []
|
|
},
|
|
"gridPos": { "h": 8, "w": 12, "x": 12, "y": 18 },
|
|
"id": 6,
|
|
"options": {
|
|
"legend": { "calcs": ["sum", "max"], "displayMode": "table", "placement": "bottom" },
|
|
"tooltip": { "mode": "multi", "sort": "desc" }
|
|
},
|
|
"title": "Policy L3/L4 Allowed Total",
|
|
"type": "timeseries",
|
|
"targets": [
|
|
{
|
|
"datasource": { "type": "prometheus", "uid": "$datasource" },
|
|
"expr": "increase(cilium_policy_l3_l4_allowed_total[5m])",
|
|
"legendFormat": "{{namespace}} - {{pod}}",
|
|
"refId": "A"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"datasource": { "type": "prometheus", "uid": "$datasource" },
|
|
"description": "Dropped packets by reason",
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"color": { "mode": "palette-classic" },
|
|
"custom": {
|
|
"drawStyle": "bars",
|
|
"fillOpacity": 80,
|
|
"lineWidth": 1,
|
|
"showPoints": "never"
|
|
},
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [
|
|
{ "color": "green", "value": null },
|
|
{ "color": "yellow", "value": 10 },
|
|
{ "color": "red", "value": 100 }
|
|
]
|
|
},
|
|
"unit": "short"
|
|
},
|
|
"overrides": []
|
|
},
|
|
"gridPos": { "h": 8, "w": 12, "x": 0, "y": 26 },
|
|
"id": 7,
|
|
"options": {
|
|
"legend": { "calcs": ["sum", "max"], "displayMode": "table", "placement": "bottom" },
|
|
"tooltip": { "mode": "multi", "sort": "desc" }
|
|
},
|
|
"title": "Drop Total By Reason",
|
|
"type": "timeseries",
|
|
"targets": [
|
|
{
|
|
"datasource": { "type": "prometheus", "uid": "$datasource" },
|
|
"expr": "increase(cilium_drop_total{reason!=\"\"}[5m])",
|
|
"legendFormat": "{{reason}}",
|
|
"refId": "A"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"datasource": { "type": "prometheus", "uid": "$datasource" },
|
|
"description": "Total drops across all reasons",
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"color": { "mode": "thresholds" },
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [
|
|
{ "color": "green", "value": null },
|
|
{ "color": "yellow", "value": 50 },
|
|
{ "color": "red", "value": 200 }
|
|
]
|
|
},
|
|
"unit": "short"
|
|
},
|
|
"overrides": []
|
|
},
|
|
"gridPos": { "h": 8, "w": 12, "x": 12, "y": 26 },
|
|
"id": 8,
|
|
"options": {
|
|
"colorMode": "value",
|
|
"graphMode": "area",
|
|
"justifyMode": "auto",
|
|
"orientation": "auto",
|
|
"reduceOptions": { "calcs": ["sum"], "fields": "", "values": false },
|
|
"textMode": "auto"
|
|
},
|
|
"title": "Total Drops",
|
|
"type": "stat",
|
|
"targets": [
|
|
{
|
|
"datasource": { "type": "prometheus", "uid": "$datasource" },
|
|
"expr": "sum(increase(cilium_drop_total[5m]))",
|
|
"legendFormat": "Total",
|
|
"refId": "A"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"collapsed": false,
|
|
"gridPos": { "h": 1, "w": 24, "x": 0, "y": 34 },
|
|
"id": 300,
|
|
"panels": [],
|
|
"title": "Service Connectivity & TCP",
|
|
"type": "row"
|
|
},
|
|
{
|
|
"datasource": { "type": "prometheus", "uid": "$datasource" },
|
|
"description": "TCP connection count and duration",
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"color": { "mode": "palette-classic" },
|
|
"custom": {
|
|
"drawStyle": "line",
|
|
"fillOpacity": 20,
|
|
"lineWidth": 2,
|
|
"showPoints": "never"
|
|
},
|
|
"thresholds": { "mode": "absolute", "steps": [{ "color": "green", "value": null }] },
|
|
"unit": "short"
|
|
},
|
|
"overrides": []
|
|
},
|
|
"gridPos": { "h": 8, "w": 12, "x": 0, "y": 35 },
|
|
"id": 9,
|
|
"options": {
|
|
"legend": { "calcs": ["mean", "max"], "displayMode": "table", "placement": "bottom" },
|
|
"tooltip": { "mode": "multi", "sort": "desc" }
|
|
},
|
|
"title": "TCP Connection Count",
|
|
"type": "timeseries",
|
|
"targets": [
|
|
{
|
|
"datasource": { "type": "prometheus", "uid": "$datasource" },
|
|
"expr": "rate(cilium_network_tcp_duration_seconds_count[5m])",
|
|
"legendFormat": "{{namespace}} - {{pod}}",
|
|
"refId": "A"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"datasource": { "type": "prometheus", "uid": "$datasource" },
|
|
"description": "TCP connection duration (latency)",
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"color": { "mode": "palette-classic" },
|
|
"custom": {
|
|
"drawStyle": "line",
|
|
"fillOpacity": 20,
|
|
"lineWidth": 2,
|
|
"showPoints": "never"
|
|
},
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [
|
|
{ "color": "green", "value": null },
|
|
{ "color": "yellow", "value": 0.1 },
|
|
{ "color": "red", "value": 0.5 }
|
|
]
|
|
},
|
|
"unit": "s"
|
|
},
|
|
"overrides": []
|
|
},
|
|
"gridPos": { "h": 8, "w": 12, "x": 12, "y": 35 },
|
|
"id": 10,
|
|
"options": {
|
|
"legend": { "calcs": ["mean", "max", "p99"], "displayMode": "table", "placement": "bottom" },
|
|
"tooltip": { "mode": "multi", "sort": "desc" }
|
|
},
|
|
"title": "TCP Connection Duration (Latency)",
|
|
"type": "timeseries",
|
|
"targets": [
|
|
{
|
|
"datasource": { "type": "prometheus", "uid": "$datasource" },
|
|
"expr": "rate(cilium_network_tcp_duration_seconds_sum[5m]) / rate(cilium_network_tcp_duration_seconds_count[5m])",
|
|
"legendFormat": "{{namespace}} - {{pod}}",
|
|
"refId": "A"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"collapsed": false,
|
|
"gridPos": { "h": 1, "w": 24, "x": 0, "y": 43 },
|
|
"id": 400,
|
|
"panels": [],
|
|
"title": "DNS Query Monitoring",
|
|
"type": "row"
|
|
},
|
|
{
|
|
"datasource": { "type": "prometheus", "uid": "$datasource" },
|
|
"description": "DNS query rate from Cilium",
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"color": { "mode": "palette-classic" },
|
|
"custom": {
|
|
"drawStyle": "line",
|
|
"fillOpacity": 20,
|
|
"lineWidth": 2,
|
|
"showPoints": "never"
|
|
},
|
|
"thresholds": { "mode": "absolute", "steps": [{ "color": "green", "value": null }] },
|
|
"unit": "short"
|
|
},
|
|
"overrides": []
|
|
},
|
|
"gridPos": { "h": 8, "w": 12, "x": 0, "y": 44 },
|
|
"id": 11,
|
|
"options": {
|
|
"legend": { "calcs": ["sum", "max"], "displayMode": "table", "placement": "bottom" },
|
|
"tooltip": { "mode": "multi", "sort": "desc" }
|
|
},
|
|
"title": "DNS Query Rate",
|
|
"type": "timeseries",
|
|
"targets": [
|
|
{
|
|
"datasource": { "type": "prometheus", "uid": "$datasource" },
|
|
"expr": "rate(cilium_dns_queries_total[5m])",
|
|
"legendFormat": "{{namespace}} - {{pod}}",
|
|
"refId": "A"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"datasource": { "type": "prometheus", "uid": "$datasource" },
|
|
"description": "DNS query errors from Cilium",
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"color": { "mode": "palette-classic" },
|
|
"custom": {
|
|
"drawStyle": "bars",
|
|
"fillOpacity": 80,
|
|
"lineWidth": 1,
|
|
"showPoints": "never"
|
|
},
|
|
"thresholds": {
|
|
"mode": "absolute",
|
|
"steps": [
|
|
{ "color": "green", "value": null },
|
|
{ "color": "red", "value": 1 }
|
|
]
|
|
},
|
|
"unit": "short"
|
|
},
|
|
"overrides": []
|
|
},
|
|
"gridPos": { "h": 8, "w": 12, "x": 12, "y": 44 },
|
|
"id": 12,
|
|
"options": {
|
|
"legend": { "calcs": ["sum", "max"], "displayMode": "table", "placement": "bottom" },
|
|
"tooltip": { "mode": "multi", "sort": "desc" }
|
|
},
|
|
"title": "DNS Query Errors",
|
|
"type": "timeseries",
|
|
"targets": [
|
|
{
|
|
"datasource": { "type": "prometheus", "uid": "$datasource" },
|
|
"expr": "rate(cilium_dns_queries_total{status=\"error\"}[5m])",
|
|
"legendFormat": "{{namespace}} - {{pod}}",
|
|
"refId": "A"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"collapsed": false,
|
|
"gridPos": { "h": 1, "w": 24, "x": 0, "y": 52 },
|
|
"id": 500,
|
|
"panels": [],
|
|
"title": "Load Balancer Metrics",
|
|
"type": "row"
|
|
},
|
|
{
|
|
"datasource": { "type": "prometheus", "uid": "$datasource" },
|
|
"description": "Load balancer backend selection count",
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"color": { "mode": "palette-classic" },
|
|
"custom": {
|
|
"drawStyle": "line",
|
|
"fillOpacity": 20,
|
|
"lineWidth": 2,
|
|
"showPoints": "never"
|
|
},
|
|
"thresholds": { "mode": "absolute", "steps": [{ "color": "green", "value": null }] },
|
|
"unit": "short"
|
|
},
|
|
"overrides": []
|
|
},
|
|
"gridPos": { "h": 8, "w": 12, "x": 0, "y": 53 },
|
|
"id": 13,
|
|
"options": {
|
|
"legend": { "calcs": ["sum"], "displayMode": "table", "placement": "bottom" },
|
|
"tooltip": { "mode": "multi", "sort": "desc" }
|
|
},
|
|
"title": "Load Balancer Backend Selections",
|
|
"type": "timeseries",
|
|
"targets": [
|
|
{
|
|
"datasource": { "type": "prometheus", "uid": "$datasource" },
|
|
"expr": "rate(cilium_lb_backends_total[5m])",
|
|
"legendFormat": "{{type}} - {{address}}:{{port}}",
|
|
"refId": "A"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"datasource": { "type": "prometheus", "uid": "$datasource" },
|
|
"description": "Service proxy TCP connections tracked by Cilium load balancer",
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"color": { "mode": "palette-classic" },
|
|
"custom": {
|
|
"drawStyle": "line",
|
|
"fillOpacity": 20,
|
|
"lineWidth": 2,
|
|
"showPoints": "never"
|
|
},
|
|
"thresholds": { "mode": "absolute", "steps": [{ "color": "green", "value": null }] },
|
|
"unit": "short"
|
|
},
|
|
"overrides": []
|
|
},
|
|
"gridPos": { "h": 8, "w": 12, "x": 12, "y": 53 },
|
|
"id": 14,
|
|
"options": {
|
|
"legend": { "calcs": ["sum", "max"], "displayMode": "table", "placement": "bottom" },
|
|
"tooltip": { "mode": "multi", "sort": "desc" }
|
|
},
|
|
"title": "Service Proxy TCP Connections",
|
|
"type": "timeseries",
|
|
"targets": [
|
|
{
|
|
"datasource": { "type": "prometheus", "uid": "$datasource" },
|
|
"expr": "rate(cilium_service_proxy_tcp_connections_total[5m])",
|
|
"legendFormat": "{{namespace}} - {{pod}}",
|
|
"refId": "A"
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"refresh": "30s",
|
|
"schemaVersion": 39,
|
|
"tags": ["cilium", "networking", "kubernetes"],
|
|
"templating": {
|
|
"list": [
|
|
{
|
|
"current": {
|
|
"selected": false,
|
|
"text": "prometheus",
|
|
"value": "prometheus"
|
|
},
|
|
"hide": 2,
|
|
"includeAll": false,
|
|
"label": "Datasource",
|
|
"multi": false,
|
|
"name": "datasource",
|
|
"options": [],
|
|
"query": "prometheus",
|
|
"refresh": 1,
|
|
"regex": "",
|
|
"skipUrlSync": false,
|
|
"type": "datasource"
|
|
}
|
|
]
|
|
},
|
|
"time": {
|
|
"from": "now-3h",
|
|
"to": "now"
|
|
},
|
|
"timepicker": {
|
|
"refresh_intervals": [
|
|
"10s",
|
|
"30s",
|
|
"1m",
|
|
"5m",
|
|
"15m",
|
|
"30m",
|
|
"1h",
|
|
"2h",
|
|
"1d"
|
|
]
|
|
},
|
|
"timezone": "",
|
|
"title": "Cilium Networking Dashboard",
|
|
"uid": "cilium-networking-dashboard"
|
|
}
|