infoset
is Python 3 inventory system that reports and tabulates the status of network connected devices. The information reported includes:
- Open Systems Interconnection model (OSI model) data such as:
- Layer 1 information (Network port names, speed, state, neighbors)
- Layer 2 information (VLANs, 802.1q trunk links)
- Layer 3 information (ARP information)
- System status
Table of Conents
[TOC]
infoset
has the following features:
- Open source.
- Written in python, a modern language.
- Easy configuration.
- Threaded polling of devices for data. Fast.
- Support for Cisco and Juniper gear. More expected to added with time.
- Support for SNMPv2 and/or SNMPv3 for all configured network devices.
infoset
has a number of fault tolerant features aimed at making it resilient in unstable computing environemnts.- Agents collecting data can tolerate the loss of communication with the central server by caching data locally until the server returns online.
- The infoset server can tolerate the loss of communication with its database by caching the data locally until the database returns online.
- The
infoset
configuration is entirely stored in files. This allows it to collect data in the absense of a database, such as during maintenance or an outage. - Backups are simple. Just dave the entire contents of the
infoset
directory tree including hidden files, and save a copy of the database for your performance data.
We are always looking for more contributors!
The project took inspiration from switchmap whose creator, Pete Siemsen, has been providing guidance.
infoset
is a student collaboration between:
- The University of the West Indies Computing Society. (Kingston, Jamaica)
- The University of Techology, IEEE Student Branch. (Kingston, Jamaica)
- The Palisadoes Foundation http://www.palisadoes.org
And many others.
The only dependencies that must be manually installed for this project are pip
, python3
.
The commands are:
# sudo apt-get install python3 python3-pip python3-dev python3-yaml
# pip3 install --user sqlalchemy
The commands are:
# sudo dnf install python3 python3-pip python3-dev python3-yaml
# pip3 install --user sqlalchemy
Installation is simple. The first thing to do is verify that your system is running python 3.5 or higher. If not, you will need to upgrade. Use this command to check:
$ python3 --version
Next create the MySQL or MariaDB database.
$ mysql -u root -p
password:
mysql> create database infoset;
mysql> grant all privileges on infoset.* to infoset@"localhost" identified by 'PASSWORD';
mysql> flush privileges;
mysql> exit;
Now clone the repository and copy the sample configuration file to its final location.
$ git clone https://github.com/UWICompSociety/infoset
$ cd infoset
$ export PYTHONPATH=`pwd`
$ cp examples/etc/* etc/
Edit the database credential information in the server section of the etc/config.yaml
file. Update the configured database password.
$ vim etc/config.yaml
Create the directories that infoset
will use for its working files.
$ sudo mkdir -p /opt/infoset
$ sudo chown -R $USER /opt/infoset
$ mkdir -p /opt/infoset/log
$ mkdir -p /opt/infoset/cache/data
$ mkdir -p /opt/infoset/cache/ingest
$ mkdir -p /opt/infoset/cache/agents
Run the install scripts.
$ pip3 install --user sqlalchemy
$ python3 setup.py install
$ source ~/.bashrc
$ sudo make
$ source venv/bin/activate
$ sudo make install
There are a number of required steps to configure infoset
.
- Place a valid configuration file in the
etc/
directory - Run the
bin/agentsd.py --start
script to start data collection - Run the
./server.py
script to view the web pages
These will be convered in detail next:
The examples/
directory includes a number of sample files. These will now be explained.
The examples/etc
directory includes a sample file that can be edited. The README.md
file there explains the parameters.
You must place your configuration file in the etc/
directory as your permanent configuration file location.
The examples/linux/logrotate/infoset
file is a working logrotate configuration to rotate the log files that infoset generates. These can be extensive and adding the file to your system is highly recommended.
sudo cp examples/linux/logrotate/infoset /etc/logrotate.d
The examples/linux/apache
directory includes sample files to create a:
- Dedicated
infoset
site (sites-available.example.org.conf
) running on port 80 - URI of an existing site (
conf-available.example.conf
) running on port 80
NOTE! You must have a valid configuration file placed in the etc
directory before activating data collection.
The bin/agentsd.py
script starts all the configured data collection agents automatically. It will only attempt to start and monitor the agents that are enabled
in the configuration file.
The script can be started like this:
$ bin/agentsd.py --start
NOTE! Make sure this script runs at boot by placing the agentsd.py
command in your /etc/rc.local
file.
Infoset also includes a web interface. To start the server run python3 server.py
then navigate to http://localhost:5000
There are many dragons to slay and kingdoms to conquer!
Here are a few things to know.
- Contributions are always welcome. Contact our team for more.
- View our contributor guidelines here: https://github.com/UWICompSociety/infoset/blob/master/CONTRIBUTING.md
- View our guidelines for committing code here: https://github.com/UWICompSociety/infoset/blob/master/COMMITTERS.md
Our current mailing list is: https://groups.google.com/forum/#!forum/gdg-jamaica
Visit our GitHub issues for a full list of features and bug fixes. https://github.com/UWICompSociety/infoset/issues
Visit our wiki's infoset
document for the rationale of the design. http://wiki.palisadoes.org/index.php/Infoset
Visit http://calico.palisadoes.org/infoset to view infoset
's latest stable web output.