diff --git a/.devcontainer/gnmic-prometheus-grafana/devcontainer.json b/.devcontainer/gnmic-prometheus-grafana/devcontainer.json new file mode 100644 index 0000000..22ca171 --- /dev/null +++ b/.devcontainer/gnmic-prometheus-grafana/devcontainer.json @@ -0,0 +1,25 @@ +{ + "image": "ghcr.io/aristanetworks/aclabs/lab-base:python3.11-avd-v4.10.2-clab0.57.5-rev1.0", + // containerEnv set the variables applied to entire container + "containerEnv": { + "ARISTA_TOKEN": "${localEnv:ARTOKEN}", + "CONTAINERWSF": "${containerWorkspaceFolder}", + "GITHUB_REPOSITORY": "aristanetworks/aclabs", + "CEOS_LAB_VERSION": "4.32.2.1F" + }, + "secrets": { + "ARTOKEN": { + "description": "token to auto-download EOS images from arista.com." + // "documentationUrl": "https://example.com/link/to/info" + } + }, + "hostRequirements": { + "cpus": 8, + "memory": "32gb", + "storage": "48gb" + }, + "postCreateCommand": "postCreate.sh; make start; make inspect", + "workspaceMount": "source=${localWorkspaceFolder}/labs/${containerWorkspaceFolder},target=/${containerWorkspaceFolder},type=bind", + "workspaceFolder": "/gnmic-prometheus-grafana", + "forwardPorts": [3001, 9090] +} \ No newline at end of file diff --git a/docs/assets/img/aclabs-telemetryA-grafana-ex1.png b/docs/assets/img/aclabs-telemetryA-grafana-ex1.png new file mode 100644 index 0000000..1fa99da Binary files /dev/null and b/docs/assets/img/aclabs-telemetryA-grafana-ex1.png differ diff --git a/docs/assets/img/aclabs-telemetryA-grafana-ex2.png b/docs/assets/img/aclabs-telemetryA-grafana-ex2.png new file mode 100644 index 0000000..0f23358 Binary files /dev/null and b/docs/assets/img/aclabs-telemetryA-grafana-ex2.png differ diff --git a/docs/assets/img/aclabs-telemetryA-grafana-ex3.png b/docs/assets/img/aclabs-telemetryA-grafana-ex3.png new file mode 100644 index 0000000..76d143a Binary files /dev/null and b/docs/assets/img/aclabs-telemetryA-grafana-ex3.png differ diff --git a/docs/assets/img/aclabs-telemetryA-grafana-ex4.png b/docs/assets/img/aclabs-telemetryA-grafana-ex4.png new file mode 100644 index 0000000..704933b Binary files /dev/null and b/docs/assets/img/aclabs-telemetryA-grafana-ex4.png differ diff --git a/docs/assets/img/aclabs-telemetrylab-A.png b/docs/assets/img/aclabs-telemetrylab-A.png new file mode 100644 index 0000000..00820a0 Binary files /dev/null and b/docs/assets/img/aclabs-telemetrylab-A.png differ diff --git a/docs/assets/img/ceos-download.png b/docs/assets/img/ceos-download.png new file mode 100644 index 0000000..7f79cfb Binary files /dev/null and b/docs/assets/img/ceos-download.png differ diff --git a/docs/assets/img/codespace-grafana.png b/docs/assets/img/codespace-grafana.png new file mode 100644 index 0000000..f0c920e Binary files /dev/null and b/docs/assets/img/codespace-grafana.png differ diff --git a/docs/assets/img/devcontainer-build.png b/docs/assets/img/devcontainer-build.png new file mode 100644 index 0000000..82812d9 Binary files /dev/null and b/docs/assets/img/devcontainer-build.png differ diff --git a/docs/assets/img/devcontainer.png b/docs/assets/img/devcontainer.png new file mode 100644 index 0000000..fbc8104 Binary files /dev/null and b/docs/assets/img/devcontainer.png differ diff --git a/docs/telemetry.md b/docs/telemetry.md new file mode 100644 index 0000000..81a38c0 --- /dev/null +++ b/docs/telemetry.md @@ -0,0 +1,187 @@ +# Telemetry labs + + +???+ info "How to run this lab?" + + Please read the [Quickstart guide](https://aclabs.arista.com/quickstart/)! + + +## gNMIc Prometheus Grafana Lab + +### Lab Topology + +![lab topology](assets/img/aclabs-telemetrylab-A.png) + +### Demo Details + +!!! Warning "Container Requirements" + + CPUs: 8 + Memory: 32 GB + Storage: 48 GB + +### Run it in Codespaces + +[Start :octicons-play-16: gNMIc-Prometheus-Grafana Lab :octicons-mark-github-24:](https://codespaces.new/aristanetworks/aclabs/tree/main?quickstart=1&devcontainer_path=.devcontainer%2Fgnmic-prometheus-grafana%2Fdevcontainer.json){ .md-button .md-button--primary target=_blank} + +!!! Note + + The ARTOKEN variable should be set for the scripts to be able to download the cEOS-lab image. Please set this before clicking on `Create new codespace` as mentioned in the [Quickstart](quickstart.md#starting-the-lab) + +Once the web based vscode starts the containerlab topology should be automatically deployed via the `postCreate.sh` script, and once the grafana container is ready, Codespaces will send a notification and reveal the `Open in Browser` button. + +![codespace-grafana](assets/img/codespace-grafana.png) + +To access Grafana use the `arista/arista` credentials. + +To add configurations to the switches, such as configuring EVPN, we can use AVD for instance (This will be needed for the L3 Telemetry dashboard): + + ```bash + ansible-playbook playbooks/fabric-deploy-config.yaml -i inventory.yaml + ``` + +### How To Run The Lab on Your Machine + +It is possible to run the lab on your local machine (or any server) instead of using Github Codespaces. +However you must take care of you VSCode setup and setting up environment variables. Also keep in mind that auto-downloaded image will not work on ARM-based MacBooks (yet). + + +0. SSH to your server and make sure docker and git are installed and the env vars are set (see [Appendix](#Appendix) section). + +1. git clone the project + + ```bash + git clone https://github.com/aristanetworks/aclabs.git + ``` + +2. Open the project directory in vscode + + ```bash + cd aclabs + code . + ``` + + or if you started VScode manually, then make sure to load only the workspace directory of the cloned repo, + ie `aclabs` folder in this case, otherwise devcontainer container build process will get stuck in deployment phase. + +3. Select the `devcontainer.json` file + + ![devcontainer](assets/img/devcontainer.png) + +4. Bring up the command pallette in vscode e.g. by pressing `CTRL+SHIFT+P` and select or search for `Dev Containers: Reopen in Container` or `Dev Containers: Rebuild and Reopen in Container` + + ![devconatiner build](assets/img/devcontainer-build.png) + +5. Deploy containerlab topology + + ```bash + make start + ``` + + !!! Tip + + If any of the image downloads timeout you may try rerunning the `make start` command. + + If everything goes well you should see something like below at the end: + + ```bash + +----+--------------------+--------------+--------------------------------------------------+-------+---------+--------------------+--------------+ + | # | Name | Container ID | Image | Kind | State | IPv4 Address | IPv6 Address | + +----+--------------------+--------------+--------------------------------------------------+-------+---------+--------------------+--------------+ + | 1 | clab-om-client1 | 9e0305c8a828 | ghcr.io/aristanetworks/aclabs/host-ubuntu:rev1.0 | linux | running | 172.144.100.8/24 | N/A | + | 2 | clab-om-client2 | 52cf2aef8ebe | ghcr.io/aristanetworks/aclabs/host-ubuntu:rev1.0 | linux | running | 172.144.100.9/24 | N/A | + | 3 | clab-om-client3 | c0b50717f247 | ghcr.io/aristanetworks/aclabs/host-ubuntu:rev1.0 | linux | running | 172.144.100.10/24 | N/A | + | 4 | clab-om-client4 | 14e93f835555 | ghcr.io/aristanetworks/aclabs/host-ubuntu:rev1.0 | linux | running | 172.144.100.11/24 | N/A | + | 5 | clab-om-gnmic | b61e380ef683 | ghcr.io/openconfig/gnmic:0.38.2 | linux | running | 172.144.100.200/24 | N/A | + | 6 | clab-om-grafana | c63aa0b25582 | grafana/grafana:11.2.0 | linux | running | 172.144.100.220/24 | N/A | + | 7 | clab-om-om-pe11 | 5140b4c79e6d | arista/ceos:4.32.2.1F | ceos | running | 172.144.100.4/24 | N/A | + | 8 | clab-om-om-pe12 | 0457268e8a1b | arista/ceos:4.32.2.1F | ceos | running | 172.144.100.5/24 | N/A | + | 9 | clab-om-om-pe21 | e4ddbd8f052c | arista/ceos:4.32.2.1F | ceos | running | 172.144.100.6/24 | N/A | + | 10 | clab-om-om-pe22 | db67714e6e6c | arista/ceos:4.32.2.1F | ceos | running | 172.144.100.7/24 | N/A | + | 11 | clab-om-om-spine1 | fbe81fcf3207 | arista/ceos:4.32.2.1F | ceos | running | 172.144.100.2/24 | N/A | + | 12 | clab-om-om-spine2 | 4880915b2d8c | arista/ceos:4.32.2.1F | ceos | running | 172.144.100.3/24 | N/A | + | 13 | clab-om-prometheus | 6b205dbcdfcb | prom/prometheus:v2.54.1 | linux | running | 172.144.100.210/24 | N/A | + +----+--------------------+--------------+--------------------------------------------------+-------+---------+--------------------+--------------+ + ``` + +6. Access Grafana on your laptop by going to [localhost:3001](http://localhost:3001) (arista/arista) + + ![grafana1](assets/img/aclabs-telemetryA-grafana-ex1.png) + + ![grafana2](assets/img/aclabs-telemetryA-grafana-ex2.png) + + ![grafana3](assets/img/aclabs-telemetryA-grafana-ex3.png) + +7. To add configurations to the switches, such as configuring EVPN, we can use AVD for instance: + + ```bash + ansible-playbook playbooks/fabric-deploy-config.yaml -i inventory.yaml + ``` + + After that the L3 Telemetry dashboard should populate as well: + + ![grafana4](assets/img/aclabs-telemetryA-grafana-ex4.png) + +### Lab details + +Looking at the [gnmic.yml file](../labs/gnmic-prometheus-grafana/clab/gnmic.yml) we can see that we're going to use `gnmic` to subscribe to several OpenConfig and EOS native paths +and write the data into Prometheus either in their raw states or modifying them +with [processors](https://gnmic.openconfig.net/user_guide/event_processors/intro/), which +are needed due to Prometheus only accepting numerical values. + +For additional paths please check the [EOS Path report](https://www.arista.com/en/support/toi/path-support). + +## Appendix + +### Configure environment variables + +Add the env vars to your `~/.bashrc` or `~/.zshrc` + +```shell +export ARTOKEN="INSERT arista.com token" +export GITHUB_REPOSITORY="aristanetworks/aclabs" +``` + +`ARTOKEN` is needed so that the cEOS-lab image can be auto-downloaded from arista.com. This can be generated from the [My Profile](https://www.arista.com/en/users/profile) + page. + +### Setup Docker on the Host + +> Check if Docker is already installed. In this case you can skip the steps below. + +1. Install Docker on the host. The detailed instructions are available [here](https://docs.docker.com/engine/install/ubuntu/). You can used one-liner script for that. +2. Add your user to the `docker` group. +3. Logout and login again to apply the changes. +4. Check the Docker version and run `hello-world` container to test functionality. +5. You must be able to run `docker` commands without `sudo` if it was installed correctly. + +```bash +# install Docker +sudo curl -fsSL https://get.docker.com | sh +# add user to the docker group +sudo usermod -aG docker ${USER} +# test docker +docker --version +docker run hello-world +``` + +> **NOTE**: If you are running this workshop in Codespace or provided dev container, Docker is pre-installed. As the workshop magic happens inside a container in this case, we rely on Docker-in-Docker concept to provide required functionality. + +### Setup Git (Optional) + +- Git must be pre-installed on a Linux system. Otherwise you are in a wrong place. Escape! 👾 🚀 +- Setup your name and email address: + + ```bash + git config --global user.name "" + git config --global user.email "" + ``` + +- Check the current configuration: + + ```bash + git config --list + ``` + +> **NOTE**: On Codespace Git is pre-installed and pre-configured. + diff --git a/labs/gnmic-prometheus-grafana/Makefile b/labs/gnmic-prometheus-grafana/Makefile new file mode 100644 index 0000000..97b6cf5 --- /dev/null +++ b/labs/gnmic-prometheus-grafana/Makefile @@ -0,0 +1,20 @@ +CURRENT_DIR := $(shell pwd) + +.PHONY: help +help: ## Display help message + @grep -E '^[0-9a-zA-Z_-]+\.*[0-9a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' + +.PHONY: start +start: ## Deploy ceos lab + sudo containerlab deploy --debug --topo $(CURRENT_DIR)/clab/topology.clab.yml --max-workers 10 --timeout 5m --reconfigure + +.PHONY: stop +stop: ## Destroy ceos lab + sudo containerlab destroy --debug --topo $(CURRENT_DIR)/clab/topology.clab.yml --cleanup + +.PHONY: inspect +inspect: ## Inspect ceos lab + @sudo containerlab inspect --topo $(CURRENT_DIR)/clab/topology.clab.yml + @echo "" + @echo "You can check the lab status, hostnames and management addresses above." + @echo "To connect to a lab device use \`ssh admin@\` and password \`admin\`." diff --git a/labs/gnmic-prometheus-grafana/ansible.cfg b/labs/gnmic-prometheus-grafana/ansible.cfg new file mode 100644 index 0000000..eadb4c0 --- /dev/null +++ b/labs/gnmic-prometheus-grafana/ansible.cfg @@ -0,0 +1,3 @@ +[defaults] +inventory = inventory.yml +jinja2_extensions = jinja2.ext.loopcontrols,jinja2.ext.do,jinja2.ext.i18n \ No newline at end of file diff --git a/labs/gnmic-prometheus-grafana/clab/ceos.cfg.tpl b/labs/gnmic-prometheus-grafana/clab/ceos.cfg.tpl new file mode 100644 index 0000000..0dd2c9f --- /dev/null +++ b/labs/gnmic-prometheus-grafana/clab/ceos.cfg.tpl @@ -0,0 +1,41 @@ +hostname {{ .ShortName }} +username admin privilege 15 secret admin +! +service routing protocols model multi-agent +! +vrf instance MGMT +! +interface Management0 + description oob_management + vrf MGMT +{{ if .MgmtIPv4Address }} ip address {{ .MgmtIPv4Address }}/{{ .MgmtIPv4PrefixLength }}{{end}} +{{ if .MgmtIPv6Address }} ipv6 address {{ .MgmtIPv6Address }}/{{ .MgmtIPv6PrefixLength }}{{end}} +! +{{ if .MgmtIPv4Gateway }}ip route vrf MGMT 0.0.0.0/0 {{ .MgmtIPv4Gateway }}{{end}} +{{ if .MgmtIPv6Gateway }}ipv6 route vrf MGMT ::0/0 {{ .MgmtIPv6Gateway }}{{end}} + no lldp receive + no lldp transmit +! +management security + ssl profile eAPI + cipher-list HIGH:!eNULL:!aNULL:!MD5:!ADH:!ANULL + certificate eAPI.crt key eAPI.key +! +management api http-commands + protocol https ssl profile eAPI + no shutdown + ! + vrf MGMT + no shutdown +! +management api gnmi + transport grpc default + notification timestamp send-time + no shutdown + transport grpc MGMT + vrf MGMT + notification timestamp send-time + no shutdown + provider eos-native +! +end \ No newline at end of file diff --git a/labs/gnmic-prometheus-grafana/clab/gnmic.yml b/labs/gnmic-prometheus-grafana/clab/gnmic.yml new file mode 100644 index 0000000..996bee4 --- /dev/null +++ b/labs/gnmic-prometheus-grafana/clab/gnmic.yml @@ -0,0 +1,163 @@ +username: admin +password: admin +port: 6030 +timeout: 10s +skip-verify: true +encoding: json_ietf +#debug: true + +targets: + om-spine1: + insecure: true + om-spine2: + insecure: true + om-pe11: + insecure: true + om-pe12: + insecure: true + om-pe21: + insecure: true + om-pe22: + insecure: true +subscriptions: + bgp_neighbors: + paths: + - /network-instances/network-instance[name=default]/protocols/protocol[name=BGP]/bgp/neighbors + mode: stream + stream-mode: sample + sample-interval: 5s + + cpu: + paths: + - components/component/cpu + mode: stream + stream-mode: sample + sample-interval: 5s + + cpu_load_avg: + paths: + - eos_native:/Kernel/sysinfo + mode: stream + stream-mode: sample + sample-interval: 5s + + + memory: + paths: + - components/component/state/memory/ + - system/memory/kernel/state + - system/memory/state + + mode: stream + stream-mode: sample + sample-interval: 5s + + intf_ctrs: + paths: + - /interfaces/interface[name=*]/state/counters + mode: stream + stream-mode: sample + sample-interval: 5s + + intf_admin_state: + paths: + - /interfaces/interface[name=*]/state/admin-status + mode: stream + stream-mode: sample + sample-interval: 5s + + intf_oper_state: + paths: + - /interfaces/interface[name=*]/state/oper-status + mode: stream + stream-mode: sample + sample-interval: 5s + + intf_config: + paths: + - interfaces/interface/subinterfaces/subinterface/ipv4/addresses/address/config + mode: stream + stream-mode: sample + sample-interval: 5s + + show_ver: + paths: + - eos_native:/Eos/image + mode: stream + stream-mode: sample + sample-interval: 60s + + boot_time: + paths: + - system/state/boot-time + mode: stream + stream-mode: sample + sample-interval: 60s + + hardware: + paths: + - components/component/state + - eos_native:/Sysdb/hardware/entmib + mode: stream + stream-mode: sample + sample-interval: 60s + +outputs: + prom: + type: prometheus + listen: :9273 + path: /metrics + metric-prefix: gnmic + append-subscription-name: true + strings-as-labels: true + export-timestamps: true + debug: false + event-processors: + - trim-prefixes + - bounce-map + - eos-version + # - tag-status + #- set-timestamp-processor + # stdout: + # type: file + # file-type: stdout + # event-processors: + # - proc-convert-strings-to-int + # - trim-prefixes + +processors: + eos-version: + event-strings: + value-names: + - ".*version$" + - ".*arch$" + transforms: + - replace: + apply-on: "value" + old: "EOS" + new: "eos" + # event-to-tag: + # value-names: + # - ".*version$" + # - ".*arch$" + trim-prefixes: + event-strings: + value-names: + - ".*" + transforms: + - path-base: + apply-on: "name" + bounce-map: + event-strings: + value-names: + - oper-status + - admin-status + transforms: + - replace: + apply-on: "value" + old: "UP" + new: "1" + - replace: + apply-on: "value" + old: "DOWN" + new: "0" diff --git a/labs/gnmic-prometheus-grafana/clab/grafana/provisioning/dashboards/dashboards.yml b/labs/gnmic-prometheus-grafana/clab/grafana/provisioning/dashboards/dashboards.yml new file mode 100644 index 0000000..5118850 --- /dev/null +++ b/labs/gnmic-prometheus-grafana/clab/grafana/provisioning/dashboards/dashboards.yml @@ -0,0 +1,10 @@ +apiVersion: 1 + +providers: + - name: ArGNMI + type: file + updateIntervalSeconds: 10 + allowUiUpdates: false + options: + path: /etc/grafana/provisioning/dashboards + foldersFromFilesStructure: true diff --git a/labs/gnmic-prometheus-grafana/clab/grafana/provisioning/dashboards/device-overview.json b/labs/gnmic-prometheus-grafana/clab/grafana/provisioning/dashboards/device-overview.json new file mode 100644 index 0000000..e178ba9 --- /dev/null +++ b/labs/gnmic-prometheus-grafana/clab/grafana/provisioning/dashboards/device-overview.json @@ -0,0 +1,662 @@ +{ + "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": 4, + "links": [], + "panels": [ + { + "datasource": { + "default": false, + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "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 + } + ] + }, + "unit": "ns" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 20, + "x": 0, + "y": 0 + }, + "id": 1, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "disableTextWrap": false, + "editorMode": "builder", + "exemplar": false, + "expr": "(time() * 1000000000) - gnmic_boot_time_boot_time{job=\"gnmic\", source=\"$Device\"}", + "format": "table", + "fullMetaSearch": false, + "includeNullMetadata": true, + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "A", + "useBackend": false + }, + { + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "disableTextWrap": false, + "editorMode": "builder", + "exemplar": false, + "expr": "gnmic_intf_config_ip{source=\"$Device\", job=\"gnmic\", interface_name=\"Management0\"}", + "format": "table", + "fullMetaSearch": false, + "hide": false, + "includeNullMetadata": true, + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "B", + "useBackend": false + }, + { + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "disableTextWrap": false, + "editorMode": "builder", + "expr": "gnmic_show_ver_version{source=\"$Device\"}", + "format": "table", + "fullMetaSearch": false, + "hide": false, + "includeNullMetadata": true, + "instant": false, + "legendFormat": "__auto", + "range": true, + "refId": "C", + "useBackend": false + }, + { + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "disableTextWrap": false, + "editorMode": "builder", + "exemplar": false, + "expr": "gnmic_hardware_serial_no{source=\"$Device\"}", + "format": "table", + "fullMetaSearch": false, + "hide": false, + "includeNullMetadata": true, + "instant": true, + "legendFormat": "Serial Number", + "range": false, + "refId": "D", + "useBackend": false + }, + { + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "disableTextWrap": false, + "editorMode": "builder", + "exemplar": false, + "expr": "gnmic_hardware_part_no{source=\"$Device\"}", + "format": "table", + "fullMetaSearch": false, + "hide": false, + "includeNullMetadata": true, + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "E", + "useBackend": false + }, + { + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "disableTextWrap": false, + "editorMode": "builder", + "exemplar": false, + "expr": "gnmic_hardware_firmware_version{source=\"$Device\"}", + "format": "table", + "fullMetaSearch": false, + "hide": false, + "includeNullMetadata": true, + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "F", + "useBackend": false + }, + { + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "disableTextWrap": false, + "editorMode": "builder", + "exemplar": false, + "expr": "gnmic_hardware_systemMacAddr{source=\"$Device\"}", + "format": "table", + "fullMetaSearch": false, + "hide": false, + "includeNullMetadata": true, + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "G", + "useBackend": false + } + ], + "title": "System Details", + "transformations": [ + { + "id": "joinByField", + "options": { + "byField": "source", + "mode": "outer" + } + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Time 1": true, + "Time 2": true, + "Time 3": true, + "Time 4": true, + "Time 5": true, + "Time 6": true, + "Time 7": true, + "Value #A": false, + "Value #B": true, + "Value #C": true, + "Value #D": true, + "Value #E": true, + "Value #F": true, + "Value #G": true, + "__name__": true, + "__name__ 2": true, + "__name__ 3": true, + "__name__ 4": true, + "__name__ 5": true, + "__name__ 6": true, + "address_ip": true, + "component_name": true, + "component_name 2": true, + "component_name 3": true, + "instance 1": true, + "instance 2": true, + "instance 3": true, + "instance 4": true, + "instance 5": true, + "instance 6": true, + "instance 7": true, + "job 1": true, + "job 2": true, + "job 3": true, + "job 4": true, + "job 5": true, + "job 6": true, + "job 7": true, + "name": true, + "subinterface_index": true, + "subscription_name 1": true, + "subscription_name 2": true, + "subscription_name 3": true, + "subscription_name 4": true, + "subscription_name 5": true, + "subscription_name 6": true, + "subscription_name 7": true + }, + "includeByName": {}, + "indexByName": { + "Time 1": 2, + "Time 2": 7, + "Time 3": 17, + "Time 4": 24, + "Time 5": 33, + "Time 6": 41, + "Time 7": 48, + "Value #A": 6, + "Value #B": 16, + "Value #C": 23, + "Value #D": 32, + "Value #E": 40, + "Value #F": 47, + "Value #G": 53, + "__name__ 1": 8, + "__name__ 2": 18, + "__name__ 3": 25, + "__name__ 4": 34, + "__name__ 5": 42, + "__name__ 6": 49, + "address_ip": 9, + "component_name 1": 26, + "component_name 2": 35, + "component_name 3": 43, + "firmware_version": 38, + "instance 1": 3, + "instance 2": 10, + "instance 3": 19, + "instance 4": 27, + "instance 5": 36, + "instance 6": 44, + "instance 7": 50, + "interface_name": 11, + "ip": 12, + "job 1": 4, + "job 2": 13, + "job 3": 20, + "job 4": 28, + "job 5": 37, + "job 6": 45, + "job 7": 51, + "part_no": 1, + "serial_no": 29, + "source": 0, + "subinterface_index": 14, + "subscription_name 1": 5, + "subscription_name 2": 15, + "subscription_name 3": 21, + "subscription_name 4": 31, + "subscription_name 5": 39, + "subscription_name 6": 46, + "subscription_name 7": 52, + "systemMacAddr": 30, + "version": 22 + }, + "renameByName": { + "Value #A": "Uptime", + "Value #E": "", + "firmware_version": "Firmware Version", + "interface_name": "", + "ip": "Management IP", + "part_no": "Model", + "serial_no": "Serial Number", + "source": "Hostname", + "version": "Software Version" + } + } + } + ], + "type": "table" + }, + { + "datasource": { + "default": false, + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 10, + "x": 0, + "y": 4 + }, + "id": 4, + "options": { + "displayMode": "gradient", + "maxVizHeight": 300, + "minVizHeight": 16, + "minVizWidth": 8, + "namePlacement": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showUnfilled": true, + "sizing": "auto", + "valueMode": "color" + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "disableTextWrap": false, + "editorMode": "builder", + "expr": "gnmic_memory_active{source=\"$Device\"}", + "fullMetaSearch": false, + "includeNullMetadata": true, + "instant": false, + "legendFormat": "Active Memory", + "range": true, + "refId": "A", + "useBackend": false + }, + { + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "disableTextWrap": false, + "editorMode": "builder", + "expr": "gnmic_memory_free{source=\"$Device\"}", + "fullMetaSearch": false, + "hide": false, + "includeNullMetadata": true, + "instant": false, + "legendFormat": "Available Memory", + "range": true, + "refId": "B", + "useBackend": false + }, + { + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "disableTextWrap": false, + "editorMode": "builder", + "expr": "gnmic_memory_buffers{source=\"$Device\"}", + "fullMetaSearch": false, + "hide": false, + "includeNullMetadata": true, + "instant": false, + "legendFormat": "Buffers Memory", + "range": true, + "refId": "C", + "useBackend": false + }, + { + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "disableTextWrap": false, + "editorMode": "builder", + "expr": "gnmic_memory_cached{source=\"$Device\"}", + "fullMetaSearch": false, + "hide": false, + "includeNullMetadata": true, + "instant": false, + "legendFormat": "Cached Memory", + "range": true, + "refId": "D", + "useBackend": false + }, + { + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "disableTextWrap": false, + "editorMode": "builder", + "expr": "gnmic_memory_used{source=\"$Device\"}", + "fullMetaSearch": false, + "hide": false, + "includeNullMetadata": true, + "instant": false, + "legendFormat": "Used Memory", + "range": true, + "refId": "E", + "useBackend": false + }, + { + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "disableTextWrap": false, + "editorMode": "code", + "exemplar": false, + "expr": "gnmic_memory_available{job=\"gnmic\",source=\"$Device\"}", + "fullMetaSearch": false, + "hide": false, + "includeNullMetadata": true, + "instant": false, + "legendFormat": "Total Memory", + "range": true, + "refId": "F", + "useBackend": false + } + ], + "title": "Memory Overview", + "type": "bargauge" + }, + { + "datasource": { + "default": false, + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 10, + "x": 10, + "y": 4 + }, + "id": 3, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "disableTextWrap": false, + "editorMode": "builder", + "expr": "gnmic_cpu_load_avg_loadAvg1m{source=\"$Device\"}", + "format": "time_series", + "fullMetaSearch": false, + "includeNullMetadata": true, + "instant": false, + "legendFormat": "1-minute CPU Load Avg", + "range": true, + "refId": "A", + "useBackend": false + }, + { + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "disableTextWrap": false, + "editorMode": "builder", + "expr": "gnmic_cpu_load_avg_loadAvg5m{source=\"$Device\"}", + "fullMetaSearch": false, + "hide": false, + "includeNullMetadata": true, + "instant": false, + "legendFormat": "5-minute CPU Load Avg", + "range": true, + "refId": "B", + "useBackend": false + }, + { + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "disableTextWrap": false, + "editorMode": "builder", + "expr": "gnmic_cpu_load_avg_loadAvg15m{source=\"$Device\"}", + "fullMetaSearch": false, + "hide": false, + "includeNullMetadata": true, + "instant": false, + "legendFormat": "15-minute CPU Load Avg", + "range": true, + "refId": "C", + "useBackend": false + } + ], + "title": "CPU Overview", + "type": "stat" + } + ], + "schemaVersion": 39, + "tags": [], + "templating": { + "list": [ + { + "current": { + "selected": false, + "text": "om-pe11", + "value": "om-pe11" + }, + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "definition": "label_values(source)", + "hide": 0, + "includeAll": false, + "multi": false, + "name": "Device", + "options": [], + "query": { + "qryType": 1, + "query": "label_values(source)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" + } + ] + }, + "time": { + "from": "now-6h", + "to": "now" + }, + "timepicker": {}, + "timezone": "browser", + "title": "Device Overview", + "uid": "ddyiqse9z0r28b", + "version": 9, + "weekStart": "" + } \ No newline at end of file diff --git a/labs/gnmic-prometheus-grafana/clab/grafana/provisioning/dashboards/fabric-health.json b/labs/gnmic-prometheus-grafana/clab/grafana/provisioning/dashboards/fabric-health.json new file mode 100644 index 0000000..8050ef8 --- /dev/null +++ b/labs/gnmic-prometheus-grafana/clab/grafana/provisioning/dashboards/fabric-health.json @@ -0,0 +1,372 @@ +{ + "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": 3, + "links": [], + "panels": [ + { + "datasource": { + "default": false, + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "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 + } + ] + }, + "unit": "ns" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 7, + "x": 0, + "y": 0 + }, + "id": 3, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "disableTextWrap": false, + "editorMode": "code", + "exemplar": false, + "expr": "time()*1000000000-gnmic_boot_time_boot_time", + "format": "table", + "fullMetaSearch": false, + "includeNullMetadata": true, + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "A", + "useBackend": false + }, + { + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "editorMode": "code", + "exemplar": false, + "expr": "gnmic_intf_config_ip{job=\"gnmic\", interface_name=\"Management0\"}", + "format": "table", + "hide": false, + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "B" + } + ], + "title": "Uptime", + "transformations": [ + { + "id": "joinByField", + "options": { + "byField": "source", + "mode": "outer" + } + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "Value #B": true, + "__name__": true, + "address_ip": true, + "instance": true, + "instance 2": true, + "job": true, + "job 2": true, + "subinterface_index": true, + "subscription_name": true, + "subscription_name 2": true + }, + "includeByName": {}, + "indexByName": {}, + "renameByName": { + "Value #A": "Uptime", + "interface_name": "Management Interface", + "ip": "Management IP", + "source": "Hostname" + } + } + } + ], + "type": "table" + }, + { + "datasource": { + "default": false, + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "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", + "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": 9 + }, + "id": 2, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "disableTextWrap": false, + "editorMode": "builder", + "expr": "gnmic_memory_utilized{job=\"gnmic\"}", + "fullMetaSearch": false, + "includeNullMetadata": true, + "instant": false, + "legendFormat": "__auto", + "range": true, + "refId": "A", + "useBackend": false + } + ], + "title": "Memory utilized", + "type": "timeseries" + }, + { + "datasource": { + "default": false, + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "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", + "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": 17 + }, + "id": 1, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "disableTextWrap": false, + "editorMode": "builder", + "expr": "gnmic_cpu_avg{job=\"gnmic\"}", + "fullMetaSearch": false, + "includeNullMetadata": true, + "instant": false, + "legendFormat": "{{source}}/{{component_name}}", + "range": true, + "refId": "A", + "useBackend": false + } + ], + "title": "CPU Utilization", + "type": "timeseries" + } + ], + "schemaVersion": 39, + "tags": [], + "templating": { + "list": [] + }, + "time": { + "from": "now-1h", + "to": "now" + }, + "timepicker": {}, + "timezone": "browser", + "title": "Fabric Health", + "uid": "bdyhfszuksdmoe", + "version": 6, + "weekStart": "" + } \ No newline at end of file diff --git a/labs/gnmic-prometheus-grafana/clab/grafana/provisioning/dashboards/interface-stats.json b/labs/gnmic-prometheus-grafana/clab/grafana/provisioning/dashboards/interface-stats.json new file mode 100644 index 0000000..fb09bd5 --- /dev/null +++ b/labs/gnmic-prometheus-grafana/clab/grafana/provisioning/dashboards/interface-stats.json @@ -0,0 +1,748 @@ +{ + "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": 2, + "links": [], + "panels": [ + { + "datasource": { + "default": false, + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + } + }, + "mappings": [] + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "0" + }, + "properties": [ + { + "id": "displayName", + "value": "Down" + }, + { + "id": "color", + "value": { + "fixedColor": "red", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "1" + }, + "properties": [ + { + "id": "displayName", + "value": "Up" + }, + { + "id": "color", + "value": { + "fixedColor": "green", + "mode": "fixed" + } + } + ] + } + ] + }, + "gridPos": { + "h": 10, + "w": 5, + "x": 0, + "y": 0 + }, + "id": 1, + "options": { + "displayLabels": [ + "value", + "percent" + ], + "legend": { + "displayMode": "list", + "placement": "bottom", + "showLegend": true, + "values": [ + "value", + "percent" + ] + }, + "pieType": "donut", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "disableTextWrap": false, + "editorMode": "builder", + "exemplar": false, + "expr": "count_values by() (\"count\", gnmic_intf_admin_state_admin_status{job=\"gnmic\"})", + "format": "time_series", + "fullMetaSearch": false, + "includeNullMetadata": true, + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "A", + "useBackend": false + } + ], + "title": "Intf Admin Status", + "type": "piechart" + }, + { + "datasource": { + "default": false, + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + } + }, + "mappings": [ + { + "options": { + "0": { + "color": "red", + "index": 3, + "text": "DOWN" + }, + "1": { + "color": "green", + "index": 2, + "text": "UP" + }, + "DOWN": { + "color": "red", + "index": 0 + }, + "UP": { + "color": "green", + "index": 1 + } + }, + "type": "value" + } + ] + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "0" + }, + "properties": [ + { + "id": "displayName", + "value": "Down" + }, + { + "id": "color", + "value": { + "fixedColor": "red", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "1" + }, + "properties": [ + { + "id": "displayName", + "value": "Up" + }, + { + "id": "color", + "value": { + "fixedColor": "green", + "mode": "fixed" + } + } + ] + } + ] + }, + "gridPos": { + "h": 10, + "w": 5, + "x": 5, + "y": 0 + }, + "id": 2, + "options": { + "displayLabels": [ + "percent", + "value" + ], + "legend": { + "displayMode": "list", + "placement": "bottom", + "showLegend": true, + "values": [ + "value", + "percent" + ] + }, + "pieType": "donut", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "disableTextWrap": false, + "editorMode": "builder", + "expr": "count_values by() (\"count\", gnmic_intf_oper_state_oper_status{job=\"gnmic\"})", + "fullMetaSearch": false, + "includeNullMetadata": true, + "instant": false, + "legendFormat": "__auto", + "range": true, + "refId": "A", + "useBackend": false + } + ], + "title": "Intf Oper State", + "type": "piechart" + }, + { + "datasource": { + "default": false, + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "cellOptions": { + "type": "auto" + }, + "inspect": false + }, + "fieldMinMax": true, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 10, + "w": 5, + "x": 10, + "y": 0 + }, + "id": 3, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "disableTextWrap": false, + "editorMode": "builder", + "exemplar": false, + "expr": "gnmic_show_ver_version{job=\"gnmic\"}", + "format": "table", + "fullMetaSearch": false, + "includeNullMetadata": true, + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "A", + "useBackend": false + } + ], + "title": "EOS Versions", + "transformations": [ + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "Value": true, + "__name__": true, + "instance": true, + "job": true, + "subscription_name": true + }, + "includeByName": {}, + "indexByName": {}, + "renameByName": { + "source": "Hostname" + } + } + } + ], + "type": "table" + }, + { + "datasource": { + "default": false, + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "cellOptions": { + "type": "auto" + }, + "inspect": false + }, + "mappings": [ + { + "options": { + "0": { + "index": 1, + "text": "Down" + }, + "1": { + "index": 0, + "text": "Up" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 12, + "w": 10, + "x": 0, + "y": 10 + }, + "id": 4, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "disableTextWrap": false, + "editorMode": "builder", + "exemplar": false, + "expr": "gnmic_intf_admin_state_admin_status{job=\"gnmic\"}", + "format": "table", + "fullMetaSearch": false, + "includeNullMetadata": true, + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "A", + "useBackend": false + } + ], + "title": "Interface Admin Status Table", + "transformations": [ + { + "id": "organize", + "options": { + "excludeByName": { + "__name__": true, + "instance": true, + "job": true, + "subscription_name": true + }, + "includeByName": {}, + "indexByName": {}, + "renameByName": { + "Value": "Status", + "interface_name": "Interface", + "source": "Hostname" + } + } + } + ], + "type": "table" + }, + { + "datasource": { + "default": false, + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "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", + "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": 22 + }, + "id": 5, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "disableTextWrap": false, + "editorMode": "builder", + "expr": "rate(gnmic_intf_ctrs_in_octets[$__rate_interval])", + "fullMetaSearch": false, + "includeNullMetadata": true, + "instant": false, + "legendFormat": "{{source}}//{{interface_name}} - In", + "range": true, + "refId": "A", + "useBackend": false + }, + { + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "disableTextWrap": false, + "editorMode": "builder", + "expr": "rate(gnmic_intf_ctrs_out_octets[$__rate_interval])", + "fullMetaSearch": false, + "hide": false, + "includeNullMetadata": true, + "instant": false, + "legendFormat": "{{source}}//{{interface_name}} - Out", + "range": true, + "refId": "B", + "useBackend": false + } + ], + "title": "Interface traffic stats (bytes/sec)", + "type": "timeseries" + }, + { + "datasource": { + "default": false, + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "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", + "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": 30 + }, + "id": 6, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "disableTextWrap": false, + "editorMode": "builder", + "expr": "rate(gnmic_intf_ctrs_in_discards[$__rate_interval])", + "fullMetaSearch": false, + "includeNullMetadata": true, + "instant": false, + "legendFormat": "{{source}}//{{interface_name}} - In", + "range": true, + "refId": "A", + "useBackend": false + }, + { + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "disableTextWrap": false, + "editorMode": "builder", + "expr": "rate(gnmic_intf_ctrs_out_discards[$__rate_interval])", + "fullMetaSearch": false, + "hide": false, + "includeNullMetadata": true, + "instant": false, + "legendFormat": "{{source}}//{{interface_name}} - Out", + "range": true, + "refId": "B", + "useBackend": false + } + ], + "title": "Interface Discards per sec", + "type": "timeseries" + } + ], + "schemaVersion": 39, + "tags": [], + "templating": { + "list": [] + }, + "time": { + "from": "now-6h", + "to": "now" + }, + "timepicker": {}, + "timezone": "browser", + "title": "Interface Statistics", + "uid": "bdyh021fsya68e", + "version": 24, + "weekStart": "" + } \ No newline at end of file diff --git a/labs/gnmic-prometheus-grafana/clab/grafana/provisioning/dashboards/l3-telemetry.json b/labs/gnmic-prometheus-grafana/clab/grafana/provisioning/dashboards/l3-telemetry.json new file mode 100644 index 0000000..e381c1a --- /dev/null +++ b/labs/gnmic-prometheus-grafana/clab/grafana/provisioning/dashboards/l3-telemetry.json @@ -0,0 +1,168 @@ +{ + "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": 5, + "links": [], + "panels": [ + { + "datasource": { + "default": false, + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "cellOptions": { + "type": "color-text" + }, + "inspect": false + }, + "mappings": [ + { + "options": { + "0": { + "color": "dark-red", + "index": 0 + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 26, + "w": 9, + "x": 0, + "y": 0 + }, + "id": 1, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [ + { + "desc": false, + "displayName": "source" + } + ] + }, + "pluginVersion": "11.2.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "PBFA97CFB590B2093" + }, + "disableTextWrap": false, + "editorMode": "builder", + "exemplar": false, + "expr": "gnmic_bgp_neighbors_installed{afi_safi_afi_safi_name=\"IPV4_UNICAST\"}", + "format": "table", + "fullMetaSearch": false, + "includeNullMetadata": true, + "instant": true, + "legendFormat": "__auto", + "range": false, + "refId": "A", + "useBackend": false + } + ], + "title": "BGP IPv4 Unicast Summary", + "transformations": [ + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "__name__": true, + "instance": true, + "job": true, + "network_instance_name": false, + "protocol_identifier": true, + "protocol_name": true, + "subscription_name": true + }, + "includeByName": {}, + "indexByName": { + "Time": 1, + "Value": 11, + "__name__": 2, + "afi_safi_afi_safi_name": 3, + "instance": 4, + "job": 5, + "neighbor_neighbor_address": 6, + "network_instance_name": 7, + "protocol_identifier": 8, + "protocol_name": 9, + "source": 0, + "subscription_name": 10 + }, + "renameByName": { + "Value": "PfxAcc", + "neighbor_neighbor_address": "Neighbor IP", + "network_instance_name": "VRF", + "source": "Hostname" + } + } + } + ], + "type": "table" + } + ], + "schemaVersion": 39, + "tags": [], + "templating": { + "list": [] + }, + "time": { + "from": "now-6h", + "to": "now" + }, + "timepicker": {}, + "timezone": "browser", + "title": "L3 Telemetry", + "uid": "edykq7cje2eioe", + "version": 3, + "weekStart": "" + } \ No newline at end of file diff --git a/labs/gnmic-prometheus-grafana/clab/grafana/provisioning/datasources/datasource.yaml b/labs/gnmic-prometheus-grafana/clab/grafana/provisioning/datasources/datasource.yaml new file mode 100644 index 0000000..d6824c7 --- /dev/null +++ b/labs/gnmic-prometheus-grafana/clab/grafana/provisioning/datasources/datasource.yaml @@ -0,0 +1,7 @@ +# config file version +apiVersion: 1 + +datasources: + - name: Prometheus + type: prometheus + url: http://prometheus:9090 diff --git a/labs/gnmic-prometheus-grafana/clab/prometheus/prometheus.yml b/labs/gnmic-prometheus-grafana/clab/prometheus/prometheus.yml new file mode 100644 index 0000000..d10fb16 --- /dev/null +++ b/labs/gnmic-prometheus-grafana/clab/prometheus/prometheus.yml @@ -0,0 +1,9 @@ +global: + scrape_interval: 5s + +# metrics_path defaults to '/metrics' +# scheme defaults to 'http'. +scrape_configs: + - job_name: "gnmic" + static_configs: + - targets: ["gnmic:9273"] diff --git a/labs/gnmic-prometheus-grafana/clab/sn/pe11.txt b/labs/gnmic-prometheus-grafana/clab/sn/pe11.txt new file mode 100644 index 0000000..e53219b --- /dev/null +++ b/labs/gnmic-prometheus-grafana/clab/sn/pe11.txt @@ -0,0 +1,2 @@ +SERIALNUMBER=OMLEAF1 +SYSTEMMACADDR=001c.aaaa.aa11 diff --git a/labs/gnmic-prometheus-grafana/clab/sn/pe12.txt b/labs/gnmic-prometheus-grafana/clab/sn/pe12.txt new file mode 100644 index 0000000..f3a9c60 --- /dev/null +++ b/labs/gnmic-prometheus-grafana/clab/sn/pe12.txt @@ -0,0 +1,2 @@ +SERIALNUMBER=OMLEAF2 +SYSTEMMACADDR=001c.aaab.aa12 \ No newline at end of file diff --git a/labs/gnmic-prometheus-grafana/clab/sn/pe21.txt b/labs/gnmic-prometheus-grafana/clab/sn/pe21.txt new file mode 100644 index 0000000..65cd40e --- /dev/null +++ b/labs/gnmic-prometheus-grafana/clab/sn/pe21.txt @@ -0,0 +1,2 @@ +SERIALNUMBER=OMLEAF3 +SYSTEMMACADDR=001c.aaac.aa21 \ No newline at end of file diff --git a/labs/gnmic-prometheus-grafana/clab/sn/pe22.txt b/labs/gnmic-prometheus-grafana/clab/sn/pe22.txt new file mode 100644 index 0000000..92973c9 --- /dev/null +++ b/labs/gnmic-prometheus-grafana/clab/sn/pe22.txt @@ -0,0 +1,2 @@ +SERIALNUMBER=OMLEAF4 +SYSTEMMACADDR=001c.aaad.aa22 \ No newline at end of file diff --git a/labs/gnmic-prometheus-grafana/clab/sn/spine1.txt b/labs/gnmic-prometheus-grafana/clab/sn/spine1.txt new file mode 100644 index 0000000..31d0df9 --- /dev/null +++ b/labs/gnmic-prometheus-grafana/clab/sn/spine1.txt @@ -0,0 +1,2 @@ +SERIALNUMBER=OMSPINE1 +SYSTEMMACADDR=001c.aaae.aaa1 \ No newline at end of file diff --git a/labs/gnmic-prometheus-grafana/clab/sn/spine2.txt b/labs/gnmic-prometheus-grafana/clab/sn/spine2.txt new file mode 100644 index 0000000..cbd5dec --- /dev/null +++ b/labs/gnmic-prometheus-grafana/clab/sn/spine2.txt @@ -0,0 +1,2 @@ +SERIALNUMBER=OMSPINE2 +SYSTEMMACADDR=001c.aaaf.aaa2 \ No newline at end of file diff --git a/labs/gnmic-prometheus-grafana/clab/topology.clab.yml b/labs/gnmic-prometheus-grafana/clab/topology.clab.yml new file mode 100644 index 0000000..b7abc68 --- /dev/null +++ b/labs/gnmic-prometheus-grafana/clab/topology.clab.yml @@ -0,0 +1,113 @@ +name: om + +topology: + kinds: + ceos: + startup-config: ./ceos.cfg.tpl + image: arista/ceos:4.32.2.1F + exec: + - sleep 10 + - FastCli -p 15 -c 'security pki key generate rsa 4096 eAPI.key' + - FastCli -p 15 -c 'security pki certificate generate self-signed eAPI.crt key eAPI.key generate rsa 4096 validity 30000 parameters common-name eAPI' + linux: + image: ghcr.io/aristanetworks/aclabs/host-ubuntu:rev1.0 + defaults: + kind: ceos + nodes: + om-spine1: + mgmt-ipv4: 172.144.100.2 + binds: + - ./sn/spine1.txt:/mnt/flash/ceos-config:ro + om-spine2: + mgmt-ipv4: 172.144.100.3 + binds: + - ./sn/spine2.txt:/mnt/flash/ceos-config:ro + om-pe11: + mgmt-ipv4: 172.144.100.4 + binds: + - ./sn/pe11.txt:/mnt/flash/ceos-config:ro + om-pe12: + mgmt-ipv4: 172.144.100.5 + binds: + - ./sn/pe12.txt:/mnt/flash/ceos-config:ro + om-pe21: + mgmt-ipv4: 172.144.100.6 + binds: + - ./sn/pe21.txt:/mnt/flash/ceos-config:ro + om-pe22: + mgmt-ipv4: 172.144.100.7 + binds: + - ./sn/pe22.txt:/mnt/flash/ceos-config:ro + client1: + kind: linux + mgmt-ipv4: 172.144.100.8 + env: + TMODE: lacp + client2: + kind: linux + mgmt-ipv4: 172.144.100.9 + env: + TMODE: lacp + client3: + kind: linux + mgmt-ipv4: 172.144.100.10 + env: + TMODE: lacp + client4: + kind: linux + mgmt-ipv4: 172.144.100.11 + env: + TMODE: lacp + # Telemetry stack + gnmic: + kind: linux + mgmt-ipv4: 172.144.100.200 + image: ghcr.io/openconfig/gnmic:0.38.2 + binds: + - ./gnmic.yml:/gnmic.yml:ro + cmd: --config gnmic.yml --log subscribe + group: gpromg + prometheus: + kind: linux + mgmt-ipv4: 172.144.100.210 + image: prom/prometheus:v2.54.1 + binds: + - prometheus/prometheus.yml:/etc/prometheus/prometheus.yml:ro + cmd: --config.file=/etc/prometheus/prometheus.yml + ports: + - 9090:9090 + group: gpromg + grafana: + kind: linux + mgmt-ipv4: 172.144.100.220 + env: + GF_SECURITY_ADMIN_USER: arista + GF_SECURITY_ADMIN_PASSWORD: arista + ports: + - '3001:3000' + image: grafana/grafana:11.2.0 + binds: + - ./grafana/provisioning/:/etc/grafana/provisioning/ + group: gpromg + + links: + - endpoints: ["om-pe11:eth1", "om-spine1:eth1"] + - endpoints: ["om-pe12:eth1", "om-spine1:eth2"] + - endpoints: ["om-pe21:eth1", "om-spine1:eth3"] + - endpoints: ["om-pe22:eth1", "om-spine1:eth4"] + - endpoints: ["om-pe11:eth2", "om-spine2:eth1"] + - endpoints: ["om-pe12:eth2", "om-spine2:eth2"] + - endpoints: ["om-pe21:eth2", "om-spine2:eth3"] + - endpoints: ["om-pe22:eth2", "om-spine2:eth4"] + - endpoints: ["om-pe11:eth3", "client1:eth1"] + - endpoints: ["om-pe12:eth3", "client1:eth2"] + - endpoints: ["om-pe11:eth4", "client2:eth1"] + - endpoints: ["om-pe12:eth4", "client2:eth2"] + - endpoints: ["om-pe21:eth3", "client3:eth1"] + - endpoints: ["om-pe22:eth3", "client3:eth2"] + - endpoints: ["om-pe21:eth4", "client4:eth1"] + - endpoints: ["om-pe22:eth4", "client4:eth2"] + +mgmt: + network: om_clab + ipv4-subnet: 172.144.100.0/24 \ No newline at end of file diff --git a/labs/gnmic-prometheus-grafana/group_vars/AVD_LAB.yaml b/labs/gnmic-prometheus-grafana/group_vars/AVD_LAB.yaml new file mode 100644 index 0000000..116f44f --- /dev/null +++ b/labs/gnmic-prometheus-grafana/group_vars/AVD_LAB.yaml @@ -0,0 +1,64 @@ +--- +local_users: + - name: admin + privilege: 15 + role: network-admin + sha512_password: "$6$7GTxsrRjnwheeKfR$zhJ8qycVjAJz41rf5JRSfWIzp93IL5WL7sMS/Taz1yfShz.MAnoajCf7R2n1/EZW7PN5QA3Huayl0lVQesBYN1" + +name_servers: + - 1.1.1.1 + - 8.8.8.8 + +ntp: + servers: + - name: time.google.com + preferred: true + vrf: MGMT + iburst: true + +service_routing_protocols_model: multi-agent + +custom_structured_configuration_spanning_tree: + mode: mstp + +ip_routing: true + +# hardcoding management0 for cEOS lab compatibility (default: Management1) +mgmt_interface: Management0 +mgmt_gateway: 172.144.100.1 +mgmt_interface_vrf: MGMT + +# Management eAPI | Required for this Lab +custom_structured_configuration_management_api_http: + https_ssl_profile: eAPI + +# Management security required for SSL profile with strong ciphers +custom_structured_configuration_management_security: + ssl_profiles: + - name: eAPI + certificate: + file: eAPI.crt + key: eAPI.key + cipher_list: 'HIGH:!eNULL:!aNULL:!MD5:!ADH:!ANULL' + +# Management GNMI | Optional +management_api_gnmi: + provider: "eos-native" + transport: + grpc: + - name: MGMT + vrf: MGMT + notification_timestamp: "send-time" + - name: default + notification_timestamp: "send-time" + +# daemon_terminattr: +# cvaddrs: # For single cluster +# - 10.100.169.53:9910 +# cvvrf: MGMT +# cvauth: +# method: "token" +# token_file: "/mnt/flash/token" +# ingestexclude: "/Sysdb/cell/1/agent,/Sysdb/cell/2/agent" +# smashexcludes: "ale,flexCounter,hardware,kni,pulse,strata" +# disable_aaa: true diff --git a/labs/gnmic-prometheus-grafana/group_vars/OM_CONNECTED_ENDPOINTS.yaml b/labs/gnmic-prometheus-grafana/group_vars/OM_CONNECTED_ENDPOINTS.yaml new file mode 100644 index 0000000..707f99a --- /dev/null +++ b/labs/gnmic-prometheus-grafana/group_vars/OM_CONNECTED_ENDPOINTS.yaml @@ -0,0 +1,82 @@ +--- +port_profiles: + - profile: Tenant_A_pod1_clientA + mode: trunk + vlans: '110' + - profile: Tenant_A_pod1_clientB + mode: trunk + vlans: '111' + +servers: + - name: server01 + rack: rack01 + adapters: + - endpoint_ports: + - Eth1 + - Eth2 + switch_ports: + - Ethernet3 + - Ethernet3 + switches: + - om-pe11 + - om-pe12 + profile: Tenant_A_pod1_clientA + spanning_tree_portfast: edge + port_channel: + description: PortChannel3 + mode: active + short_esi: 0101:0102:0033 + - name: server02 + rack: rack01 + adapters: + - endpoint_ports: + - Eth1 + - Eth2 + switch_ports: + - Ethernet4 + - Ethernet4 + switches: + - om-pe11 + - om-pe12 + profile: Tenant_A_pod1_clientB + spanning_tree_portfast: edge + port_channel: + description: PortChannel4 + mode: active + short_esi: 0101:0102:0044 + - name: server03 + rack: rack02 + adapters: + - endpoint_ports: + - Eth1 + - Eth2 + switch_ports: + - Ethernet3 + - Ethernet3 + switches: + - om-pe21 + - om-pe22 + profile: Tenant_A_pod1_clientA + spanning_tree_portfast: edge + port_channel: + description: PortChannel3 + mode: active + short_esi: 0201:0202:0033 + - name: server04 + rack: rack02 + adapters: + - endpoint_ports: + - Eth1 + - Eth2 + switch_ports: + - Ethernet4 + - Ethernet4 + switches: + - om-pe21 + - om-pe22 + profile: Tenant_A_pod1_clientB + spanning_tree_portfast: edge + port_channel: + description: PortChannel4 + mode: active + short_esi: 0201:0202:0044 diff --git a/labs/gnmic-prometheus-grafana/group_vars/OM_FABRIC.yaml b/labs/gnmic-prometheus-grafana/group_vars/OM_FABRIC.yaml new file mode 100644 index 0000000..e5c7301 --- /dev/null +++ b/labs/gnmic-prometheus-grafana/group_vars/OM_FABRIC.yaml @@ -0,0 +1,92 @@ +--- +fabric_name: OM_FABRIC + +underlay_routing_protocol: ebgp + +overlay_routing_protocol: ebgp + +evpn_vlan_aware_bundles: false + +# bgp peer groups passwords +bgp_peer_groups: + ipv4_underlay_peers: + password: "AQQvKeimxJu+uGQ/yYvv9w==" + evpn_overlay_peers: + password: "q+VNViP5i4rVjW1cxFv2wA==" + +# BGP defaults +bgp_default_ipv4_unicast: false +bgp_update_wait_install: false +bgp_update_wait_for_convergence: false +bgp_distance: + external_routes: 20 + internal_routes: 200 + local_routes: 200 + +spine: + defaults: + platform: cEOS-LAB + bgp_as: '65001' + loopback_ipv4_pool: 192.168.255.0/24 + nodes: + - name: om-spine1 + id: 1 + mgmt_ip: 172.144.100.2/24 + - name: om-spine2 + id: 2 + mgmt_ip: 172.144.100.3/24 + +l3leaf: + defaults: + platform: cEOS-LAB + uplink_switches: + - om-spine1 + - om-spine2 + uplink_interfaces: + - Ethernet1 + - Ethernet2 + spanning_tree_mode: mstp + spanning_tree_priority: 4096 + evpn_services_l2_only: true + loopback_ipv4_pool: 192.168.255.0/24 + loopback_ipv4_offset: 2 + vtep_loopback_ipv4_pool: 192.168.254.0/24 + uplink_ipv4_pool: 172.31.255.0/24 + node_groups: + - group: POD_1 + mlag: false + nodes: + - name: om-pe11 + id: 1 + bgp_as: '65101' + mgmt_ip: 172.144.100.4/24 + uplink_switch_interfaces: + - Ethernet1 + - Ethernet1 + - name: om-pe12 + id: 2 + bgp_as: '65102' + mgmt_ip: 172.144.100.5/24 + uplink_switch_interfaces: + - Ethernet2 + - Ethernet2 + - group: POD_2 + mlag: false + nodes: + - name: om-pe21 + id: 3 + bgp_as: '65103' + mgmt_ip: 172.144.100.6/24 + uplink_switch_interfaces: + - Ethernet3 + - Ethernet3 + - name: om-pe22 + id: 4 + bgp_as: '65104' + mgmt_ip: 172.144.100.7/24 + uplink_switch_interfaces: + - Ethernet4 + - Ethernet4 + +# Enable Route Target Membership Constraint Address Family on EVPN overlay BGP peerings +evpn_overlay_bgp_rtc: true diff --git a/labs/gnmic-prometheus-grafana/group_vars/OM_NETWORK_SERVICES.yaml b/labs/gnmic-prometheus-grafana/group_vars/OM_NETWORK_SERVICES.yaml new file mode 100644 index 0000000..8accca3 --- /dev/null +++ b/labs/gnmic-prometheus-grafana/group_vars/OM_NETWORK_SERVICES.yaml @@ -0,0 +1,14 @@ +--- +tenants: + # Tenant A VRFs / VLANs + - name: Tenant_A + mac_vrf_vni_base: 10000 + l2vlans: + - id: 110 + name: Tenant_A_OP_Zone_1 + tags: + - opzone_pod1 + - id: 111 + name: Tenant_A_OP_Zone_2 + tags: + - opzone_pod1 \ No newline at end of file diff --git a/labs/gnmic-prometheus-grafana/group_vars/OM_PES.yaml b/labs/gnmic-prometheus-grafana/group_vars/OM_PES.yaml new file mode 100644 index 0000000..f44a74a --- /dev/null +++ b/labs/gnmic-prometheus-grafana/group_vars/OM_PES.yaml @@ -0,0 +1,12 @@ +type: l3leaf +custom_structured_configuration_list_merge: append +custom_structured_configuration_vlan_interfaces: + - name: Vlan110 + description: Tenant_A_OP_Zone_1 + shutdown: false + ip_address_virtual: 10.1.10.1/24 + - name: Vlan111 + description: Tenant_A_OP_Zone_2 + shutdown: false + ip_address_virtual: 10.1.11.1/24 +custom_structured_configuration_ip_virtual_router_mac_address: 00:00:00:00:00:01 \ No newline at end of file diff --git a/labs/gnmic-prometheus-grafana/group_vars/OM_SPINES.yaml b/labs/gnmic-prometheus-grafana/group_vars/OM_SPINES.yaml new file mode 100644 index 0000000..0633cbe --- /dev/null +++ b/labs/gnmic-prometheus-grafana/group_vars/OM_SPINES.yaml @@ -0,0 +1 @@ +type: spine diff --git a/labs/gnmic-prometheus-grafana/intended/configs/om-pe11.cfg b/labs/gnmic-prometheus-grafana/intended/configs/om-pe11.cfg new file mode 100644 index 0000000..bb817d7 --- /dev/null +++ b/labs/gnmic-prometheus-grafana/intended/configs/om-pe11.cfg @@ -0,0 +1,200 @@ +!RANCID-CONTENT-TYPE: arista +! +vlan internal order ascending range 1006 1199 +! +transceiver qsfp default-mode 4x10G +! +service routing protocols model multi-agent +! +hostname om-pe11 +ip name-server vrf MGMT 1.1.1.1 +ip name-server vrf MGMT 8.8.8.8 +! +ntp server vrf MGMT time.google.com prefer iburst +! +spanning-tree mode mstp +spanning-tree mst 0 priority 4096 +! +no enable password +no aaa root +! +username admin privilege 15 role network-admin secret sha512 $6$7GTxsrRjnwheeKfR$zhJ8qycVjAJz41rf5JRSfWIzp93IL5WL7sMS/Taz1yfShz.MAnoajCf7R2n1/EZW7PN5QA3Huayl0lVQesBYN1 +! +vlan 110 + name Tenant_A_OP_Zone_1 +! +vlan 111 + name Tenant_A_OP_Zone_2 +! +vrf instance MGMT +! +interface Port-Channel3 + description server01_PortChannel3 + no shutdown + switchport + switchport trunk allowed vlan 110 + switchport mode trunk + evpn ethernet-segment + identifier 0000:0000:0101:0102:0033 + route-target import 01:01:01:02:00:33 + lacp system-id 0101.0102.0033 + spanning-tree portfast +! +interface Port-Channel4 + description server02_PortChannel4 + no shutdown + switchport + switchport trunk allowed vlan 111 + switchport mode trunk + evpn ethernet-segment + identifier 0000:0000:0101:0102:0044 + route-target import 01:01:01:02:00:44 + lacp system-id 0101.0102.0044 + spanning-tree portfast +! +interface Ethernet1 + description P2P_LINK_TO_OM-SPINE1_Ethernet1 + no shutdown + mtu 9214 + no switchport + ip address 172.31.255.1/31 +! +interface Ethernet2 + description P2P_LINK_TO_OM-SPINE2_Ethernet1 + no shutdown + mtu 9214 + no switchport + ip address 172.31.255.3/31 +! +interface Ethernet3 + description server01_Eth1 + no shutdown + channel-group 3 mode active +! +interface Ethernet4 + description server02_Eth1 + no shutdown + channel-group 4 mode active +! +interface Loopback0 + description EVPN_Overlay_Peering + no shutdown + ip address 192.168.255.3/32 +! +interface Loopback1 + description VTEP_VXLAN_Tunnel_Source + no shutdown + ip address 192.168.254.3/32 +! +interface Management0 + description oob_management + no shutdown + vrf MGMT + ip address 172.144.100.4/24 +! +interface Vlan110 + description Tenant_A_OP_Zone_1 + no shutdown + ip address virtual 10.1.10.1/24 +! +interface Vlan111 + description Tenant_A_OP_Zone_2 + no shutdown + ip address virtual 10.1.11.1/24 +! +interface Vxlan1 + description om-pe11_VTEP + vxlan source-interface Loopback1 + vxlan udp-port 4789 + vxlan vlan 110 vni 10110 + vxlan vlan 111 vni 10111 +! +ip virtual-router mac-address 00:00:00:00:00:01 +! +ip routing +no ip routing vrf MGMT +! +ip prefix-list PL-LOOPBACKS-EVPN-OVERLAY + seq 10 permit 192.168.255.0/24 eq 32 + seq 20 permit 192.168.254.0/24 eq 32 +! +ip route vrf MGMT 0.0.0.0/0 172.144.100.1 +! +route-map RM-CONN-2-BGP permit 10 + match ip address prefix-list PL-LOOPBACKS-EVPN-OVERLAY +! +router bfd + multihop interval 300 min-rx 300 multiplier 3 +! +router bgp 65101 + router-id 192.168.255.3 + distance bgp 20 200 200 + maximum-paths 4 ecmp 4 + no bgp default ipv4-unicast + neighbor EVPN-OVERLAY-PEERS peer group + neighbor EVPN-OVERLAY-PEERS update-source Loopback0 + neighbor EVPN-OVERLAY-PEERS bfd + neighbor EVPN-OVERLAY-PEERS ebgp-multihop 3 + neighbor EVPN-OVERLAY-PEERS password 7 q+VNViP5i4rVjW1cxFv2wA== + neighbor EVPN-OVERLAY-PEERS send-community + neighbor EVPN-OVERLAY-PEERS maximum-routes 0 + neighbor IPv4-UNDERLAY-PEERS peer group + neighbor IPv4-UNDERLAY-PEERS password 7 AQQvKeimxJu+uGQ/yYvv9w== + neighbor IPv4-UNDERLAY-PEERS send-community + neighbor IPv4-UNDERLAY-PEERS maximum-routes 12000 + neighbor 172.31.255.0 peer group IPv4-UNDERLAY-PEERS + neighbor 172.31.255.0 remote-as 65001 + neighbor 172.31.255.0 description om-spine1_Ethernet1 + neighbor 172.31.255.2 peer group IPv4-UNDERLAY-PEERS + neighbor 172.31.255.2 remote-as 65001 + neighbor 172.31.255.2 description om-spine2_Ethernet1 + neighbor 192.168.255.1 peer group EVPN-OVERLAY-PEERS + neighbor 192.168.255.1 remote-as 65001 + neighbor 192.168.255.1 description om-spine1 + neighbor 192.168.255.2 peer group EVPN-OVERLAY-PEERS + neighbor 192.168.255.2 remote-as 65001 + neighbor 192.168.255.2 description om-spine2 + redistribute connected route-map RM-CONN-2-BGP + ! + vlan 110 + rd 192.168.255.3:10110 + route-target both 10110:10110 + redistribute learned + ! + vlan 111 + rd 192.168.255.3:10111 + route-target both 10111:10111 + redistribute learned + ! + address-family evpn + neighbor EVPN-OVERLAY-PEERS activate + ! + address-family rt-membership + neighbor EVPN-OVERLAY-PEERS activate + ! + address-family ipv4 + no neighbor EVPN-OVERLAY-PEERS activate + neighbor IPv4-UNDERLAY-PEERS activate +! +management api http-commands + protocol https + protocol https ssl profile eAPI + no shutdown + ! + vrf MGMT + no shutdown +! +management api gnmi + transport grpc MGMT + vrf MGMT + notification timestamp send-time + transport grpc default + notification timestamp send-time + provider eos-native +! +management security + ssl profile eAPI + cipher-list HIGH:!eNULL:!aNULL:!MD5:!ADH:!ANULL + certificate eAPI.crt key eAPI.key +! +end diff --git a/labs/gnmic-prometheus-grafana/intended/configs/om-pe12.cfg b/labs/gnmic-prometheus-grafana/intended/configs/om-pe12.cfg new file mode 100644 index 0000000..de5599b --- /dev/null +++ b/labs/gnmic-prometheus-grafana/intended/configs/om-pe12.cfg @@ -0,0 +1,200 @@ +!RANCID-CONTENT-TYPE: arista +! +vlan internal order ascending range 1006 1199 +! +transceiver qsfp default-mode 4x10G +! +service routing protocols model multi-agent +! +hostname om-pe12 +ip name-server vrf MGMT 1.1.1.1 +ip name-server vrf MGMT 8.8.8.8 +! +ntp server vrf MGMT time.google.com prefer iburst +! +spanning-tree mode mstp +spanning-tree mst 0 priority 4096 +! +no enable password +no aaa root +! +username admin privilege 15 role network-admin secret sha512 $6$7GTxsrRjnwheeKfR$zhJ8qycVjAJz41rf5JRSfWIzp93IL5WL7sMS/Taz1yfShz.MAnoajCf7R2n1/EZW7PN5QA3Huayl0lVQesBYN1 +! +vlan 110 + name Tenant_A_OP_Zone_1 +! +vlan 111 + name Tenant_A_OP_Zone_2 +! +vrf instance MGMT +! +interface Port-Channel3 + description server01_PortChannel3 + no shutdown + switchport + switchport trunk allowed vlan 110 + switchport mode trunk + evpn ethernet-segment + identifier 0000:0000:0101:0102:0033 + route-target import 01:01:01:02:00:33 + lacp system-id 0101.0102.0033 + spanning-tree portfast +! +interface Port-Channel4 + description server02_PortChannel4 + no shutdown + switchport + switchport trunk allowed vlan 111 + switchport mode trunk + evpn ethernet-segment + identifier 0000:0000:0101:0102:0044 + route-target import 01:01:01:02:00:44 + lacp system-id 0101.0102.0044 + spanning-tree portfast +! +interface Ethernet1 + description P2P_LINK_TO_OM-SPINE1_Ethernet2 + no shutdown + mtu 9214 + no switchport + ip address 172.31.255.5/31 +! +interface Ethernet2 + description P2P_LINK_TO_OM-SPINE2_Ethernet2 + no shutdown + mtu 9214 + no switchport + ip address 172.31.255.7/31 +! +interface Ethernet3 + description server01_Eth2 + no shutdown + channel-group 3 mode active +! +interface Ethernet4 + description server02_Eth2 + no shutdown + channel-group 4 mode active +! +interface Loopback0 + description EVPN_Overlay_Peering + no shutdown + ip address 192.168.255.4/32 +! +interface Loopback1 + description VTEP_VXLAN_Tunnel_Source + no shutdown + ip address 192.168.254.4/32 +! +interface Management0 + description oob_management + no shutdown + vrf MGMT + ip address 172.144.100.5/24 +! +interface Vlan110 + description Tenant_A_OP_Zone_1 + no shutdown + ip address virtual 10.1.10.1/24 +! +interface Vlan111 + description Tenant_A_OP_Zone_2 + no shutdown + ip address virtual 10.1.11.1/24 +! +interface Vxlan1 + description om-pe12_VTEP + vxlan source-interface Loopback1 + vxlan udp-port 4789 + vxlan vlan 110 vni 10110 + vxlan vlan 111 vni 10111 +! +ip virtual-router mac-address 00:00:00:00:00:01 +! +ip routing +no ip routing vrf MGMT +! +ip prefix-list PL-LOOPBACKS-EVPN-OVERLAY + seq 10 permit 192.168.255.0/24 eq 32 + seq 20 permit 192.168.254.0/24 eq 32 +! +ip route vrf MGMT 0.0.0.0/0 172.144.100.1 +! +route-map RM-CONN-2-BGP permit 10 + match ip address prefix-list PL-LOOPBACKS-EVPN-OVERLAY +! +router bfd + multihop interval 300 min-rx 300 multiplier 3 +! +router bgp 65102 + router-id 192.168.255.4 + distance bgp 20 200 200 + maximum-paths 4 ecmp 4 + no bgp default ipv4-unicast + neighbor EVPN-OVERLAY-PEERS peer group + neighbor EVPN-OVERLAY-PEERS update-source Loopback0 + neighbor EVPN-OVERLAY-PEERS bfd + neighbor EVPN-OVERLAY-PEERS ebgp-multihop 3 + neighbor EVPN-OVERLAY-PEERS password 7 q+VNViP5i4rVjW1cxFv2wA== + neighbor EVPN-OVERLAY-PEERS send-community + neighbor EVPN-OVERLAY-PEERS maximum-routes 0 + neighbor IPv4-UNDERLAY-PEERS peer group + neighbor IPv4-UNDERLAY-PEERS password 7 AQQvKeimxJu+uGQ/yYvv9w== + neighbor IPv4-UNDERLAY-PEERS send-community + neighbor IPv4-UNDERLAY-PEERS maximum-routes 12000 + neighbor 172.31.255.4 peer group IPv4-UNDERLAY-PEERS + neighbor 172.31.255.4 remote-as 65001 + neighbor 172.31.255.4 description om-spine1_Ethernet2 + neighbor 172.31.255.6 peer group IPv4-UNDERLAY-PEERS + neighbor 172.31.255.6 remote-as 65001 + neighbor 172.31.255.6 description om-spine2_Ethernet2 + neighbor 192.168.255.1 peer group EVPN-OVERLAY-PEERS + neighbor 192.168.255.1 remote-as 65001 + neighbor 192.168.255.1 description om-spine1 + neighbor 192.168.255.2 peer group EVPN-OVERLAY-PEERS + neighbor 192.168.255.2 remote-as 65001 + neighbor 192.168.255.2 description om-spine2 + redistribute connected route-map RM-CONN-2-BGP + ! + vlan 110 + rd 192.168.255.4:10110 + route-target both 10110:10110 + redistribute learned + ! + vlan 111 + rd 192.168.255.4:10111 + route-target both 10111:10111 + redistribute learned + ! + address-family evpn + neighbor EVPN-OVERLAY-PEERS activate + ! + address-family rt-membership + neighbor EVPN-OVERLAY-PEERS activate + ! + address-family ipv4 + no neighbor EVPN-OVERLAY-PEERS activate + neighbor IPv4-UNDERLAY-PEERS activate +! +management api http-commands + protocol https + protocol https ssl profile eAPI + no shutdown + ! + vrf MGMT + no shutdown +! +management api gnmi + transport grpc MGMT + vrf MGMT + notification timestamp send-time + transport grpc default + notification timestamp send-time + provider eos-native +! +management security + ssl profile eAPI + cipher-list HIGH:!eNULL:!aNULL:!MD5:!ADH:!ANULL + certificate eAPI.crt key eAPI.key +! +end diff --git a/labs/gnmic-prometheus-grafana/intended/configs/om-pe21.cfg b/labs/gnmic-prometheus-grafana/intended/configs/om-pe21.cfg new file mode 100644 index 0000000..512b10b --- /dev/null +++ b/labs/gnmic-prometheus-grafana/intended/configs/om-pe21.cfg @@ -0,0 +1,200 @@ +!RANCID-CONTENT-TYPE: arista +! +vlan internal order ascending range 1006 1199 +! +transceiver qsfp default-mode 4x10G +! +service routing protocols model multi-agent +! +hostname om-pe21 +ip name-server vrf MGMT 1.1.1.1 +ip name-server vrf MGMT 8.8.8.8 +! +ntp server vrf MGMT time.google.com prefer iburst +! +spanning-tree mode mstp +spanning-tree mst 0 priority 4096 +! +no enable password +no aaa root +! +username admin privilege 15 role network-admin secret sha512 $6$7GTxsrRjnwheeKfR$zhJ8qycVjAJz41rf5JRSfWIzp93IL5WL7sMS/Taz1yfShz.MAnoajCf7R2n1/EZW7PN5QA3Huayl0lVQesBYN1 +! +vlan 110 + name Tenant_A_OP_Zone_1 +! +vlan 111 + name Tenant_A_OP_Zone_2 +! +vrf instance MGMT +! +interface Port-Channel3 + description server03_PortChannel3 + no shutdown + switchport + switchport trunk allowed vlan 110 + switchport mode trunk + evpn ethernet-segment + identifier 0000:0000:0201:0202:0033 + route-target import 02:01:02:02:00:33 + lacp system-id 0201.0202.0033 + spanning-tree portfast +! +interface Port-Channel4 + description server04_PortChannel4 + no shutdown + switchport + switchport trunk allowed vlan 111 + switchport mode trunk + evpn ethernet-segment + identifier 0000:0000:0201:0202:0044 + route-target import 02:01:02:02:00:44 + lacp system-id 0201.0202.0044 + spanning-tree portfast +! +interface Ethernet1 + description P2P_LINK_TO_OM-SPINE1_Ethernet3 + no shutdown + mtu 9214 + no switchport + ip address 172.31.255.9/31 +! +interface Ethernet2 + description P2P_LINK_TO_OM-SPINE2_Ethernet3 + no shutdown + mtu 9214 + no switchport + ip address 172.31.255.11/31 +! +interface Ethernet3 + description server03_Eth1 + no shutdown + channel-group 3 mode active +! +interface Ethernet4 + description server04_Eth1 + no shutdown + channel-group 4 mode active +! +interface Loopback0 + description EVPN_Overlay_Peering + no shutdown + ip address 192.168.255.5/32 +! +interface Loopback1 + description VTEP_VXLAN_Tunnel_Source + no shutdown + ip address 192.168.254.5/32 +! +interface Management0 + description oob_management + no shutdown + vrf MGMT + ip address 172.144.100.6/24 +! +interface Vlan110 + description Tenant_A_OP_Zone_1 + no shutdown + ip address virtual 10.1.10.1/24 +! +interface Vlan111 + description Tenant_A_OP_Zone_2 + no shutdown + ip address virtual 10.1.11.1/24 +! +interface Vxlan1 + description om-pe21_VTEP + vxlan source-interface Loopback1 + vxlan udp-port 4789 + vxlan vlan 110 vni 10110 + vxlan vlan 111 vni 10111 +! +ip virtual-router mac-address 00:00:00:00:00:01 +! +ip routing +no ip routing vrf MGMT +! +ip prefix-list PL-LOOPBACKS-EVPN-OVERLAY + seq 10 permit 192.168.255.0/24 eq 32 + seq 20 permit 192.168.254.0/24 eq 32 +! +ip route vrf MGMT 0.0.0.0/0 172.144.100.1 +! +route-map RM-CONN-2-BGP permit 10 + match ip address prefix-list PL-LOOPBACKS-EVPN-OVERLAY +! +router bfd + multihop interval 300 min-rx 300 multiplier 3 +! +router bgp 65103 + router-id 192.168.255.5 + distance bgp 20 200 200 + maximum-paths 4 ecmp 4 + no bgp default ipv4-unicast + neighbor EVPN-OVERLAY-PEERS peer group + neighbor EVPN-OVERLAY-PEERS update-source Loopback0 + neighbor EVPN-OVERLAY-PEERS bfd + neighbor EVPN-OVERLAY-PEERS ebgp-multihop 3 + neighbor EVPN-OVERLAY-PEERS password 7 q+VNViP5i4rVjW1cxFv2wA== + neighbor EVPN-OVERLAY-PEERS send-community + neighbor EVPN-OVERLAY-PEERS maximum-routes 0 + neighbor IPv4-UNDERLAY-PEERS peer group + neighbor IPv4-UNDERLAY-PEERS password 7 AQQvKeimxJu+uGQ/yYvv9w== + neighbor IPv4-UNDERLAY-PEERS send-community + neighbor IPv4-UNDERLAY-PEERS maximum-routes 12000 + neighbor 172.31.255.8 peer group IPv4-UNDERLAY-PEERS + neighbor 172.31.255.8 remote-as 65001 + neighbor 172.31.255.8 description om-spine1_Ethernet3 + neighbor 172.31.255.10 peer group IPv4-UNDERLAY-PEERS + neighbor 172.31.255.10 remote-as 65001 + neighbor 172.31.255.10 description om-spine2_Ethernet3 + neighbor 192.168.255.1 peer group EVPN-OVERLAY-PEERS + neighbor 192.168.255.1 remote-as 65001 + neighbor 192.168.255.1 description om-spine1 + neighbor 192.168.255.2 peer group EVPN-OVERLAY-PEERS + neighbor 192.168.255.2 remote-as 65001 + neighbor 192.168.255.2 description om-spine2 + redistribute connected route-map RM-CONN-2-BGP + ! + vlan 110 + rd 192.168.255.5:10110 + route-target both 10110:10110 + redistribute learned + ! + vlan 111 + rd 192.168.255.5:10111 + route-target both 10111:10111 + redistribute learned + ! + address-family evpn + neighbor EVPN-OVERLAY-PEERS activate + ! + address-family rt-membership + neighbor EVPN-OVERLAY-PEERS activate + ! + address-family ipv4 + no neighbor EVPN-OVERLAY-PEERS activate + neighbor IPv4-UNDERLAY-PEERS activate +! +management api http-commands + protocol https + protocol https ssl profile eAPI + no shutdown + ! + vrf MGMT + no shutdown +! +management api gnmi + transport grpc MGMT + vrf MGMT + notification timestamp send-time + transport grpc default + notification timestamp send-time + provider eos-native +! +management security + ssl profile eAPI + cipher-list HIGH:!eNULL:!aNULL:!MD5:!ADH:!ANULL + certificate eAPI.crt key eAPI.key +! +end diff --git a/labs/gnmic-prometheus-grafana/intended/configs/om-pe22.cfg b/labs/gnmic-prometheus-grafana/intended/configs/om-pe22.cfg new file mode 100644 index 0000000..6ec8600 --- /dev/null +++ b/labs/gnmic-prometheus-grafana/intended/configs/om-pe22.cfg @@ -0,0 +1,200 @@ +!RANCID-CONTENT-TYPE: arista +! +vlan internal order ascending range 1006 1199 +! +transceiver qsfp default-mode 4x10G +! +service routing protocols model multi-agent +! +hostname om-pe22 +ip name-server vrf MGMT 1.1.1.1 +ip name-server vrf MGMT 8.8.8.8 +! +ntp server vrf MGMT time.google.com prefer iburst +! +spanning-tree mode mstp +spanning-tree mst 0 priority 4096 +! +no enable password +no aaa root +! +username admin privilege 15 role network-admin secret sha512 $6$7GTxsrRjnwheeKfR$zhJ8qycVjAJz41rf5JRSfWIzp93IL5WL7sMS/Taz1yfShz.MAnoajCf7R2n1/EZW7PN5QA3Huayl0lVQesBYN1 +! +vlan 110 + name Tenant_A_OP_Zone_1 +! +vlan 111 + name Tenant_A_OP_Zone_2 +! +vrf instance MGMT +! +interface Port-Channel3 + description server03_PortChannel3 + no shutdown + switchport + switchport trunk allowed vlan 110 + switchport mode trunk + evpn ethernet-segment + identifier 0000:0000:0201:0202:0033 + route-target import 02:01:02:02:00:33 + lacp system-id 0201.0202.0033 + spanning-tree portfast +! +interface Port-Channel4 + description server04_PortChannel4 + no shutdown + switchport + switchport trunk allowed vlan 111 + switchport mode trunk + evpn ethernet-segment + identifier 0000:0000:0201:0202:0044 + route-target import 02:01:02:02:00:44 + lacp system-id 0201.0202.0044 + spanning-tree portfast +! +interface Ethernet1 + description P2P_LINK_TO_OM-SPINE1_Ethernet4 + no shutdown + mtu 9214 + no switchport + ip address 172.31.255.13/31 +! +interface Ethernet2 + description P2P_LINK_TO_OM-SPINE2_Ethernet4 + no shutdown + mtu 9214 + no switchport + ip address 172.31.255.15/31 +! +interface Ethernet3 + description server03_Eth2 + no shutdown + channel-group 3 mode active +! +interface Ethernet4 + description server04_Eth2 + no shutdown + channel-group 4 mode active +! +interface Loopback0 + description EVPN_Overlay_Peering + no shutdown + ip address 192.168.255.6/32 +! +interface Loopback1 + description VTEP_VXLAN_Tunnel_Source + no shutdown + ip address 192.168.254.6/32 +! +interface Management0 + description oob_management + no shutdown + vrf MGMT + ip address 172.144.100.7/24 +! +interface Vlan110 + description Tenant_A_OP_Zone_1 + no shutdown + ip address virtual 10.1.10.1/24 +! +interface Vlan111 + description Tenant_A_OP_Zone_2 + no shutdown + ip address virtual 10.1.11.1/24 +! +interface Vxlan1 + description om-pe22_VTEP + vxlan source-interface Loopback1 + vxlan udp-port 4789 + vxlan vlan 110 vni 10110 + vxlan vlan 111 vni 10111 +! +ip virtual-router mac-address 00:00:00:00:00:01 +! +ip routing +no ip routing vrf MGMT +! +ip prefix-list PL-LOOPBACKS-EVPN-OVERLAY + seq 10 permit 192.168.255.0/24 eq 32 + seq 20 permit 192.168.254.0/24 eq 32 +! +ip route vrf MGMT 0.0.0.0/0 172.144.100.1 +! +route-map RM-CONN-2-BGP permit 10 + match ip address prefix-list PL-LOOPBACKS-EVPN-OVERLAY +! +router bfd + multihop interval 300 min-rx 300 multiplier 3 +! +router bgp 65104 + router-id 192.168.255.6 + distance bgp 20 200 200 + maximum-paths 4 ecmp 4 + no bgp default ipv4-unicast + neighbor EVPN-OVERLAY-PEERS peer group + neighbor EVPN-OVERLAY-PEERS update-source Loopback0 + neighbor EVPN-OVERLAY-PEERS bfd + neighbor EVPN-OVERLAY-PEERS ebgp-multihop 3 + neighbor EVPN-OVERLAY-PEERS password 7 q+VNViP5i4rVjW1cxFv2wA== + neighbor EVPN-OVERLAY-PEERS send-community + neighbor EVPN-OVERLAY-PEERS maximum-routes 0 + neighbor IPv4-UNDERLAY-PEERS peer group + neighbor IPv4-UNDERLAY-PEERS password 7 AQQvKeimxJu+uGQ/yYvv9w== + neighbor IPv4-UNDERLAY-PEERS send-community + neighbor IPv4-UNDERLAY-PEERS maximum-routes 12000 + neighbor 172.31.255.12 peer group IPv4-UNDERLAY-PEERS + neighbor 172.31.255.12 remote-as 65001 + neighbor 172.31.255.12 description om-spine1_Ethernet4 + neighbor 172.31.255.14 peer group IPv4-UNDERLAY-PEERS + neighbor 172.31.255.14 remote-as 65001 + neighbor 172.31.255.14 description om-spine2_Ethernet4 + neighbor 192.168.255.1 peer group EVPN-OVERLAY-PEERS + neighbor 192.168.255.1 remote-as 65001 + neighbor 192.168.255.1 description om-spine1 + neighbor 192.168.255.2 peer group EVPN-OVERLAY-PEERS + neighbor 192.168.255.2 remote-as 65001 + neighbor 192.168.255.2 description om-spine2 + redistribute connected route-map RM-CONN-2-BGP + ! + vlan 110 + rd 192.168.255.6:10110 + route-target both 10110:10110 + redistribute learned + ! + vlan 111 + rd 192.168.255.6:10111 + route-target both 10111:10111 + redistribute learned + ! + address-family evpn + neighbor EVPN-OVERLAY-PEERS activate + ! + address-family rt-membership + neighbor EVPN-OVERLAY-PEERS activate + ! + address-family ipv4 + no neighbor EVPN-OVERLAY-PEERS activate + neighbor IPv4-UNDERLAY-PEERS activate +! +management api http-commands + protocol https + protocol https ssl profile eAPI + no shutdown + ! + vrf MGMT + no shutdown +! +management api gnmi + transport grpc MGMT + vrf MGMT + notification timestamp send-time + transport grpc default + notification timestamp send-time + provider eos-native +! +management security + ssl profile eAPI + cipher-list HIGH:!eNULL:!aNULL:!MD5:!ADH:!ANULL + certificate eAPI.crt key eAPI.key +! +end diff --git a/labs/gnmic-prometheus-grafana/intended/configs/om-spine1.cfg b/labs/gnmic-prometheus-grafana/intended/configs/om-spine1.cfg new file mode 100644 index 0000000..9579ab7 --- /dev/null +++ b/labs/gnmic-prometheus-grafana/intended/configs/om-spine1.cfg @@ -0,0 +1,152 @@ +!RANCID-CONTENT-TYPE: arista +! +vlan internal order ascending range 1006 1199 +! +transceiver qsfp default-mode 4x10G +! +service routing protocols model multi-agent +! +hostname om-spine1 +ip name-server vrf MGMT 1.1.1.1 +ip name-server vrf MGMT 8.8.8.8 +! +ntp server vrf MGMT time.google.com prefer iburst +! +spanning-tree mode mstp +! +no enable password +no aaa root +! +username admin privilege 15 role network-admin secret sha512 $6$7GTxsrRjnwheeKfR$zhJ8qycVjAJz41rf5JRSfWIzp93IL5WL7sMS/Taz1yfShz.MAnoajCf7R2n1/EZW7PN5QA3Huayl0lVQesBYN1 +! +vrf instance MGMT +! +interface Ethernet1 + description P2P_LINK_TO_OM-PE11_Ethernet1 + no shutdown + mtu 9214 + no switchport + ip address 172.31.255.0/31 +! +interface Ethernet2 + description P2P_LINK_TO_OM-PE12_Ethernet1 + no shutdown + mtu 9214 + no switchport + ip address 172.31.255.4/31 +! +interface Ethernet3 + description P2P_LINK_TO_OM-PE21_Ethernet1 + no shutdown + mtu 9214 + no switchport + ip address 172.31.255.8/31 +! +interface Ethernet4 + description P2P_LINK_TO_OM-PE22_Ethernet1 + no shutdown + mtu 9214 + no switchport + ip address 172.31.255.12/31 +! +interface Loopback0 + description EVPN_Overlay_Peering + no shutdown + ip address 192.168.255.1/32 +! +interface Management0 + description oob_management + no shutdown + vrf MGMT + ip address 172.144.100.2/24 +! +ip routing +no ip routing vrf MGMT +! +ip prefix-list PL-LOOPBACKS-EVPN-OVERLAY + seq 10 permit 192.168.255.0/24 eq 32 +! +ip route vrf MGMT 0.0.0.0/0 172.144.100.1 +! +route-map RM-CONN-2-BGP permit 10 + match ip address prefix-list PL-LOOPBACKS-EVPN-OVERLAY +! +router bfd + multihop interval 300 min-rx 300 multiplier 3 +! +router bgp 65001 + router-id 192.168.255.1 + distance bgp 20 200 200 + maximum-paths 4 ecmp 4 + no bgp default ipv4-unicast + neighbor EVPN-OVERLAY-PEERS peer group + neighbor EVPN-OVERLAY-PEERS next-hop-unchanged + neighbor EVPN-OVERLAY-PEERS update-source Loopback0 + neighbor EVPN-OVERLAY-PEERS bfd + neighbor EVPN-OVERLAY-PEERS ebgp-multihop 3 + neighbor EVPN-OVERLAY-PEERS password 7 q+VNViP5i4rVjW1cxFv2wA== + neighbor EVPN-OVERLAY-PEERS send-community + neighbor EVPN-OVERLAY-PEERS maximum-routes 0 + neighbor IPv4-UNDERLAY-PEERS peer group + neighbor IPv4-UNDERLAY-PEERS password 7 AQQvKeimxJu+uGQ/yYvv9w== + neighbor IPv4-UNDERLAY-PEERS send-community + neighbor IPv4-UNDERLAY-PEERS maximum-routes 12000 + neighbor 172.31.255.1 peer group IPv4-UNDERLAY-PEERS + neighbor 172.31.255.1 remote-as 65101 + neighbor 172.31.255.1 description om-pe11_Ethernet1 + neighbor 172.31.255.5 peer group IPv4-UNDERLAY-PEERS + neighbor 172.31.255.5 remote-as 65102 + neighbor 172.31.255.5 description om-pe12_Ethernet1 + neighbor 172.31.255.9 peer group IPv4-UNDERLAY-PEERS + neighbor 172.31.255.9 remote-as 65103 + neighbor 172.31.255.9 description om-pe21_Ethernet1 + neighbor 172.31.255.13 peer group IPv4-UNDERLAY-PEERS + neighbor 172.31.255.13 remote-as 65104 + neighbor 172.31.255.13 description om-pe22_Ethernet1 + neighbor 192.168.255.3 peer group EVPN-OVERLAY-PEERS + neighbor 192.168.255.3 remote-as 65101 + neighbor 192.168.255.3 description om-pe11 + neighbor 192.168.255.4 peer group EVPN-OVERLAY-PEERS + neighbor 192.168.255.4 remote-as 65102 + neighbor 192.168.255.4 description om-pe12 + neighbor 192.168.255.5 peer group EVPN-OVERLAY-PEERS + neighbor 192.168.255.5 remote-as 65103 + neighbor 192.168.255.5 description om-pe21 + neighbor 192.168.255.6 peer group EVPN-OVERLAY-PEERS + neighbor 192.168.255.6 remote-as 65104 + neighbor 192.168.255.6 description om-pe22 + redistribute connected route-map RM-CONN-2-BGP + ! + address-family evpn + neighbor EVPN-OVERLAY-PEERS activate + ! + address-family rt-membership + neighbor EVPN-OVERLAY-PEERS activate + neighbor EVPN-OVERLAY-PEERS default-route-target only + ! + address-family ipv4 + no neighbor EVPN-OVERLAY-PEERS activate + neighbor IPv4-UNDERLAY-PEERS activate +! +management api http-commands + protocol https + protocol https ssl profile eAPI + no shutdown + ! + vrf MGMT + no shutdown +! +management api gnmi + transport grpc MGMT + vrf MGMT + notification timestamp send-time + transport grpc default + notification timestamp send-time + provider eos-native +! +management security + ssl profile eAPI + cipher-list HIGH:!eNULL:!aNULL:!MD5:!ADH:!ANULL + certificate eAPI.crt key eAPI.key +! +end diff --git a/labs/gnmic-prometheus-grafana/intended/configs/om-spine2.cfg b/labs/gnmic-prometheus-grafana/intended/configs/om-spine2.cfg new file mode 100644 index 0000000..54ddb85 --- /dev/null +++ b/labs/gnmic-prometheus-grafana/intended/configs/om-spine2.cfg @@ -0,0 +1,152 @@ +!RANCID-CONTENT-TYPE: arista +! +vlan internal order ascending range 1006 1199 +! +transceiver qsfp default-mode 4x10G +! +service routing protocols model multi-agent +! +hostname om-spine2 +ip name-server vrf MGMT 1.1.1.1 +ip name-server vrf MGMT 8.8.8.8 +! +ntp server vrf MGMT time.google.com prefer iburst +! +spanning-tree mode mstp +! +no enable password +no aaa root +! +username admin privilege 15 role network-admin secret sha512 $6$7GTxsrRjnwheeKfR$zhJ8qycVjAJz41rf5JRSfWIzp93IL5WL7sMS/Taz1yfShz.MAnoajCf7R2n1/EZW7PN5QA3Huayl0lVQesBYN1 +! +vrf instance MGMT +! +interface Ethernet1 + description P2P_LINK_TO_OM-PE11_Ethernet2 + no shutdown + mtu 9214 + no switchport + ip address 172.31.255.2/31 +! +interface Ethernet2 + description P2P_LINK_TO_OM-PE12_Ethernet2 + no shutdown + mtu 9214 + no switchport + ip address 172.31.255.6/31 +! +interface Ethernet3 + description P2P_LINK_TO_OM-PE21_Ethernet2 + no shutdown + mtu 9214 + no switchport + ip address 172.31.255.10/31 +! +interface Ethernet4 + description P2P_LINK_TO_OM-PE22_Ethernet2 + no shutdown + mtu 9214 + no switchport + ip address 172.31.255.14/31 +! +interface Loopback0 + description EVPN_Overlay_Peering + no shutdown + ip address 192.168.255.2/32 +! +interface Management0 + description oob_management + no shutdown + vrf MGMT + ip address 172.144.100.3/24 +! +ip routing +no ip routing vrf MGMT +! +ip prefix-list PL-LOOPBACKS-EVPN-OVERLAY + seq 10 permit 192.168.255.0/24 eq 32 +! +ip route vrf MGMT 0.0.0.0/0 172.144.100.1 +! +route-map RM-CONN-2-BGP permit 10 + match ip address prefix-list PL-LOOPBACKS-EVPN-OVERLAY +! +router bfd + multihop interval 300 min-rx 300 multiplier 3 +! +router bgp 65001 + router-id 192.168.255.2 + distance bgp 20 200 200 + maximum-paths 4 ecmp 4 + no bgp default ipv4-unicast + neighbor EVPN-OVERLAY-PEERS peer group + neighbor EVPN-OVERLAY-PEERS next-hop-unchanged + neighbor EVPN-OVERLAY-PEERS update-source Loopback0 + neighbor EVPN-OVERLAY-PEERS bfd + neighbor EVPN-OVERLAY-PEERS ebgp-multihop 3 + neighbor EVPN-OVERLAY-PEERS password 7 q+VNViP5i4rVjW1cxFv2wA== + neighbor EVPN-OVERLAY-PEERS send-community + neighbor EVPN-OVERLAY-PEERS maximum-routes 0 + neighbor IPv4-UNDERLAY-PEERS peer group + neighbor IPv4-UNDERLAY-PEERS password 7 AQQvKeimxJu+uGQ/yYvv9w== + neighbor IPv4-UNDERLAY-PEERS send-community + neighbor IPv4-UNDERLAY-PEERS maximum-routes 12000 + neighbor 172.31.255.3 peer group IPv4-UNDERLAY-PEERS + neighbor 172.31.255.3 remote-as 65101 + neighbor 172.31.255.3 description om-pe11_Ethernet2 + neighbor 172.31.255.7 peer group IPv4-UNDERLAY-PEERS + neighbor 172.31.255.7 remote-as 65102 + neighbor 172.31.255.7 description om-pe12_Ethernet2 + neighbor 172.31.255.11 peer group IPv4-UNDERLAY-PEERS + neighbor 172.31.255.11 remote-as 65103 + neighbor 172.31.255.11 description om-pe21_Ethernet2 + neighbor 172.31.255.15 peer group IPv4-UNDERLAY-PEERS + neighbor 172.31.255.15 remote-as 65104 + neighbor 172.31.255.15 description om-pe22_Ethernet2 + neighbor 192.168.255.3 peer group EVPN-OVERLAY-PEERS + neighbor 192.168.255.3 remote-as 65101 + neighbor 192.168.255.3 description om-pe11 + neighbor 192.168.255.4 peer group EVPN-OVERLAY-PEERS + neighbor 192.168.255.4 remote-as 65102 + neighbor 192.168.255.4 description om-pe12 + neighbor 192.168.255.5 peer group EVPN-OVERLAY-PEERS + neighbor 192.168.255.5 remote-as 65103 + neighbor 192.168.255.5 description om-pe21 + neighbor 192.168.255.6 peer group EVPN-OVERLAY-PEERS + neighbor 192.168.255.6 remote-as 65104 + neighbor 192.168.255.6 description om-pe22 + redistribute connected route-map RM-CONN-2-BGP + ! + address-family evpn + neighbor EVPN-OVERLAY-PEERS activate + ! + address-family rt-membership + neighbor EVPN-OVERLAY-PEERS activate + neighbor EVPN-OVERLAY-PEERS default-route-target only + ! + address-family ipv4 + no neighbor EVPN-OVERLAY-PEERS activate + neighbor IPv4-UNDERLAY-PEERS activate +! +management api http-commands + protocol https + protocol https ssl profile eAPI + no shutdown + ! + vrf MGMT + no shutdown +! +management api gnmi + transport grpc MGMT + vrf MGMT + notification timestamp send-time + transport grpc default + notification timestamp send-time + provider eos-native +! +management security + ssl profile eAPI + cipher-list HIGH:!eNULL:!aNULL:!MD5:!ADH:!ANULL + certificate eAPI.crt key eAPI.key +! +end diff --git a/labs/gnmic-prometheus-grafana/intended/structured_configs/om-pe11.yml b/labs/gnmic-prometheus-grafana/intended/structured_configs/om-pe11.yml new file mode 100644 index 0000000..ee35546 --- /dev/null +++ b/labs/gnmic-prometheus-grafana/intended/structured_configs/om-pe11.yml @@ -0,0 +1,257 @@ +hostname: om-pe11 +is_deployed: true +router_bgp: + as: '65101' + router_id: 192.168.255.3 + distance: + external_routes: 20 + internal_routes: 200 + local_routes: 200 + bgp: + default: + ipv4_unicast: false + maximum_paths: + paths: 4 + ecmp: 4 + peer_groups: + - name: IPv4-UNDERLAY-PEERS + type: ipv4 + password: AQQvKeimxJu+uGQ/yYvv9w== + maximum_routes: 12000 + send_community: all + - name: EVPN-OVERLAY-PEERS + type: evpn + update_source: Loopback0 + bfd: true + password: q+VNViP5i4rVjW1cxFv2wA== + send_community: all + maximum_routes: 0 + ebgp_multihop: 3 + address_family_ipv4: + peer_groups: + - name: IPv4-UNDERLAY-PEERS + activate: true + - name: EVPN-OVERLAY-PEERS + activate: false + redistribute_routes: + - source_protocol: connected + route_map: RM-CONN-2-BGP + neighbors: + - ip_address: 172.31.255.0 + peer_group: IPv4-UNDERLAY-PEERS + remote_as: '65001' + peer: om-spine1 + description: om-spine1_Ethernet1 + - ip_address: 172.31.255.2 + peer_group: IPv4-UNDERLAY-PEERS + remote_as: '65001' + peer: om-spine2 + description: om-spine2_Ethernet1 + - ip_address: 192.168.255.1 + peer_group: EVPN-OVERLAY-PEERS + peer: om-spine1 + description: om-spine1 + remote_as: '65001' + - ip_address: 192.168.255.2 + peer_group: EVPN-OVERLAY-PEERS + peer: om-spine2 + description: om-spine2 + remote_as: '65001' + address_family_evpn: + peer_groups: + - name: EVPN-OVERLAY-PEERS + activate: true + address_family_rtc: + peer_groups: + - name: EVPN-OVERLAY-PEERS + activate: true + vlans: + - id: 110 + tenant: Tenant_A + rd: 192.168.255.3:10110 + route_targets: + both: + - 10110:10110 + redistribute_routes: + - learned + - id: 111 + tenant: Tenant_A + rd: 192.168.255.3:10111 + route_targets: + both: + - 10111:10111 + redistribute_routes: + - learned +static_routes: +- vrf: MGMT + destination_address_prefix: 0.0.0.0/0 + gateway: 172.144.100.1 +service_routing_protocols_model: multi-agent +ip_routing: true +vlan_internal_order: + allocation: ascending + range: + beginning: 1006 + ending: 1199 +ip_name_servers: +- ip_address: 1.1.1.1 + vrf: MGMT +- ip_address: 8.8.8.8 + vrf: MGMT +spanning_tree: + mode: mstp + mst_instances: + - id: '0' + priority: 4096 +local_users: +- name: admin + privilege: 15 + role: network-admin + sha512_password: $6$7GTxsrRjnwheeKfR$zhJ8qycVjAJz41rf5JRSfWIzp93IL5WL7sMS/Taz1yfShz.MAnoajCf7R2n1/EZW7PN5QA3Huayl0lVQesBYN1 +vrfs: +- name: MGMT + ip_routing: false +management_interfaces: +- name: Management0 + description: oob_management + shutdown: false + vrf: MGMT + ip_address: 172.144.100.4/24 + gateway: 172.144.100.1 + type: oob +management_api_http: + enable_vrfs: + - name: MGMT + enable_https: true + https_ssl_profile: eAPI +ethernet_interfaces: +- name: Ethernet1 + peer: om-spine1 + peer_interface: Ethernet1 + peer_type: spine + description: P2P_LINK_TO_OM-SPINE1_Ethernet1 + shutdown: false + mtu: 9214 + type: routed + ip_address: 172.31.255.1/31 +- name: Ethernet2 + peer: om-spine2 + peer_interface: Ethernet1 + peer_type: spine + description: P2P_LINK_TO_OM-SPINE2_Ethernet1 + shutdown: false + mtu: 9214 + type: routed + ip_address: 172.31.255.3/31 +- name: Ethernet3 + peer: server01 + peer_interface: Eth1 + peer_type: server + port_profile: Tenant_A_pod1_clientA + description: server01_Eth1 + shutdown: false + type: port-channel-member + channel_group: + id: 3 + mode: active +- name: Ethernet4 + peer: server02 + peer_interface: Eth1 + peer_type: server + port_profile: Tenant_A_pod1_clientB + description: server02_Eth1 + shutdown: false + type: port-channel-member + channel_group: + id: 4 + mode: active +loopback_interfaces: +- name: Loopback0 + description: EVPN_Overlay_Peering + shutdown: false + ip_address: 192.168.255.3/32 +- name: Loopback1 + description: VTEP_VXLAN_Tunnel_Source + shutdown: false + ip_address: 192.168.254.3/32 +prefix_lists: +- name: PL-LOOPBACKS-EVPN-OVERLAY + sequence_numbers: + - sequence: 10 + action: permit 192.168.255.0/24 eq 32 + - sequence: 20 + action: permit 192.168.254.0/24 eq 32 +route_maps: +- name: RM-CONN-2-BGP + sequence_numbers: + - sequence: 10 + type: permit + match: + - ip address prefix-list PL-LOOPBACKS-EVPN-OVERLAY +router_bfd: + multihop: + interval: 300 + min_rx: 300 + multiplier: 3 +vlans: +- id: 110 + name: Tenant_A_OP_Zone_1 + tenant: Tenant_A +- id: 111 + name: Tenant_A_OP_Zone_2 + tenant: Tenant_A +ip_igmp_snooping: + globally_enabled: true +vxlan_interface: + Vxlan1: + description: om-pe11_VTEP + vxlan: + udp_port: 4789 + source_interface: Loopback1 + vlans: + - id: 110 + vni: 10110 + - id: 111 + vni: 10111 +port_channel_interfaces: +- name: Port-Channel3 + description: server01_PortChannel3 + type: switched + shutdown: false + mode: trunk + vlans: '110' + spanning_tree_portfast: edge + evpn_ethernet_segment: + identifier: 0000:0000:0101:0102:0033 + route_target: 01:01:01:02:00:33 + lacp_id: 0101.0102.0033 +- name: Port-Channel4 + description: server02_PortChannel4 + type: switched + shutdown: false + mode: trunk + vlans: '111' + spanning_tree_portfast: edge + evpn_ethernet_segment: + identifier: 0000:0000:0101:0102:0044 + route_target: 01:01:01:02:00:44 + lacp_id: 0101.0102.0044 +metadata: + platform: cEOS-LAB +management_security: + ssl_profiles: + - name: eAPI + certificate: + file: eAPI.crt + key: eAPI.key + cipher_list: HIGH:!eNULL:!aNULL:!MD5:!ADH:!ANULL +vlan_interfaces: +- name: Vlan110 + description: Tenant_A_OP_Zone_1 + shutdown: false + ip_address_virtual: 10.1.10.1/24 +- name: Vlan111 + description: Tenant_A_OP_Zone_2 + shutdown: false + ip_address_virtual: 10.1.11.1/24 +ip_virtual_router_mac_address: 00:00:00:00:00:01 diff --git a/labs/gnmic-prometheus-grafana/intended/structured_configs/om-pe12.yml b/labs/gnmic-prometheus-grafana/intended/structured_configs/om-pe12.yml new file mode 100644 index 0000000..e6089b1 --- /dev/null +++ b/labs/gnmic-prometheus-grafana/intended/structured_configs/om-pe12.yml @@ -0,0 +1,257 @@ +hostname: om-pe12 +is_deployed: true +router_bgp: + as: '65102' + router_id: 192.168.255.4 + distance: + external_routes: 20 + internal_routes: 200 + local_routes: 200 + bgp: + default: + ipv4_unicast: false + maximum_paths: + paths: 4 + ecmp: 4 + peer_groups: + - name: IPv4-UNDERLAY-PEERS + type: ipv4 + password: AQQvKeimxJu+uGQ/yYvv9w== + maximum_routes: 12000 + send_community: all + - name: EVPN-OVERLAY-PEERS + type: evpn + update_source: Loopback0 + bfd: true + password: q+VNViP5i4rVjW1cxFv2wA== + send_community: all + maximum_routes: 0 + ebgp_multihop: 3 + address_family_ipv4: + peer_groups: + - name: IPv4-UNDERLAY-PEERS + activate: true + - name: EVPN-OVERLAY-PEERS + activate: false + redistribute_routes: + - source_protocol: connected + route_map: RM-CONN-2-BGP + neighbors: + - ip_address: 172.31.255.4 + peer_group: IPv4-UNDERLAY-PEERS + remote_as: '65001' + peer: om-spine1 + description: om-spine1_Ethernet2 + - ip_address: 172.31.255.6 + peer_group: IPv4-UNDERLAY-PEERS + remote_as: '65001' + peer: om-spine2 + description: om-spine2_Ethernet2 + - ip_address: 192.168.255.1 + peer_group: EVPN-OVERLAY-PEERS + peer: om-spine1 + description: om-spine1 + remote_as: '65001' + - ip_address: 192.168.255.2 + peer_group: EVPN-OVERLAY-PEERS + peer: om-spine2 + description: om-spine2 + remote_as: '65001' + address_family_evpn: + peer_groups: + - name: EVPN-OVERLAY-PEERS + activate: true + address_family_rtc: + peer_groups: + - name: EVPN-OVERLAY-PEERS + activate: true + vlans: + - id: 110 + tenant: Tenant_A + rd: 192.168.255.4:10110 + route_targets: + both: + - 10110:10110 + redistribute_routes: + - learned + - id: 111 + tenant: Tenant_A + rd: 192.168.255.4:10111 + route_targets: + both: + - 10111:10111 + redistribute_routes: + - learned +static_routes: +- vrf: MGMT + destination_address_prefix: 0.0.0.0/0 + gateway: 172.144.100.1 +service_routing_protocols_model: multi-agent +ip_routing: true +vlan_internal_order: + allocation: ascending + range: + beginning: 1006 + ending: 1199 +ip_name_servers: +- ip_address: 1.1.1.1 + vrf: MGMT +- ip_address: 8.8.8.8 + vrf: MGMT +spanning_tree: + mode: mstp + mst_instances: + - id: '0' + priority: 4096 +local_users: +- name: admin + privilege: 15 + role: network-admin + sha512_password: $6$7GTxsrRjnwheeKfR$zhJ8qycVjAJz41rf5JRSfWIzp93IL5WL7sMS/Taz1yfShz.MAnoajCf7R2n1/EZW7PN5QA3Huayl0lVQesBYN1 +vrfs: +- name: MGMT + ip_routing: false +management_interfaces: +- name: Management0 + description: oob_management + shutdown: false + vrf: MGMT + ip_address: 172.144.100.5/24 + gateway: 172.144.100.1 + type: oob +management_api_http: + enable_vrfs: + - name: MGMT + enable_https: true + https_ssl_profile: eAPI +ethernet_interfaces: +- name: Ethernet1 + peer: om-spine1 + peer_interface: Ethernet2 + peer_type: spine + description: P2P_LINK_TO_OM-SPINE1_Ethernet2 + shutdown: false + mtu: 9214 + type: routed + ip_address: 172.31.255.5/31 +- name: Ethernet2 + peer: om-spine2 + peer_interface: Ethernet2 + peer_type: spine + description: P2P_LINK_TO_OM-SPINE2_Ethernet2 + shutdown: false + mtu: 9214 + type: routed + ip_address: 172.31.255.7/31 +- name: Ethernet3 + peer: server01 + peer_interface: Eth2 + peer_type: server + port_profile: Tenant_A_pod1_clientA + description: server01_Eth2 + shutdown: false + type: port-channel-member + channel_group: + id: 3 + mode: active +- name: Ethernet4 + peer: server02 + peer_interface: Eth2 + peer_type: server + port_profile: Tenant_A_pod1_clientB + description: server02_Eth2 + shutdown: false + type: port-channel-member + channel_group: + id: 4 + mode: active +loopback_interfaces: +- name: Loopback0 + description: EVPN_Overlay_Peering + shutdown: false + ip_address: 192.168.255.4/32 +- name: Loopback1 + description: VTEP_VXLAN_Tunnel_Source + shutdown: false + ip_address: 192.168.254.4/32 +prefix_lists: +- name: PL-LOOPBACKS-EVPN-OVERLAY + sequence_numbers: + - sequence: 10 + action: permit 192.168.255.0/24 eq 32 + - sequence: 20 + action: permit 192.168.254.0/24 eq 32 +route_maps: +- name: RM-CONN-2-BGP + sequence_numbers: + - sequence: 10 + type: permit + match: + - ip address prefix-list PL-LOOPBACKS-EVPN-OVERLAY +router_bfd: + multihop: + interval: 300 + min_rx: 300 + multiplier: 3 +vlans: +- id: 110 + name: Tenant_A_OP_Zone_1 + tenant: Tenant_A +- id: 111 + name: Tenant_A_OP_Zone_2 + tenant: Tenant_A +ip_igmp_snooping: + globally_enabled: true +vxlan_interface: + Vxlan1: + description: om-pe12_VTEP + vxlan: + udp_port: 4789 + source_interface: Loopback1 + vlans: + - id: 110 + vni: 10110 + - id: 111 + vni: 10111 +port_channel_interfaces: +- name: Port-Channel3 + description: server01_PortChannel3 + type: switched + shutdown: false + mode: trunk + vlans: '110' + spanning_tree_portfast: edge + evpn_ethernet_segment: + identifier: 0000:0000:0101:0102:0033 + route_target: 01:01:01:02:00:33 + lacp_id: 0101.0102.0033 +- name: Port-Channel4 + description: server02_PortChannel4 + type: switched + shutdown: false + mode: trunk + vlans: '111' + spanning_tree_portfast: edge + evpn_ethernet_segment: + identifier: 0000:0000:0101:0102:0044 + route_target: 01:01:01:02:00:44 + lacp_id: 0101.0102.0044 +metadata: + platform: cEOS-LAB +management_security: + ssl_profiles: + - name: eAPI + certificate: + file: eAPI.crt + key: eAPI.key + cipher_list: HIGH:!eNULL:!aNULL:!MD5:!ADH:!ANULL +vlan_interfaces: +- name: Vlan110 + description: Tenant_A_OP_Zone_1 + shutdown: false + ip_address_virtual: 10.1.10.1/24 +- name: Vlan111 + description: Tenant_A_OP_Zone_2 + shutdown: false + ip_address_virtual: 10.1.11.1/24 +ip_virtual_router_mac_address: 00:00:00:00:00:01 diff --git a/labs/gnmic-prometheus-grafana/intended/structured_configs/om-pe21.yml b/labs/gnmic-prometheus-grafana/intended/structured_configs/om-pe21.yml new file mode 100644 index 0000000..021d3f1 --- /dev/null +++ b/labs/gnmic-prometheus-grafana/intended/structured_configs/om-pe21.yml @@ -0,0 +1,257 @@ +hostname: om-pe21 +is_deployed: true +router_bgp: + as: '65103' + router_id: 192.168.255.5 + distance: + external_routes: 20 + internal_routes: 200 + local_routes: 200 + bgp: + default: + ipv4_unicast: false + maximum_paths: + paths: 4 + ecmp: 4 + peer_groups: + - name: IPv4-UNDERLAY-PEERS + type: ipv4 + password: AQQvKeimxJu+uGQ/yYvv9w== + maximum_routes: 12000 + send_community: all + - name: EVPN-OVERLAY-PEERS + type: evpn + update_source: Loopback0 + bfd: true + password: q+VNViP5i4rVjW1cxFv2wA== + send_community: all + maximum_routes: 0 + ebgp_multihop: 3 + address_family_ipv4: + peer_groups: + - name: IPv4-UNDERLAY-PEERS + activate: true + - name: EVPN-OVERLAY-PEERS + activate: false + redistribute_routes: + - source_protocol: connected + route_map: RM-CONN-2-BGP + neighbors: + - ip_address: 172.31.255.8 + peer_group: IPv4-UNDERLAY-PEERS + remote_as: '65001' + peer: om-spine1 + description: om-spine1_Ethernet3 + - ip_address: 172.31.255.10 + peer_group: IPv4-UNDERLAY-PEERS + remote_as: '65001' + peer: om-spine2 + description: om-spine2_Ethernet3 + - ip_address: 192.168.255.1 + peer_group: EVPN-OVERLAY-PEERS + peer: om-spine1 + description: om-spine1 + remote_as: '65001' + - ip_address: 192.168.255.2 + peer_group: EVPN-OVERLAY-PEERS + peer: om-spine2 + description: om-spine2 + remote_as: '65001' + address_family_evpn: + peer_groups: + - name: EVPN-OVERLAY-PEERS + activate: true + address_family_rtc: + peer_groups: + - name: EVPN-OVERLAY-PEERS + activate: true + vlans: + - id: 110 + tenant: Tenant_A + rd: 192.168.255.5:10110 + route_targets: + both: + - 10110:10110 + redistribute_routes: + - learned + - id: 111 + tenant: Tenant_A + rd: 192.168.255.5:10111 + route_targets: + both: + - 10111:10111 + redistribute_routes: + - learned +static_routes: +- vrf: MGMT + destination_address_prefix: 0.0.0.0/0 + gateway: 172.144.100.1 +service_routing_protocols_model: multi-agent +ip_routing: true +vlan_internal_order: + allocation: ascending + range: + beginning: 1006 + ending: 1199 +ip_name_servers: +- ip_address: 1.1.1.1 + vrf: MGMT +- ip_address: 8.8.8.8 + vrf: MGMT +spanning_tree: + mode: mstp + mst_instances: + - id: '0' + priority: 4096 +local_users: +- name: admin + privilege: 15 + role: network-admin + sha512_password: $6$7GTxsrRjnwheeKfR$zhJ8qycVjAJz41rf5JRSfWIzp93IL5WL7sMS/Taz1yfShz.MAnoajCf7R2n1/EZW7PN5QA3Huayl0lVQesBYN1 +vrfs: +- name: MGMT + ip_routing: false +management_interfaces: +- name: Management0 + description: oob_management + shutdown: false + vrf: MGMT + ip_address: 172.144.100.6/24 + gateway: 172.144.100.1 + type: oob +management_api_http: + enable_vrfs: + - name: MGMT + enable_https: true + https_ssl_profile: eAPI +ethernet_interfaces: +- name: Ethernet1 + peer: om-spine1 + peer_interface: Ethernet3 + peer_type: spine + description: P2P_LINK_TO_OM-SPINE1_Ethernet3 + shutdown: false + mtu: 9214 + type: routed + ip_address: 172.31.255.9/31 +- name: Ethernet2 + peer: om-spine2 + peer_interface: Ethernet3 + peer_type: spine + description: P2P_LINK_TO_OM-SPINE2_Ethernet3 + shutdown: false + mtu: 9214 + type: routed + ip_address: 172.31.255.11/31 +- name: Ethernet3 + peer: server03 + peer_interface: Eth1 + peer_type: server + port_profile: Tenant_A_pod1_clientA + description: server03_Eth1 + shutdown: false + type: port-channel-member + channel_group: + id: 3 + mode: active +- name: Ethernet4 + peer: server04 + peer_interface: Eth1 + peer_type: server + port_profile: Tenant_A_pod1_clientB + description: server04_Eth1 + shutdown: false + type: port-channel-member + channel_group: + id: 4 + mode: active +loopback_interfaces: +- name: Loopback0 + description: EVPN_Overlay_Peering + shutdown: false + ip_address: 192.168.255.5/32 +- name: Loopback1 + description: VTEP_VXLAN_Tunnel_Source + shutdown: false + ip_address: 192.168.254.5/32 +prefix_lists: +- name: PL-LOOPBACKS-EVPN-OVERLAY + sequence_numbers: + - sequence: 10 + action: permit 192.168.255.0/24 eq 32 + - sequence: 20 + action: permit 192.168.254.0/24 eq 32 +route_maps: +- name: RM-CONN-2-BGP + sequence_numbers: + - sequence: 10 + type: permit + match: + - ip address prefix-list PL-LOOPBACKS-EVPN-OVERLAY +router_bfd: + multihop: + interval: 300 + min_rx: 300 + multiplier: 3 +vlans: +- id: 110 + name: Tenant_A_OP_Zone_1 + tenant: Tenant_A +- id: 111 + name: Tenant_A_OP_Zone_2 + tenant: Tenant_A +ip_igmp_snooping: + globally_enabled: true +vxlan_interface: + Vxlan1: + description: om-pe21_VTEP + vxlan: + udp_port: 4789 + source_interface: Loopback1 + vlans: + - id: 110 + vni: 10110 + - id: 111 + vni: 10111 +port_channel_interfaces: +- name: Port-Channel3 + description: server03_PortChannel3 + type: switched + shutdown: false + mode: trunk + vlans: '110' + spanning_tree_portfast: edge + evpn_ethernet_segment: + identifier: 0000:0000:0201:0202:0033 + route_target: 02:01:02:02:00:33 + lacp_id: 0201.0202.0033 +- name: Port-Channel4 + description: server04_PortChannel4 + type: switched + shutdown: false + mode: trunk + vlans: '111' + spanning_tree_portfast: edge + evpn_ethernet_segment: + identifier: 0000:0000:0201:0202:0044 + route_target: 02:01:02:02:00:44 + lacp_id: 0201.0202.0044 +metadata: + platform: cEOS-LAB +management_security: + ssl_profiles: + - name: eAPI + certificate: + file: eAPI.crt + key: eAPI.key + cipher_list: HIGH:!eNULL:!aNULL:!MD5:!ADH:!ANULL +vlan_interfaces: +- name: Vlan110 + description: Tenant_A_OP_Zone_1 + shutdown: false + ip_address_virtual: 10.1.10.1/24 +- name: Vlan111 + description: Tenant_A_OP_Zone_2 + shutdown: false + ip_address_virtual: 10.1.11.1/24 +ip_virtual_router_mac_address: 00:00:00:00:00:01 diff --git a/labs/gnmic-prometheus-grafana/intended/structured_configs/om-pe22.yml b/labs/gnmic-prometheus-grafana/intended/structured_configs/om-pe22.yml new file mode 100644 index 0000000..59b89fe --- /dev/null +++ b/labs/gnmic-prometheus-grafana/intended/structured_configs/om-pe22.yml @@ -0,0 +1,257 @@ +hostname: om-pe22 +is_deployed: true +router_bgp: + as: '65104' + router_id: 192.168.255.6 + distance: + external_routes: 20 + internal_routes: 200 + local_routes: 200 + bgp: + default: + ipv4_unicast: false + maximum_paths: + paths: 4 + ecmp: 4 + peer_groups: + - name: IPv4-UNDERLAY-PEERS + type: ipv4 + password: AQQvKeimxJu+uGQ/yYvv9w== + maximum_routes: 12000 + send_community: all + - name: EVPN-OVERLAY-PEERS + type: evpn + update_source: Loopback0 + bfd: true + password: q+VNViP5i4rVjW1cxFv2wA== + send_community: all + maximum_routes: 0 + ebgp_multihop: 3 + address_family_ipv4: + peer_groups: + - name: IPv4-UNDERLAY-PEERS + activate: true + - name: EVPN-OVERLAY-PEERS + activate: false + redistribute_routes: + - source_protocol: connected + route_map: RM-CONN-2-BGP + neighbors: + - ip_address: 172.31.255.12 + peer_group: IPv4-UNDERLAY-PEERS + remote_as: '65001' + peer: om-spine1 + description: om-spine1_Ethernet4 + - ip_address: 172.31.255.14 + peer_group: IPv4-UNDERLAY-PEERS + remote_as: '65001' + peer: om-spine2 + description: om-spine2_Ethernet4 + - ip_address: 192.168.255.1 + peer_group: EVPN-OVERLAY-PEERS + peer: om-spine1 + description: om-spine1 + remote_as: '65001' + - ip_address: 192.168.255.2 + peer_group: EVPN-OVERLAY-PEERS + peer: om-spine2 + description: om-spine2 + remote_as: '65001' + address_family_evpn: + peer_groups: + - name: EVPN-OVERLAY-PEERS + activate: true + address_family_rtc: + peer_groups: + - name: EVPN-OVERLAY-PEERS + activate: true + vlans: + - id: 110 + tenant: Tenant_A + rd: 192.168.255.6:10110 + route_targets: + both: + - 10110:10110 + redistribute_routes: + - learned + - id: 111 + tenant: Tenant_A + rd: 192.168.255.6:10111 + route_targets: + both: + - 10111:10111 + redistribute_routes: + - learned +static_routes: +- vrf: MGMT + destination_address_prefix: 0.0.0.0/0 + gateway: 172.144.100.1 +service_routing_protocols_model: multi-agent +ip_routing: true +vlan_internal_order: + allocation: ascending + range: + beginning: 1006 + ending: 1199 +ip_name_servers: +- ip_address: 1.1.1.1 + vrf: MGMT +- ip_address: 8.8.8.8 + vrf: MGMT +spanning_tree: + mode: mstp + mst_instances: + - id: '0' + priority: 4096 +local_users: +- name: admin + privilege: 15 + role: network-admin + sha512_password: $6$7GTxsrRjnwheeKfR$zhJ8qycVjAJz41rf5JRSfWIzp93IL5WL7sMS/Taz1yfShz.MAnoajCf7R2n1/EZW7PN5QA3Huayl0lVQesBYN1 +vrfs: +- name: MGMT + ip_routing: false +management_interfaces: +- name: Management0 + description: oob_management + shutdown: false + vrf: MGMT + ip_address: 172.144.100.7/24 + gateway: 172.144.100.1 + type: oob +management_api_http: + enable_vrfs: + - name: MGMT + enable_https: true + https_ssl_profile: eAPI +ethernet_interfaces: +- name: Ethernet1 + peer: om-spine1 + peer_interface: Ethernet4 + peer_type: spine + description: P2P_LINK_TO_OM-SPINE1_Ethernet4 + shutdown: false + mtu: 9214 + type: routed + ip_address: 172.31.255.13/31 +- name: Ethernet2 + peer: om-spine2 + peer_interface: Ethernet4 + peer_type: spine + description: P2P_LINK_TO_OM-SPINE2_Ethernet4 + shutdown: false + mtu: 9214 + type: routed + ip_address: 172.31.255.15/31 +- name: Ethernet3 + peer: server03 + peer_interface: Eth2 + peer_type: server + port_profile: Tenant_A_pod1_clientA + description: server03_Eth2 + shutdown: false + type: port-channel-member + channel_group: + id: 3 + mode: active +- name: Ethernet4 + peer: server04 + peer_interface: Eth2 + peer_type: server + port_profile: Tenant_A_pod1_clientB + description: server04_Eth2 + shutdown: false + type: port-channel-member + channel_group: + id: 4 + mode: active +loopback_interfaces: +- name: Loopback0 + description: EVPN_Overlay_Peering + shutdown: false + ip_address: 192.168.255.6/32 +- name: Loopback1 + description: VTEP_VXLAN_Tunnel_Source + shutdown: false + ip_address: 192.168.254.6/32 +prefix_lists: +- name: PL-LOOPBACKS-EVPN-OVERLAY + sequence_numbers: + - sequence: 10 + action: permit 192.168.255.0/24 eq 32 + - sequence: 20 + action: permit 192.168.254.0/24 eq 32 +route_maps: +- name: RM-CONN-2-BGP + sequence_numbers: + - sequence: 10 + type: permit + match: + - ip address prefix-list PL-LOOPBACKS-EVPN-OVERLAY +router_bfd: + multihop: + interval: 300 + min_rx: 300 + multiplier: 3 +vlans: +- id: 110 + name: Tenant_A_OP_Zone_1 + tenant: Tenant_A +- id: 111 + name: Tenant_A_OP_Zone_2 + tenant: Tenant_A +ip_igmp_snooping: + globally_enabled: true +vxlan_interface: + Vxlan1: + description: om-pe22_VTEP + vxlan: + udp_port: 4789 + source_interface: Loopback1 + vlans: + - id: 110 + vni: 10110 + - id: 111 + vni: 10111 +port_channel_interfaces: +- name: Port-Channel3 + description: server03_PortChannel3 + type: switched + shutdown: false + mode: trunk + vlans: '110' + spanning_tree_portfast: edge + evpn_ethernet_segment: + identifier: 0000:0000:0201:0202:0033 + route_target: 02:01:02:02:00:33 + lacp_id: 0201.0202.0033 +- name: Port-Channel4 + description: server04_PortChannel4 + type: switched + shutdown: false + mode: trunk + vlans: '111' + spanning_tree_portfast: edge + evpn_ethernet_segment: + identifier: 0000:0000:0201:0202:0044 + route_target: 02:01:02:02:00:44 + lacp_id: 0201.0202.0044 +metadata: + platform: cEOS-LAB +management_security: + ssl_profiles: + - name: eAPI + certificate: + file: eAPI.crt + key: eAPI.key + cipher_list: HIGH:!eNULL:!aNULL:!MD5:!ADH:!ANULL +vlan_interfaces: +- name: Vlan110 + description: Tenant_A_OP_Zone_1 + shutdown: false + ip_address_virtual: 10.1.10.1/24 +- name: Vlan111 + description: Tenant_A_OP_Zone_2 + shutdown: false + ip_address_virtual: 10.1.11.1/24 +ip_virtual_router_mac_address: 00:00:00:00:00:01 diff --git a/labs/gnmic-prometheus-grafana/intended/structured_configs/om-spine1.yml b/labs/gnmic-prometheus-grafana/intended/structured_configs/om-spine1.yml new file mode 100644 index 0000000..ba607b7 --- /dev/null +++ b/labs/gnmic-prometheus-grafana/intended/structured_configs/om-spine1.yml @@ -0,0 +1,197 @@ +hostname: om-spine1 +is_deployed: true +router_bgp: + as: '65001' + router_id: 192.168.255.1 + distance: + external_routes: 20 + internal_routes: 200 + local_routes: 200 + bgp: + default: + ipv4_unicast: false + maximum_paths: + paths: 4 + ecmp: 4 + peer_groups: + - name: IPv4-UNDERLAY-PEERS + type: ipv4 + password: AQQvKeimxJu+uGQ/yYvv9w== + maximum_routes: 12000 + send_community: all + - name: EVPN-OVERLAY-PEERS + type: evpn + update_source: Loopback0 + bfd: true + password: q+VNViP5i4rVjW1cxFv2wA== + send_community: all + maximum_routes: 0 + ebgp_multihop: 3 + next_hop_unchanged: true + address_family_ipv4: + peer_groups: + - name: IPv4-UNDERLAY-PEERS + activate: true + - name: EVPN-OVERLAY-PEERS + activate: false + redistribute_routes: + - source_protocol: connected + route_map: RM-CONN-2-BGP + neighbors: + - ip_address: 172.31.255.1 + peer_group: IPv4-UNDERLAY-PEERS + remote_as: '65101' + peer: om-pe11 + description: om-pe11_Ethernet1 + - ip_address: 172.31.255.5 + peer_group: IPv4-UNDERLAY-PEERS + remote_as: '65102' + peer: om-pe12 + description: om-pe12_Ethernet1 + - ip_address: 172.31.255.9 + peer_group: IPv4-UNDERLAY-PEERS + remote_as: '65103' + peer: om-pe21 + description: om-pe21_Ethernet1 + - ip_address: 172.31.255.13 + peer_group: IPv4-UNDERLAY-PEERS + remote_as: '65104' + peer: om-pe22 + description: om-pe22_Ethernet1 + - ip_address: 192.168.255.3 + peer_group: EVPN-OVERLAY-PEERS + peer: om-pe11 + description: om-pe11 + remote_as: '65101' + - ip_address: 192.168.255.4 + peer_group: EVPN-OVERLAY-PEERS + peer: om-pe12 + description: om-pe12 + remote_as: '65102' + - ip_address: 192.168.255.5 + peer_group: EVPN-OVERLAY-PEERS + peer: om-pe21 + description: om-pe21 + remote_as: '65103' + - ip_address: 192.168.255.6 + peer_group: EVPN-OVERLAY-PEERS + peer: om-pe22 + description: om-pe22 + remote_as: '65104' + address_family_evpn: + peer_groups: + - name: EVPN-OVERLAY-PEERS + activate: true + address_family_rtc: + peer_groups: + - name: EVPN-OVERLAY-PEERS + activate: true + default_route_target: + only: true +static_routes: +- vrf: MGMT + destination_address_prefix: 0.0.0.0/0 + gateway: 172.144.100.1 +service_routing_protocols_model: multi-agent +ip_routing: true +vlan_internal_order: + allocation: ascending + range: + beginning: 1006 + ending: 1199 +ip_name_servers: +- ip_address: 1.1.1.1 + vrf: MGMT +- ip_address: 8.8.8.8 + vrf: MGMT +spanning_tree: + mode: mstp +local_users: +- name: admin + privilege: 15 + role: network-admin + sha512_password: $6$7GTxsrRjnwheeKfR$zhJ8qycVjAJz41rf5JRSfWIzp93IL5WL7sMS/Taz1yfShz.MAnoajCf7R2n1/EZW7PN5QA3Huayl0lVQesBYN1 +vrfs: +- name: MGMT + ip_routing: false +management_interfaces: +- name: Management0 + description: oob_management + shutdown: false + vrf: MGMT + ip_address: 172.144.100.2/24 + gateway: 172.144.100.1 + type: oob +management_api_http: + enable_vrfs: + - name: MGMT + enable_https: true + https_ssl_profile: eAPI +ethernet_interfaces: +- name: Ethernet1 + peer: om-pe11 + peer_interface: Ethernet1 + peer_type: l3leaf + description: P2P_LINK_TO_OM-PE11_Ethernet1 + shutdown: false + mtu: 9214 + type: routed + ip_address: 172.31.255.0/31 +- name: Ethernet2 + peer: om-pe12 + peer_interface: Ethernet1 + peer_type: l3leaf + description: P2P_LINK_TO_OM-PE12_Ethernet1 + shutdown: false + mtu: 9214 + type: routed + ip_address: 172.31.255.4/31 +- name: Ethernet3 + peer: om-pe21 + peer_interface: Ethernet1 + peer_type: l3leaf + description: P2P_LINK_TO_OM-PE21_Ethernet1 + shutdown: false + mtu: 9214 + type: routed + ip_address: 172.31.255.8/31 +- name: Ethernet4 + peer: om-pe22 + peer_interface: Ethernet1 + peer_type: l3leaf + description: P2P_LINK_TO_OM-PE22_Ethernet1 + shutdown: false + mtu: 9214 + type: routed + ip_address: 172.31.255.12/31 +loopback_interfaces: +- name: Loopback0 + description: EVPN_Overlay_Peering + shutdown: false + ip_address: 192.168.255.1/32 +prefix_lists: +- name: PL-LOOPBACKS-EVPN-OVERLAY + sequence_numbers: + - sequence: 10 + action: permit 192.168.255.0/24 eq 32 +route_maps: +- name: RM-CONN-2-BGP + sequence_numbers: + - sequence: 10 + type: permit + match: + - ip address prefix-list PL-LOOPBACKS-EVPN-OVERLAY +router_bfd: + multihop: + interval: 300 + min_rx: 300 + multiplier: 3 +metadata: + platform: cEOS-LAB +management_security: + ssl_profiles: + - name: eAPI + certificate: + file: eAPI.crt + key: eAPI.key + cipher_list: HIGH:!eNULL:!aNULL:!MD5:!ADH:!ANULL diff --git a/labs/gnmic-prometheus-grafana/intended/structured_configs/om-spine2.yml b/labs/gnmic-prometheus-grafana/intended/structured_configs/om-spine2.yml new file mode 100644 index 0000000..603b0f2 --- /dev/null +++ b/labs/gnmic-prometheus-grafana/intended/structured_configs/om-spine2.yml @@ -0,0 +1,197 @@ +hostname: om-spine2 +is_deployed: true +router_bgp: + as: '65001' + router_id: 192.168.255.2 + distance: + external_routes: 20 + internal_routes: 200 + local_routes: 200 + bgp: + default: + ipv4_unicast: false + maximum_paths: + paths: 4 + ecmp: 4 + peer_groups: + - name: IPv4-UNDERLAY-PEERS + type: ipv4 + password: AQQvKeimxJu+uGQ/yYvv9w== + maximum_routes: 12000 + send_community: all + - name: EVPN-OVERLAY-PEERS + type: evpn + update_source: Loopback0 + bfd: true + password: q+VNViP5i4rVjW1cxFv2wA== + send_community: all + maximum_routes: 0 + ebgp_multihop: 3 + next_hop_unchanged: true + address_family_ipv4: + peer_groups: + - name: IPv4-UNDERLAY-PEERS + activate: true + - name: EVPN-OVERLAY-PEERS + activate: false + redistribute_routes: + - source_protocol: connected + route_map: RM-CONN-2-BGP + neighbors: + - ip_address: 172.31.255.3 + peer_group: IPv4-UNDERLAY-PEERS + remote_as: '65101' + peer: om-pe11 + description: om-pe11_Ethernet2 + - ip_address: 172.31.255.7 + peer_group: IPv4-UNDERLAY-PEERS + remote_as: '65102' + peer: om-pe12 + description: om-pe12_Ethernet2 + - ip_address: 172.31.255.11 + peer_group: IPv4-UNDERLAY-PEERS + remote_as: '65103' + peer: om-pe21 + description: om-pe21_Ethernet2 + - ip_address: 172.31.255.15 + peer_group: IPv4-UNDERLAY-PEERS + remote_as: '65104' + peer: om-pe22 + description: om-pe22_Ethernet2 + - ip_address: 192.168.255.3 + peer_group: EVPN-OVERLAY-PEERS + peer: om-pe11 + description: om-pe11 + remote_as: '65101' + - ip_address: 192.168.255.4 + peer_group: EVPN-OVERLAY-PEERS + peer: om-pe12 + description: om-pe12 + remote_as: '65102' + - ip_address: 192.168.255.5 + peer_group: EVPN-OVERLAY-PEERS + peer: om-pe21 + description: om-pe21 + remote_as: '65103' + - ip_address: 192.168.255.6 + peer_group: EVPN-OVERLAY-PEERS + peer: om-pe22 + description: om-pe22 + remote_as: '65104' + address_family_evpn: + peer_groups: + - name: EVPN-OVERLAY-PEERS + activate: true + address_family_rtc: + peer_groups: + - name: EVPN-OVERLAY-PEERS + activate: true + default_route_target: + only: true +static_routes: +- vrf: MGMT + destination_address_prefix: 0.0.0.0/0 + gateway: 172.144.100.1 +service_routing_protocols_model: multi-agent +ip_routing: true +vlan_internal_order: + allocation: ascending + range: + beginning: 1006 + ending: 1199 +ip_name_servers: +- ip_address: 1.1.1.1 + vrf: MGMT +- ip_address: 8.8.8.8 + vrf: MGMT +spanning_tree: + mode: mstp +local_users: +- name: admin + privilege: 15 + role: network-admin + sha512_password: $6$7GTxsrRjnwheeKfR$zhJ8qycVjAJz41rf5JRSfWIzp93IL5WL7sMS/Taz1yfShz.MAnoajCf7R2n1/EZW7PN5QA3Huayl0lVQesBYN1 +vrfs: +- name: MGMT + ip_routing: false +management_interfaces: +- name: Management0 + description: oob_management + shutdown: false + vrf: MGMT + ip_address: 172.144.100.3/24 + gateway: 172.144.100.1 + type: oob +management_api_http: + enable_vrfs: + - name: MGMT + enable_https: true + https_ssl_profile: eAPI +ethernet_interfaces: +- name: Ethernet1 + peer: om-pe11 + peer_interface: Ethernet2 + peer_type: l3leaf + description: P2P_LINK_TO_OM-PE11_Ethernet2 + shutdown: false + mtu: 9214 + type: routed + ip_address: 172.31.255.2/31 +- name: Ethernet2 + peer: om-pe12 + peer_interface: Ethernet2 + peer_type: l3leaf + description: P2P_LINK_TO_OM-PE12_Ethernet2 + shutdown: false + mtu: 9214 + type: routed + ip_address: 172.31.255.6/31 +- name: Ethernet3 + peer: om-pe21 + peer_interface: Ethernet2 + peer_type: l3leaf + description: P2P_LINK_TO_OM-PE21_Ethernet2 + shutdown: false + mtu: 9214 + type: routed + ip_address: 172.31.255.10/31 +- name: Ethernet4 + peer: om-pe22 + peer_interface: Ethernet2 + peer_type: l3leaf + description: P2P_LINK_TO_OM-PE22_Ethernet2 + shutdown: false + mtu: 9214 + type: routed + ip_address: 172.31.255.14/31 +loopback_interfaces: +- name: Loopback0 + description: EVPN_Overlay_Peering + shutdown: false + ip_address: 192.168.255.2/32 +prefix_lists: +- name: PL-LOOPBACKS-EVPN-OVERLAY + sequence_numbers: + - sequence: 10 + action: permit 192.168.255.0/24 eq 32 +route_maps: +- name: RM-CONN-2-BGP + sequence_numbers: + - sequence: 10 + type: permit + match: + - ip address prefix-list PL-LOOPBACKS-EVPN-OVERLAY +router_bfd: + multihop: + interval: 300 + min_rx: 300 + multiplier: 3 +metadata: + platform: cEOS-LAB +management_security: + ssl_profiles: + - name: eAPI + certificate: + file: eAPI.crt + key: eAPI.key + cipher_list: HIGH:!eNULL:!aNULL:!MD5:!ADH:!ANULL diff --git a/labs/gnmic-prometheus-grafana/inventory.yaml b/labs/gnmic-prometheus-grafana/inventory.yaml new file mode 100644 index 0000000..409282a --- /dev/null +++ b/labs/gnmic-prometheus-grafana/inventory.yaml @@ -0,0 +1,41 @@ +all: + children: + AVD_LAB: + children: + OM_FABRIC: + children: + OM_SPINES: + hosts: + om-spine1: + ansible_host: 172.144.100.2 + om-spine2: + ansible_host: 172.144.100.3 + OM_PES: + hosts: + om-pe11: + ansible_host: 172.144.100.4 + om-pe12: + ansible_host: 172.144.100.5 + om-pe21: + ansible_host: 172.144.100.6 + om-pe22: + ansible_host: 172.144.100.7 + + vars: + ansible_connection: httpapi + ansible_httpapi_use_ssl: true + ansible_httpapi_validate_certs: false + ansible_user: admin + ansible_password: admin + ansible_become: true + ansible_become_method: enable + ansible_network_os: eos + ansible_httpapi_port: 443 + ansible_python_interpreter: $(which python3) + OM_NETWORK_SERVICES: + children: + OM_PES: + + OM_CONNECTED_ENDPOINTS: + children: + OM_PES: diff --git a/labs/gnmic-prometheus-grafana/playbooks/fabric-deploy-config.yaml b/labs/gnmic-prometheus-grafana/playbooks/fabric-deploy-config.yaml new file mode 100644 index 0000000..43ca6ea --- /dev/null +++ b/labs/gnmic-prometheus-grafana/playbooks/fabric-deploy-config.yaml @@ -0,0 +1,25 @@ +- name: Build cEOS EVPN VXLAN All-active Multi-homing IRB Fabric (eBGP Overlay and eBGP Underlay) + hosts: OM_FABRIC + tasks: + # - name: Generate EOS configuration Snapshots + # tags: [snapshot] + # import_role: + # name: arista.avd.eos_snapshot + + - name: Generate AVD Structured Configurations and Fabric Documentation + import_role: + name: arista.avd.eos_designs + + - name: Generate Switch Intended Configurations and Documentation + import_role: + name: arista.avd.eos_cli_config_gen + + - name: Deploy generated configuration to devices + tags: [deploy] + import_role: + name: arista.avd.eos_config_deploy_eapi + + # - name: Validate states on EOS devices + # tags: [verify, never] + # import_role: + # name: arista.avd.eos_validate_state diff --git a/mkdocs.yml b/mkdocs.yml index 6cc5232..ae0e768 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -135,3 +135,4 @@ nav: # - Codespaces Quickstart: codespaces-quickstart.md # - Credits: credits.md - Tech Library Labs: tech-library-labs.md + - Telemetry Labs: telemetry.md