https://github.com/netenglabs/suzieq Skip to content Sign up * Product + Features + Mobile + Actions + Codespaces + Copilot + Packages + Security + Code review + Issues + Integrations + GitHub Sponsors + Customer stories * Team * Enterprise * Explore + Explore GitHub + Learn and contribute + Topics + Collections + Trending + Skills + GitHub Sponsors + Open source guides + Connect with others + The ReadME Project + Events + Community forum + GitHub Education + GitHub Stars program * Marketplace * Pricing + Plans + Compare plans + Contact Sales + Education [ ] * # In this repository All GitHub | Jump to | * No suggested jump to results * # In this repository All GitHub | Jump to | * # In this organization All GitHub | Jump to | * # In this repository All GitHub | Jump to | Sign in Sign up {{ message }} netenglabs / suzieq Public * Notifications * Fork 70 * Star 557 Using network observability to operate and design healthier networks www.stardustsystems.net/suzieq/ License Apache-2.0 license 557 stars 70 forks Star Notifications * Code * Issues 75 * Pull requests 6 * Actions * Projects 0 * Wiki * Security * Insights More * Code * Issues * Pull requests * Actions * Projects * Wiki * Security * Insights netenglabs/suzieq This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository. develop Switch branches/tags [ ] Branches Tags Could not load branches Nothing to show {{ refName }} default View all branches Could not load tags Nothing to show {{ refName }} default View all tags 34 branches 39 tags Code Latest commit @ddutt ddutt Add document about throttling requests to AAA servers ... cf74d48 Jun 21, 2022 Add document about throttling requests to AAA servers Signed-off-by: Dinesh Dutt cf74d48 Git stats * 4,918 commits Files Permalink Failed to load latest commit information. Type Name Latest commit message Commit time .github update github actions May 18, 2022 build More library updates due to protobuf mess with stlit and more Jun 6, 2022 docs Add document about throttling requests to AAA servers Jun 21, 2022 images moved integration tests badge to github actions and updated the pictu... Jan 19, 2021 samples Docs new update (#695) Apr 12, 2022 suzieq Bump version to 0.18.0 Jun 20, 2022 tests Fix #719: convert macaddr in all sorts of forms to std format Jun 11, 2022 .bashrc Docker build support Apr 2, 2020 .dockerignore Dockerfile updates (#683) Apr 9, 2022 .flake8 Make max line length match PEP8 recommendation Nov 23, 2021 .gitignore Move all test data into a single dir (#594) Feb 3, 2022 .pre-commit-config.yaml Update .pre-commit-config.yaml Oct 11, 2021 .pylintrc pylintrc: Remove dead enables/disables Jun 6, 2022 .readthedocs.yml Cleanup whitespace (#488) Nov 25, 2021 .travis.yml Cleanup whitespace (#488) Nov 25, 2021 AUTHORS.md Adding authors Apr 27, 2020 CODE_OF_CONDUCT.md Create CODE_OF_CONDUCT.md Aug 28, 2021 CONTRIBUTING.md Fix typo and emphasize directory name Oct 10, 2021 Dockerfile Add docker env var and print warning in case of permission issues (# 699) Apr 12, 2022 Dockerfile-demo Dockerfile updates (#683) Apr 9, 2022 Dockerfile-sqbase Add additional useful packages such as vi/ssh/ping/troute to container Jun 6, 2022 LICENSE Revert the previos commit because it changed the LICENSE for the proj... Apr 1, 2021 README.md Docs new update (#695) Apr 12, 2022 VERSION Cleanup whitespace (#488) Nov 25, 2021 build-docker.sh Fix bug in when latest tag is applied Aug 13, 2021 mkdocs.yml Add document about throttling requests to AAA servers Jun 21, 2022 poetry.lock More library updates due to protobuf mess with stlit and more Jun 6, 2022 pyproject.toml Bump version to 0.18.0 Jun 20, 2022 pytest.ini Restore network commands for backward compatibility (#728) Jun 4, 2022 View code [ ] Suzieq -- Healthier Networks Through Network Observability Quick Start Using Docker Container Using Python Packaging Analysis Path Asserts Suzieq Data Release Notes Engage Additional Documentation & Screencasts Suzieq Priorities README.md integration-tests GitHub release (latest by date) GitHub Docker Image Version (latest by date) Docker Image Size (latest by date) Docker Pulls Suzieq -- Healthier Networks Through Network Observability Would you like to be able to easily answer trivial questions such as how many unique prefixes are there in your routing table, or how many MAC addresses are there in the MAC tables across the network? How about more difficult questions, such as what changes did your routing table see between 10 pm and midnight last night, or which of your nodes have been up the longest, or which BGP sessions have had the most routing updates? How about being able to answer if your OSPF (or BGP) sessions are working correctly, or is all well with your EVPN? How about a quick way to determine the amount of ECMP at every hop between two endpoints? Do you wish you could easily validate the configuration you deployed across your network? Do you login to every network node you have to figure out answers to a questions like these? Do you then struggle to piece the information together into a consistent whole across the various formats provided by various vendors? Do you wish you had an open source, multi-vendor tool that could help you answer questions like these and more? If you answered yes to one or more of these questions, then Suzieq is a tool that we think will be interesting to you. Suzieq helps you find things in your network. Suzieq is both a framework and an application using that framework, that is focused on improving the observability of your network. We define observability as the ability of a system to answer either trivial or complex questions that you pose as you go about operating your network. How easily you can answer your questions is a measure of how good the system's observability is. A good observable system goes well beyond monitoring and alerting. Suzieq is primarily meant for use by network engineers and designers. Suzieq does multiple things. It collects data from devices and systems across your network. It normalizes the data and then stores it in a vendor independent way. Then it allows analysis of that data. With the applications that we build on top of the framework we want to demonstrate a different and more systematic approach to thinking about networks. We want to show how useful it is to think of your network holistically. Quick Start Using Docker Container We want to make it as easy as possible for you to start engaging with Suzieq so we have a demo that has data included in the image. To get started: * docker run -it -p 8501:8501 --name suzieq netenglabs/suzieq-demo * suzieq-cli for the CLI OR * suzieq-gui for the GUI. Connect to http://localhost:8501 via the browser to access the GUI When you're within the suzieq-cli, you can run device unique columns= namespace to see the list of different scenarios, we've gathered data for. Additional information about running the analyzer (suzieq-cli) is available via the official documentation page. To start collecting data for your network, create an inventory file to gather the data from following the instructions here. Decide the directory where the data will be stored (ensure you have sufficient available space if you're going to be running the poller, say 100 MB at least). Lets call this dbdir. Now launch the suzieq docker container as follows: * docker run -it -v :/home/suzieq/parquet -v :/home/suzieq/inventory.yml --name sq-poller netenglabs/suzieq:latest * Launch the poller with the appropriate options. For example, sq-poller -D inventory.yml -n mydatacenter where mydatacenter is the name of the namespace where the data associated with the inventory is stored and inventory.yml is the inventory file in Suzieq poller native format (Use -a instead of -D if you're using Ansible inventory file format). Using Python Packaging If you don't want to use docker container or cannot use a docker container, an alternative approach is to install Suzieq as a python package. It is strongly recommended to install suzieq inside a virtual environment. If you already use a tool to create and manage virtual environments, you can skip the step of creating a virtual envirobment below. Suzieq requires python version 3.7.1 at least, and has been tested with python versions 3.7 and 3.8. It has not been tested to work on Windows. Use Linux (recommended) or macOS. To create a virtual environment, in case you haven't got a tool to create one, type: python -m venv suzieq This creates a directory called suzieq and all suzieq related info is stored there. Switch to that directory and activate the virtual environment with: source activate Now the virtual environment is alive and you can install suzieq. To install suzieq, execute: pip install suzieq Once the command completes, you have the main programs of suzieq available for use: * sq-poller: For polling the devices and gathering the data * suzieq-gui: For launching the GUI * suzieq-cli: For running the CLI * sq-rest-server: For running the REST API server The official documentation is at suzieq.readthedocs.io, and you can watch the screencasts about Suzieq on Youtube. Analysis Suzieq supports Analysis using CLI, GUI, REST API, and python objects. For the most part they are equivalent, though with the GUI we have combined the output of multiple commands of the CLI into one page. The GUI has a status page to let you know what the status of entities in your network. Suzieq GUI status The Xplore page lets you dive into what is in your network. Explore device The CLI supports the same kind of analysis as the explore page. CLI device More examples of the CLI can be seen in the docs and blog posts we've created. Path Suzieq has the ability to show the path between two IP addresses, including the ability to show the path through EVPN overlay. You can use this to see each of the paths from a source to a destination and to see if you have anything asymetrical in your paths. GUI PATH Asserts One of Suzieq's powerful capabilities are asserts, which are statements that should be true in the network. We've only just started on asserts; what Suzieq has now only demonstrates it's power, there's a lot more to be added in this space. interfaces assert Suzieq Data Suzieq supports gathering data from Cumulus, EOS, IOS, IOSXE, IOSXR, JunOS(QFX, MX, EX, SRX supported), NXOS and SONIC routers, and Linux servers. Suzieq gathers: * Basic device info including serial number, model, version, platform etc. * Interfaces * LLDP * MAC address table (VPLS MAC table for Junos MX) * MLAG * Routing table * ARP/ND table * OSPFv2 * BGP * EVPN VNI info We're adding support for more platforms and features with every release. See the documentation on details of specific tables and its NOS support. We're also looking for collaborators to help us make Suzieq a truly useful multi-vendor, open source platform for observing all aspects of networking. Please read the collaboration document for ideas on how you can help. Release Notes The official release notes are here. Engage You can join the conversation via slack. Send email to suzieq AT stardustsystems.net with the email address to send the Slack invitation to. Additional Documentation & Screencasts We've done some blogging about Suzieq: * Introducing Suzieq * 10ish ways to explore your network with Suzieq * Questions to Suzieq * Time in Suzieq We've also been adding screencasts on Youtube. Suzieq Priorities We don't have a roadmap, but we do have a list of our priorities. We mix this with the issues reported. About Using network observability to operate and design healthier networks www.stardustsystems.net/suzieq/ Topics python infrastructure networking data-center network-monitoring network-analysis datacenter network-validation Resources Readme License Apache-2.0 license Code of conduct Code of conduct Stars 557 stars Watchers 29 watching Forks 70 forks Releases 31 0.18.0 Latest Jun 21, 2022 + 30 releases Packages 0 No packages published Contributors 19 * @ddutt * @jopietsch * @anubisg1 * @claudiolor * @LucaNicosia * @claudious96 * @ryanmerolle * @zxiiro * @dependabot[bot] * @aegiacometti * @ewlumpkin + 8 contributors Languages * Python 99.4% * Other 0.6% * (c) 2022 GitHub, Inc. * Terms * Privacy * Security * Status * Docs * Contact GitHub * Pricing * API * Training * Blog * About You can't perform that action at this time. You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.