Skip to content

Commit a44c9c1

Browse files
committed
Merge branch 'develop'
2 parents a6858a0 + 1ce2a5c commit a44c9c1

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

91 files changed

+19787
-44352
lines changed

.readthedocs.yml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,10 @@ mkdocs:
33
configuration: mkdocs.yml
44

55
python:
6-
version: 3.7
76
install:
87
- requirements: docs/requirements.txt
8+
9+
build:
10+
os: ubuntu-20.04
11+
tools:
12+
python: "3.9"

Dockerfile-sqbase

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM python:3.8.13-slim-buster AS sqbase
1+
FROM python:3.8.14-slim-buster AS sqbase
22

33
ENV PATH=/root/.local/bin:$PATH
44
ENV PYTHONPATH=/root/.local/lib

README.md

Lines changed: 25 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -5,23 +5,25 @@
55
[![Docker Image Size (latest by date)](https://img.shields.io/docker/image-size/netenglabs/suzieq?logo=docker&color=blue)](https://hub.docker.com/r/netenglabs/suzieq/tags?page=1&ordering=last_updated)
66
[![Docker Pulls](https://img.shields.io/docker/pulls/netenglabs/suzieq?logo=docker&color=blue)](https://hub.docker.com/r/netenglabs/suzieq/tags?page=1&ordering=last_updated)
77

8-
# Suzieq -- Healthier Networks Through Network Observability
8+
# SuzieQ -- Healthier Networks Through Network Observability
99

1010
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?
1111

1212
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?
1313

14-
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.**
14+
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.**
1515

16-
**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.
16+
**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.
1717

18-
Suzieq does multiple things. It [collects](https://suzieq.readthedocs.io/en/latest/poller/) 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.
18+
SuzieQ does multiple things. It [collects](https://suzieq.readthedocs.io/en/latest/poller/) 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.
19+
20+
**An enterprise version of SuzieQ is also available**. It has been deployed in production by multiple customers, and the company behind SuzieQ, (Stardust Systems)[https://stardustsystems.net] was named a "Cool Vendor" by Gartner for making network automation easy for enterprises.
1921

2022
## Quick Start
2123

2224
### Using Docker Container
2325

24-
We want to make it as easy as possible for you to start engaging with Suzieq so
26+
We want to make it as easy as possible for you to start engaging with SuzieQ so
2527
we have a demo that has data included in the image. To get started:
2628

2729
* `docker run -it -p 8501:8501 --name suzieq netenglabs/suzieq-demo`
@@ -36,13 +38,13 @@ the official [documentation page](https://suzieq.readthedocs.io/en/latest/).
3638
To start collecting data for your network, create an inventory file to gather the data from following the instructions [here](https://suzieq.readthedocs.io/en/latest/poller/). 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:
3739

3840
* ```docker run -it -v <parquet-out-local-dir>:/home/suzieq/parquet -v <inventory-file>:/home/suzieq/inventory.yml --name sq-poller netenglabs/suzieq:latest```
39-
* 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).
41+
* 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).
4042

4143
### Using Python Packaging
4244

43-
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.
45+
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.
4446

45-
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:
47+
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:
4648

4749
```bash
4850
python -m venv suzieq
@@ -67,14 +69,14 @@ Once the command completes, you have the main programs of suzieq available for u
6769
* suzieq-cli: For running the CLI
6870
* sq-rest-server: For running the REST API server
6971

70-
[The official documentation is at suzieq.readthedocs.io](https://suzieq.readthedocs.io/en/latest/), and you can watch the screencasts about Suzieq on [Youtube](https://www.youtube.com/results?search_query=netenglabs).
72+
[The official documentation is at suzieq.readthedocs.io](https://suzieq.readthedocs.io/en/latest/), and you can watch the screencasts about SuzieQ on [Youtube](https://www.youtube.com/results?search_query=netenglabs).
7173

7274
# Analysis
7375

74-
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.
76+
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.
7577

7678
The GUI has a status page to let you know what the status of entities in your network.
77-
![Suzieq GUI status](images/status.png)
79+
![SuzieQ GUI status](images/status.png)
7880

7981
The Xplore page lets you dive into what is in your network. ![Explore device](images/devices-gui.png)
8082

@@ -84,15 +86,15 @@ The CLI supports the same kind of analysis as the explore page. ![CLI device](im
8486

8587
## Path
8688

87-
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](images/path-gui.png)
89+
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](images/path-gui.png)
8890

8991
## Asserts
9092

91-
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](images/interfaces-assert.png)
93+
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](images/interfaces-assert.png)
9294

93-
# Suzieq Data
95+
# SuzieQ Data
9496

95-
**Suzieq supports gathering data from Cumulus, EOS, IOS, IOSXE, IOSXR, JunOS(QFX, EX, MX and SRX platforms and Evolved OS), Palo Alto's Panos (version 8.0 or higher), NXOS and SONIC routers, and Linux servers.** Suzieq gathers:
97+
**SuzieQ supports gathering data from Cumulus, EOS, IOS, IOSXE, IOSXR, JunOS(QFX, EX, MX and SRX platforms and Evolved OS), Palo Alto's Panos (version 8.0 or higher), NXOS and SONIC routers, and Linux servers.** SuzieQ gathers:
9698

9799
* Basic device info including serial number, model, version, platform etc.
98100
* Interfaces
@@ -107,7 +109,7 @@ One of Suzieq's powerful capabilities are asserts, which are statements that sho
107109

108110
We're adding support for more platforms and features with every release. See [the documentation](https://suzieq.readthedocs.io/en/latest/tables/) on details of specific tables and its NOS support.
109111

110-
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](./CONTRIBUTING.md) for ideas on how you can help.
112+
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](./CONTRIBUTING.md) for ideas on how you can help.
111113

112114
# Release Notes
113115

@@ -119,15 +121,15 @@ You can join the conversation via [slack](https://join.slack.com/t/netenglabs/sh
119121

120122
# Additional Documentation & Screencasts
121123

122-
We've done some blogging about Suzieq:
124+
We've done some blogging about SuzieQ:
123125

124-
* [Introducing Suzieq](https://elegantnetwork.github.io/posts/Suzieq/)
125-
* [10ish ways to explore your network with Suzieq](https://elegantnetwork.github.io/posts/10ish_ways_to_explore_your_network_with_Suzieq/)
126-
* [Questions to Suzieq](https://elegantnetwork.github.io/posts/10qa-suzieq/)
127-
* [Time in Suzieq](https://elegantnetwork.github.io/posts/time-suzieq/)
126+
* [Introducing SuzieQ](https://elegantnetwork.github.io/posts/SuzieQ/)
127+
* [10ish ways to explore your network with SuzieQ](https://elegantnetwork.github.io/posts/10ish_ways_to_explore_your_network_with_SuzieQ/)
128+
* [Questions to SuzieQ](https://elegantnetwork.github.io/posts/10qa-suzieq/)
129+
* [Time in SuzieQ](https://elegantnetwork.github.io/posts/time-suzieq/)
128130

129131
We've also been adding screencasts on [Youtube](https://www.youtube.com/results?search_query=netenglabs).
130132

131-
# Suzieq Priorities
133+
# SuzieQ Enterprise
132134

133-
We don't have a roadmap, but we do have a list of our [priorities](https://github.com/netenglabs/suzieq/blob/master/docs/2020-priority.md). We mix this with the [issues reported](https://github.com/netenglabs/suzieq/issues).
135+
SuzieQ also has a commercial offering, SuzieQ Enterprise. To know more about this and contact us, please visit the Stardust Systems (website)[https://stardustsystems.net].

build/requirements.txt

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
aiofiles==23.1.0 ; python_full_version > "3.8.1" and python_version < "3.10"
2-
aiohttp==3.7.4 ; python_full_version > "3.8.1" and python_version < "3.10"
2+
aiohttp==3.9.5 ; python_full_version > "3.8.1" and python_version < "3.10"
3+
aiosignal==1.3.1 ; python_full_version > "3.8.1" and python_version < "3.10"
34
altair==4.2.2 ; python_full_version > "3.8.1" and python_version < "3.10"
45
anyio==3.7.1 ; python_full_version > "3.8.1" and python_version < "3.10"
56
appnope==0.1.3 ; python_full_version > "3.8.1" and python_version < "3.10" and platform_system == "Darwin" or python_full_version > "3.8.1" and python_version < "3.10" and sys_platform == "darwin"
67
argon2-cffi-bindings==21.2.0 ; python_full_version > "3.8.1" and python_version < "3.10"
78
argon2-cffi==21.3.0 ; python_full_version > "3.8.1" and python_version < "3.10"
89
asgiref==3.7.2 ; python_full_version > "3.8.1" and python_version < "3.10"
910
asttokens==2.2.1 ; python_full_version > "3.8.1" and python_version < "3.10"
10-
async-timeout==3.0.1 ; python_full_version > "3.8.1" and python_version < "3.10"
11-
asyncssh==2.11.0 ; python_full_version > "3.8.1" and python_version < "3.10"
11+
async-timeout==4.0.3 ; python_full_version > "3.8.1" and python_version < "3.10"
12+
asyncssh==2.14.2 ; python_full_version > "3.8.1" and python_version < "3.10"
1213
attrs==23.1.0 ; python_full_version > "3.8.1" and python_version < "3.10"
1314
backcall==0.2.0 ; python_full_version > "3.8.1" and python_version < "3.10"
1415
beautifulsoup4==4.12.2 ; python_full_version > "3.8.1" and python_version < "3.10"
@@ -18,9 +19,8 @@ blinker==1.6.2 ; python_full_version > "3.8.1" and python_version < "3.10"
1819
cachetools==5.3.1 ; python_full_version > "3.8.1" and python_version < "3.10"
1920
certifi==2023.5.7 ; python_full_version > "3.8.1" and python_version < "3.10"
2021
cffi==1.15.1 ; python_full_version > "3.8.1" and python_version < "3.10"
21-
chardet==3.0.4 ; python_full_version > "3.8.1" and python_version < "3.10"
2222
charset-normalizer==3.2.0 ; python_full_version > "3.8.1" and python_version < "3.10"
23-
ciscoconfparse==1.7.24 ; python_full_version > "3.8.1" and python_version < "3.10"
23+
ciscoconfparse==1.6.52 ; python_full_version > "3.8.1" and python_version < "3.10"
2424
click==8.1.5 ; python_full_version > "3.8.1" and python_version < "3.10"
2525
colorama==0.4.6 ; python_full_version > "3.8.1" and python_version < "3.10"
2626
comm==0.1.3 ; python_full_version > "3.8.1" and python_version < "3.10"
@@ -32,7 +32,6 @@ dateparser==1.1.8 ; python_full_version > "3.8.1" and python_version < "3.10"
3232
debugpy==1.6.7 ; python_full_version > "3.8.1" and python_version < "3.10"
3333
decorator==5.1.1 ; python_full_version > "3.8.1" and python_version < "3.10"
3434
defusedxml==0.7.1 ; python_full_version > "3.8.1" and python_version < "3.10"
35-
deprecat==2.1.1 ; python_full_version > "3.8.1" and python_version < "3.10"
3635
dnspython==2.4.0 ; python_full_version > "3.8.1" and python_version < "3.10"
3736
entrypoints==0.4 ; python_full_version > "3.8.1" and python_version < "3.10"
3837
exceptiongroup==1.1.2 ; python_full_version > "3.8.1" and python_version < "3.10"
@@ -41,6 +40,7 @@ faker==4.18.0 ; python_full_version > "3.8.1" and python_version < "3.10"
4140
fastapi==0.95.2 ; python_full_version > "3.8.1" and python_version < "3.10"
4241
fastjsonschema==2.17.1 ; python_full_version > "3.8.1" and python_version < "3.10"
4342
fonttools==4.41.0 ; python_full_version > "3.8.1" and python_version < "3.10"
43+
frozenlist==1.4.1 ; python_full_version > "3.8.1" and python_version < "3.10"
4444
future==0.18.3 ; python_full_version > "3.8.1" and python_version < "3.10"
4545
gitdb==4.0.10 ; python_full_version > "3.8.1" and python_version < "3.10"
4646
gitpython==3.1.32 ; python_full_version > "3.8.1" and python_version < "3.10"
@@ -57,7 +57,7 @@ ipython==8.12.2 ; python_full_version > "3.8.1" and python_version < "3.10"
5757
jedi==0.17.2 ; python_full_version > "3.8.1" and python_version < "3.10"
5858
jellyfish==0.10.0 ; python_full_version > "3.8.1" and python_version < "3.10"
5959
jinja2==3.1.2 ; python_full_version > "3.8.1" and python_version < "3.10"
60-
jsonpath-ng==1.5.3 ; python_full_version > "3.8.1" and python_version < "3.10"
60+
jsonpath-ng==1.6.1 ; python_full_version > "3.8.1" and python_version < "3.10"
6161
jsonschema-specifications==2023.6.1 ; python_full_version > "3.8.1" and python_version < "3.10"
6262
jsonschema==4.18.3 ; python_full_version > "3.8.1" and python_version < "3.10"
6363
jupyter-client==8.3.0 ; python_full_version > "3.8.1" and python_version < "3.10"
@@ -79,9 +79,9 @@ nbconvert==7.6.0 ; python_full_version > "3.8.1" and python_version < "3.10"
7979
nbformat==5.9.1 ; python_full_version > "3.8.1" and python_version < "3.10"
8080
nest-asyncio==1.5.6 ; python_full_version > "3.8.1" and python_version < "3.10"
8181
netconan==0.11.3 ; python_full_version > "3.8.1" and python_version < "3.10"
82-
networkx==2.8.8 ; python_full_version > "3.8.1" and python_version < "3.10"
82+
networkx==2.4 ; python_full_version > "3.8.1" and python_version < "3.10"
8383
notebook==6.4.12 ; python_full_version > "3.8.1" and python_version < "3.10"
84-
numpy==1.24.4 ; python_full_version > "3.8.1" and python_version < "3.10"
84+
numpy==1.20.3 ; python_full_version > "3.8.1" and python_version < "3.10"
8585
packaging==21.3 ; python_full_version > "3.8.1" and python_version < "3.10"
8686
pandas==1.5.3 ; python_full_version > "3.8.1" and python_version < "3.10"
8787
pandocfilters==1.5.0 ; python_full_version > "3.8.1" and python_version < "3.10"
@@ -152,7 +152,6 @@ watchdog==3.0.0 ; python_full_version > "3.8.1" and python_version < "3.10" and
152152
wcwidth==0.2.6 ; python_full_version > "3.8.1" and python_version < "3.10"
153153
webencodings==0.5.1 ; python_full_version > "3.8.1" and python_version < "3.10"
154154
win32-setctime==1.1.0 ; python_full_version > "3.8.1" and python_version < "3.10" and sys_platform == "win32"
155-
wrapt==1.15.0 ; python_full_version > "3.8.1" and python_version < "3.10"
156155
xmltodict==0.12.0 ; python_full_version > "3.8.1" and python_version < "3.10"
157156
yarl==1.9.2 ; python_full_version > "3.8.1" and python_version < "3.10"
158157
zipp==3.16.2 ; python_full_version > "3.8.1" and python_version < "3.10"

docs/index.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ SuzieQ:
1515

1616
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.
1717

18+
**To get information about the enterprise version of SuzieQ, visit the Stardust Systems (website)[https://www.stardustsystems.net/]**.
19+
1820
You can join the conversation via [slack](https://netenglabs.slack.com). Send email to Dinesh with the email address to send the Slack invitation to.
1921

2022
We're also looking for collaborators to help us make SuzieQ a truly useful multi-vendor, open source platform

0 commit comments

Comments
 (0)