623 lines
18 KiB
JSON
623 lines
18 KiB
JSON
|
|
{
|
||
|
|
"annotations": {
|
||
|
|
"list": [
|
||
|
|
{
|
||
|
|
"builtIn": 1,
|
||
|
|
"datasource": {
|
||
|
|
"type": "datasource",
|
||
|
|
"uid": "grafana"
|
||
|
|
},
|
||
|
|
"enable": true,
|
||
|
|
"hide": true,
|
||
|
|
"iconColor": "rgba(0, 211, 255, 1)",
|
||
|
|
"name": "Annotations & Alerts",
|
||
|
|
"target": {
|
||
|
|
"limit": 100,
|
||
|
|
"matchAny": false,
|
||
|
|
"tags": [],
|
||
|
|
"type": "dashboard"
|
||
|
|
},
|
||
|
|
"type": "dashboard"
|
||
|
|
}
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"description": "Explore BGP path attributes: communities, MED, local-pref and how they influence routing policy decisions.",
|
||
|
|
"editable": true,
|
||
|
|
"fiscalYearStartMonth": 0,
|
||
|
|
"graphTooltip": 1,
|
||
|
|
"id": null,
|
||
|
|
"links": [
|
||
|
|
{
|
||
|
|
"asDropdown": true,
|
||
|
|
"icon": "external link",
|
||
|
|
"includeVars": true,
|
||
|
|
"keepTime": true,
|
||
|
|
"tags": [
|
||
|
|
"obmp-nav"
|
||
|
|
],
|
||
|
|
"title": "OBMP Dashboards",
|
||
|
|
"type": "dashboards"
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"panels": [
|
||
|
|
{
|
||
|
|
"datasource": {
|
||
|
|
"type": "datasource",
|
||
|
|
"uid": "grafana"
|
||
|
|
},
|
||
|
|
"gridPos": {
|
||
|
|
"h": 8,
|
||
|
|
"w": 24,
|
||
|
|
"x": 0,
|
||
|
|
"y": 0
|
||
|
|
},
|
||
|
|
"id": 1,
|
||
|
|
"options": {
|
||
|
|
"content": "## BGP Path Attributes \u2014 What They Mean\n\n### BGP Communities (RFC 1997)\nCommunities are 32-bit tags attached to routes, written as **ASN:value** (e.g., `65000:100`). They carry policy signals between routers and ASes.\n\n**Well-known communities:**\n| Community | Decimal | Meaning |\n|-----------|---------|----------|\n| `65535:0` | NO_EXPORT | Do not advertise outside this AS or confederation |\n| `65535:1` | NO_ADVERTISE | Do not advertise to any peer |\n| `65535:666` | BLACKHOLE | Drop traffic destined for this prefix (RFC 7999) |\n\nPrivate communities (e.g., `65001:200`) are operator-defined \u2014 they may encode region, customer tier, or traffic-engineering intent.\n\n### Local Preference (local-pref)\n- **Scope:** iBGP only \u2014 never sent to eBGP peers.\n- **Effect:** Higher local-pref wins. Default is **100**.\n- **Use case:** Prefer one upstream provider over another for all outbound traffic.\n\n### Multi-Exit Discriminator (MED)\n- **Scope:** Sent to directly connected eBGP peers to influence *inbound* traffic.\n- **Effect:** Lower MED wins (when comparing routes from the same AS).\n- **Use case:** Tell a peer which of your links to prefer when sending traffic to you.\n\n> **Tip:** Use the panels below to explore what communities and attributes are actually present in the current RIB. Run `inject.py attributes` to load routes with varied communities and MED values.",
|
||
|
|
"mode": "markdown"
|
||
|
|
},
|
||
|
|
"title": "BGP Attribute Reference \u2014 Communities, Local-Pref, MED",
|
||
|
|
"type": "text"
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"datasource": {
|
||
|
|
"type": "postgres",
|
||
|
|
"uid": "obmp_postgres"
|
||
|
|
},
|
||
|
|
"description": "Learn: Each row is a unique community string (format ASN:value) seen across all active routes. High route counts for a community mean many routes share that policy tag. Look for well-known communities: 65535:0 (NO_EXPORT), 65535:1 (NO_ADVERTISE), 65535:666 (BLACKHOLE).",
|
||
|
|
"fieldConfig": {
|
||
|
|
"defaults": {
|
||
|
|
"color": {
|
||
|
|
"mode": "thresholds"
|
||
|
|
},
|
||
|
|
"custom": {
|
||
|
|
"align": "auto",
|
||
|
|
"displayMode": "auto"
|
||
|
|
},
|
||
|
|
"thresholds": {
|
||
|
|
"mode": "absolute",
|
||
|
|
"steps": [
|
||
|
|
{
|
||
|
|
"color": "green",
|
||
|
|
"value": null
|
||
|
|
}
|
||
|
|
]
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"overrides": [
|
||
|
|
{
|
||
|
|
"matcher": {
|
||
|
|
"id": "byName",
|
||
|
|
"options": "Routes Tagged"
|
||
|
|
},
|
||
|
|
"properties": [
|
||
|
|
{
|
||
|
|
"id": "custom.displayMode",
|
||
|
|
"value": "lcd-gauge"
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"id": "color",
|
||
|
|
"value": {
|
||
|
|
"mode": "thresholds"
|
||
|
|
}
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"id": "thresholds",
|
||
|
|
"value": {
|
||
|
|
"mode": "absolute",
|
||
|
|
"steps": [
|
||
|
|
{
|
||
|
|
"color": "blue",
|
||
|
|
"value": null
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"color": "green",
|
||
|
|
"value": 10
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"color": "yellow",
|
||
|
|
"value": 100
|
||
|
|
}
|
||
|
|
]
|
||
|
|
}
|
||
|
|
}
|
||
|
|
]
|
||
|
|
}
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"gridPos": {
|
||
|
|
"h": 11,
|
||
|
|
"w": 12,
|
||
|
|
"x": 0,
|
||
|
|
"y": 8
|
||
|
|
},
|
||
|
|
"id": 2,
|
||
|
|
"options": {
|
||
|
|
"footer": {
|
||
|
|
"fields": "",
|
||
|
|
"reducer": [
|
||
|
|
"sum"
|
||
|
|
],
|
||
|
|
"show": false
|
||
|
|
},
|
||
|
|
"showHeader": true,
|
||
|
|
"sortBy": [
|
||
|
|
{
|
||
|
|
"desc": true,
|
||
|
|
"displayName": "Routes Tagged"
|
||
|
|
}
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"targets": [
|
||
|
|
{
|
||
|
|
"datasource": {
|
||
|
|
"type": "postgres",
|
||
|
|
"uid": "obmp_postgres"
|
||
|
|
},
|
||
|
|
"format": "table",
|
||
|
|
"rawSql": "SELECT\n comm AS \"Community\",\n COUNT(*) AS \"Routes Tagged\"\nFROM base_attrs ba\nJOIN ip_rib r ON r.base_attr_hash_id = ba.hash_id\nCROSS JOIN LATERAL unnest(ba.community_list) AS comm\nWHERE r.iswithdrawn = false AND ba.community_list IS NOT NULL\nGROUP BY comm\nORDER BY COUNT(*) DESC\nLIMIT 30",
|
||
|
|
"refId": "A"
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"title": "Top BGP Communities in Current RIB",
|
||
|
|
"type": "table"
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"datasource": {
|
||
|
|
"type": "postgres",
|
||
|
|
"uid": "obmp_postgres"
|
||
|
|
},
|
||
|
|
"description": "Learn: Routes with notable BGP attributes \u2014 tagged with communities or using non-default local-pref / MED values. These routes carry explicit policy information. Examine the Communities column for operator-defined tags and the Local Pref column to see traffic engineering decisions.",
|
||
|
|
"fieldConfig": {
|
||
|
|
"defaults": {
|
||
|
|
"color": {
|
||
|
|
"mode": "thresholds"
|
||
|
|
},
|
||
|
|
"custom": {
|
||
|
|
"align": "auto",
|
||
|
|
"displayMode": "auto"
|
||
|
|
},
|
||
|
|
"thresholds": {
|
||
|
|
"mode": "absolute",
|
||
|
|
"steps": [
|
||
|
|
{
|
||
|
|
"color": "green",
|
||
|
|
"value": null
|
||
|
|
}
|
||
|
|
]
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"overrides": [
|
||
|
|
{
|
||
|
|
"matcher": {
|
||
|
|
"id": "byName",
|
||
|
|
"options": "Local Pref"
|
||
|
|
},
|
||
|
|
"properties": [
|
||
|
|
{
|
||
|
|
"id": "custom.displayMode",
|
||
|
|
"value": "color-text"
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"id": "color",
|
||
|
|
"value": {
|
||
|
|
"mode": "thresholds"
|
||
|
|
}
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"id": "thresholds",
|
||
|
|
"value": {
|
||
|
|
"mode": "absolute",
|
||
|
|
"steps": [
|
||
|
|
{
|
||
|
|
"color": "green",
|
||
|
|
"value": null
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"color": "yellow",
|
||
|
|
"value": 101
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"color": "red",
|
||
|
|
"value": 200
|
||
|
|
}
|
||
|
|
]
|
||
|
|
}
|
||
|
|
}
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"matcher": {
|
||
|
|
"id": "byName",
|
||
|
|
"options": "MED"
|
||
|
|
},
|
||
|
|
"properties": [
|
||
|
|
{
|
||
|
|
"id": "custom.displayMode",
|
||
|
|
"value": "color-text"
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"id": "color",
|
||
|
|
"value": {
|
||
|
|
"mode": "thresholds"
|
||
|
|
}
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"id": "thresholds",
|
||
|
|
"value": {
|
||
|
|
"mode": "absolute",
|
||
|
|
"steps": [
|
||
|
|
{
|
||
|
|
"color": "green",
|
||
|
|
"value": null
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"color": "yellow",
|
||
|
|
"value": 100
|
||
|
|
}
|
||
|
|
]
|
||
|
|
}
|
||
|
|
}
|
||
|
|
]
|
||
|
|
}
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"gridPos": {
|
||
|
|
"h": 11,
|
||
|
|
"w": 12,
|
||
|
|
"x": 12,
|
||
|
|
"y": 8
|
||
|
|
},
|
||
|
|
"id": 3,
|
||
|
|
"options": {
|
||
|
|
"footer": {
|
||
|
|
"fields": "",
|
||
|
|
"reducer": [
|
||
|
|
"sum"
|
||
|
|
],
|
||
|
|
"show": false
|
||
|
|
},
|
||
|
|
"showHeader": true
|
||
|
|
},
|
||
|
|
"targets": [
|
||
|
|
{
|
||
|
|
"datasource": {
|
||
|
|
"type": "postgres",
|
||
|
|
"uid": "obmp_postgres"
|
||
|
|
},
|
||
|
|
"format": "table",
|
||
|
|
"rawSql": "SELECT\n r.prefix::text AS \"Prefix\",\n ba.origin_as AS \"Origin AS\",\n ba.community_list::text AS \"Communities\",\n ba.local_pref AS \"Local Pref\",\n ba.med AS \"MED\",\n ba.as_path_count AS \"Path Length\"\nFROM base_attrs ba\nJOIN ip_rib r ON r.base_attr_hash_id = ba.hash_id\nWHERE r.iswithdrawn = false AND r.isipv4 = true\n AND (ba.community_list IS NOT NULL OR ba.med IS NOT NULL OR ba.local_pref IS NOT NULL)\nORDER BY r.prefix\nLIMIT 100",
|
||
|
|
"refId": "A"
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"title": "Routes with Notable Attributes",
|
||
|
|
"type": "table"
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"datasource": {
|
||
|
|
"type": "postgres",
|
||
|
|
"uid": "obmp_postgres"
|
||
|
|
},
|
||
|
|
"description": "Learn: MED (Multi-Exit Discriminator) is used to influence inbound traffic from a directly connected AS. Lower MED is preferred. If most routes show 'Not Set', MED is not being used for traffic engineering. A single dominant MED value means a simple policy; many different values indicate fine-grained control.",
|
||
|
|
"fieldConfig": {
|
||
|
|
"defaults": {
|
||
|
|
"color": {
|
||
|
|
"mode": "palette-classic"
|
||
|
|
},
|
||
|
|
"custom": {
|
||
|
|
"fillOpacity": 80,
|
||
|
|
"lineWidth": 0
|
||
|
|
},
|
||
|
|
"unit": "short"
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"gridPos": {
|
||
|
|
"h": 9,
|
||
|
|
"w": 12,
|
||
|
|
"x": 0,
|
||
|
|
"y": 19
|
||
|
|
},
|
||
|
|
"id": 4,
|
||
|
|
"options": {
|
||
|
|
"barRadius": 0.1,
|
||
|
|
"barWidth": 0.6,
|
||
|
|
"groupWidth": 0.7,
|
||
|
|
"legend": {
|
||
|
|
"displayMode": "list",
|
||
|
|
"placement": "bottom"
|
||
|
|
},
|
||
|
|
"orientation": "auto",
|
||
|
|
"text": {},
|
||
|
|
"tooltip": {
|
||
|
|
"mode": "single"
|
||
|
|
},
|
||
|
|
"xTickLabelRotation": -30,
|
||
|
|
"xTickLabelSpacing": 100
|
||
|
|
},
|
||
|
|
"targets": [
|
||
|
|
{
|
||
|
|
"datasource": {
|
||
|
|
"type": "postgres",
|
||
|
|
"uid": "obmp_postgres"
|
||
|
|
},
|
||
|
|
"format": "table",
|
||
|
|
"rawSql": "SELECT\n COALESCE(ba.med::text, 'Not Set') AS \"MED Value\",\n COUNT(*) AS \"Route Count\"\nFROM base_attrs ba\nJOIN ip_rib r ON r.base_attr_hash_id = ba.hash_id\nWHERE r.iswithdrawn = false AND r.isipv4 = true\nGROUP BY ba.med\nORDER BY ba.med NULLS LAST\nLIMIT 20",
|
||
|
|
"refId": "A"
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"title": "MED Value Distribution",
|
||
|
|
"type": "barchart"
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"datasource": {
|
||
|
|
"type": "postgres",
|
||
|
|
"uid": "obmp_postgres"
|
||
|
|
},
|
||
|
|
"description": "Learn: Local preference is an iBGP attribute \u2014 it never crosses AS boundaries. Default is 100. Routes with local-pref above 100 are preferred over the default path; below 100 they are used as last-resort. Non-100 values indicate active traffic-engineering policy. Run 'inject.py attributes' to inject routes with varied local-pref values.",
|
||
|
|
"fieldConfig": {
|
||
|
|
"defaults": {
|
||
|
|
"color": {
|
||
|
|
"mode": "palette-classic"
|
||
|
|
},
|
||
|
|
"custom": {
|
||
|
|
"fillOpacity": 80,
|
||
|
|
"lineWidth": 0
|
||
|
|
},
|
||
|
|
"unit": "short"
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"gridPos": {
|
||
|
|
"h": 9,
|
||
|
|
"w": 12,
|
||
|
|
"x": 12,
|
||
|
|
"y": 19
|
||
|
|
},
|
||
|
|
"id": 5,
|
||
|
|
"options": {
|
||
|
|
"barRadius": 0.1,
|
||
|
|
"barWidth": 0.6,
|
||
|
|
"groupWidth": 0.7,
|
||
|
|
"legend": {
|
||
|
|
"displayMode": "list",
|
||
|
|
"placement": "bottom"
|
||
|
|
},
|
||
|
|
"orientation": "auto",
|
||
|
|
"text": {},
|
||
|
|
"tooltip": {
|
||
|
|
"mode": "single"
|
||
|
|
},
|
||
|
|
"xTickLabelRotation": -30,
|
||
|
|
"xTickLabelSpacing": 100
|
||
|
|
},
|
||
|
|
"targets": [
|
||
|
|
{
|
||
|
|
"datasource": {
|
||
|
|
"type": "postgres",
|
||
|
|
"uid": "obmp_postgres"
|
||
|
|
},
|
||
|
|
"format": "table",
|
||
|
|
"rawSql": "SELECT\n COALESCE(ba.local_pref::text, 'Not Set') AS \"Local Pref\",\n COUNT(*) AS \"Route Count\"\nFROM base_attrs ba\nJOIN ip_rib r ON r.base_attr_hash_id = ba.hash_id\nWHERE r.iswithdrawn = false AND r.isipv4 = true\nGROUP BY ba.local_pref\nORDER BY ba.local_pref DESC NULLS LAST\nLIMIT 20",
|
||
|
|
"refId": "A"
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"title": "Local Preference Value Distribution",
|
||
|
|
"type": "barchart"
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"datasource": {
|
||
|
|
"type": "postgres",
|
||
|
|
"uid": "obmp_postgres"
|
||
|
|
},
|
||
|
|
"description": "Learn: This count tells you how widely BGP communities are used in your network. A value of 0 means no community tagging \u2014 communities are an opt-in feature. Run 'inject.py attributes' to add routes with community strings.",
|
||
|
|
"fieldConfig": {
|
||
|
|
"defaults": {
|
||
|
|
"color": {
|
||
|
|
"mode": "thresholds"
|
||
|
|
},
|
||
|
|
"thresholds": {
|
||
|
|
"mode": "absolute",
|
||
|
|
"steps": [
|
||
|
|
{
|
||
|
|
"color": "blue",
|
||
|
|
"value": null
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"color": "green",
|
||
|
|
"value": 1
|
||
|
|
}
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"unit": "short",
|
||
|
|
"mappings": []
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"gridPos": {
|
||
|
|
"h": 5,
|
||
|
|
"w": 8,
|
||
|
|
"x": 0,
|
||
|
|
"y": 28
|
||
|
|
},
|
||
|
|
"id": 6,
|
||
|
|
"options": {
|
||
|
|
"colorMode": "background",
|
||
|
|
"graphMode": "none",
|
||
|
|
"justifyMode": "auto",
|
||
|
|
"orientation": "auto",
|
||
|
|
"reduceOptions": {
|
||
|
|
"calcs": [
|
||
|
|
"lastNotNull"
|
||
|
|
],
|
||
|
|
"fields": "",
|
||
|
|
"values": false
|
||
|
|
},
|
||
|
|
"text": {}
|
||
|
|
},
|
||
|
|
"targets": [
|
||
|
|
{
|
||
|
|
"datasource": {
|
||
|
|
"type": "postgres",
|
||
|
|
"uid": "obmp_postgres"
|
||
|
|
},
|
||
|
|
"format": "time_series",
|
||
|
|
"rawSql": "SELECT NOW() as time, COUNT(*) AS \"Routes with Communities\"\nFROM base_attrs ba\nJOIN ip_rib r ON r.base_attr_hash_id = ba.hash_id\nWHERE r.iswithdrawn = false\n AND ba.community_list IS NOT NULL\n AND array_length(ba.community_list, 1) > 0",
|
||
|
|
"refId": "A"
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"title": "Routes with Communities",
|
||
|
|
"type": "stat"
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"datasource": {
|
||
|
|
"type": "postgres",
|
||
|
|
"uid": "obmp_postgres"
|
||
|
|
},
|
||
|
|
"description": "Learn: The number of distinct community strings seen across all active routes. A diverse set indicates fine-grained policy tagging. A single value means one uniform policy tag is applied.",
|
||
|
|
"fieldConfig": {
|
||
|
|
"defaults": {
|
||
|
|
"color": {
|
||
|
|
"mode": "thresholds"
|
||
|
|
},
|
||
|
|
"thresholds": {
|
||
|
|
"mode": "absolute",
|
||
|
|
"steps": [
|
||
|
|
{
|
||
|
|
"color": "blue",
|
||
|
|
"value": null
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"color": "green",
|
||
|
|
"value": 1
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"color": "yellow",
|
||
|
|
"value": 50
|
||
|
|
}
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"unit": "short",
|
||
|
|
"mappings": []
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"gridPos": {
|
||
|
|
"h": 5,
|
||
|
|
"w": 8,
|
||
|
|
"x": 8,
|
||
|
|
"y": 28
|
||
|
|
},
|
||
|
|
"id": 7,
|
||
|
|
"options": {
|
||
|
|
"colorMode": "background",
|
||
|
|
"graphMode": "none",
|
||
|
|
"justifyMode": "auto",
|
||
|
|
"orientation": "auto",
|
||
|
|
"reduceOptions": {
|
||
|
|
"calcs": [
|
||
|
|
"lastNotNull"
|
||
|
|
],
|
||
|
|
"fields": "",
|
||
|
|
"values": false
|
||
|
|
},
|
||
|
|
"text": {}
|
||
|
|
},
|
||
|
|
"targets": [
|
||
|
|
{
|
||
|
|
"datasource": {
|
||
|
|
"type": "postgres",
|
||
|
|
"uid": "obmp_postgres"
|
||
|
|
},
|
||
|
|
"format": "time_series",
|
||
|
|
"rawSql": "SELECT NOW() as time, COUNT(DISTINCT comm) AS \"Unique Communities\"\nFROM base_attrs ba\nJOIN ip_rib r ON r.base_attr_hash_id = ba.hash_id\nCROSS JOIN LATERAL unnest(ba.community_list) AS comm\nWHERE r.iswithdrawn = false",
|
||
|
|
"refId": "A"
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"title": "Unique Community Values",
|
||
|
|
"type": "stat"
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"datasource": {
|
||
|
|
"type": "postgres",
|
||
|
|
"uid": "obmp_postgres"
|
||
|
|
},
|
||
|
|
"description": "Learn: Routes with a local-pref other than the default (100) have been explicitly policy-engineered. A high count here means your network actively uses local-pref to prefer specific paths. A value of 0 means all paths are at default preference.",
|
||
|
|
"fieldConfig": {
|
||
|
|
"defaults": {
|
||
|
|
"color": {
|
||
|
|
"mode": "thresholds"
|
||
|
|
},
|
||
|
|
"thresholds": {
|
||
|
|
"mode": "absolute",
|
||
|
|
"steps": [
|
||
|
|
{
|
||
|
|
"color": "green",
|
||
|
|
"value": null
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"color": "yellow",
|
||
|
|
"value": 100
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"color": "red",
|
||
|
|
"value": 1000
|
||
|
|
}
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"unit": "short",
|
||
|
|
"mappings": []
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"gridPos": {
|
||
|
|
"h": 5,
|
||
|
|
"w": 8,
|
||
|
|
"x": 16,
|
||
|
|
"y": 28
|
||
|
|
},
|
||
|
|
"id": 8,
|
||
|
|
"options": {
|
||
|
|
"colorMode": "background",
|
||
|
|
"graphMode": "none",
|
||
|
|
"justifyMode": "auto",
|
||
|
|
"orientation": "auto",
|
||
|
|
"reduceOptions": {
|
||
|
|
"calcs": [
|
||
|
|
"lastNotNull"
|
||
|
|
],
|
||
|
|
"fields": "",
|
||
|
|
"values": false
|
||
|
|
},
|
||
|
|
"text": {}
|
||
|
|
},
|
||
|
|
"targets": [
|
||
|
|
{
|
||
|
|
"datasource": {
|
||
|
|
"type": "postgres",
|
||
|
|
"uid": "obmp_postgres"
|
||
|
|
},
|
||
|
|
"format": "time_series",
|
||
|
|
"rawSql": "SELECT NOW() as time, COUNT(*) AS \"Custom Local-Pref Routes\"\nFROM base_attrs ba\nJOIN ip_rib r ON r.base_attr_hash_id = ba.hash_id\nWHERE r.iswithdrawn = false\n AND ba.local_pref IS NOT NULL\n AND ba.local_pref != 100",
|
||
|
|
"refId": "A"
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"title": "Routes with Non-Default Local-Pref",
|
||
|
|
"type": "stat"
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"schemaVersion": 36,
|
||
|
|
"style": "dark",
|
||
|
|
"tags": [
|
||
|
|
"obmp",
|
||
|
|
"bgp",
|
||
|
|
"communities",
|
||
|
|
"attributes",
|
||
|
|
"policy",
|
||
|
|
"obmp-nav"
|
||
|
|
],
|
||
|
|
"time": {
|
||
|
|
"from": "now-1h",
|
||
|
|
"to": "now"
|
||
|
|
},
|
||
|
|
"timepicker": {},
|
||
|
|
"timezone": "browser",
|
||
|
|
"title": "BGP Attribute Explorer",
|
||
|
|
"uid": "obmp-learn-06",
|
||
|
|
"version": 1
|
||
|
|
}
|