|Project Name||Stars||Downloads||Repos Using This||Packages Using This||Most Recent Commit||Total Releases||Latest Release||Open Issues||License||Language|
|Sysadminboard||505||3 years ago||1||mit||HTML|
|Simple dashboard system for sysadmins with modules for VMware, SNMP, REST API and more|
|Zabbix Vmwareesx||8||7 years ago||3|
|Zabbix template for VMWare ESX|
|Esxicollector||8||7 years ago||1||Shell|
|The scripts that can collect data from VMware ESXi system through snmp protocol in open-falcon json format|
|Sysadminboard||5||7 years ago||mit||HTML|
|Totalcontrol||2||7 years ago||mit||HTML|
|Cnm Mibs||1||3 years ago||other||Assembly|
|SNMP MIB files repository for NMC usage. Created for public usage and seamlessly integration with Custom Network Manager Appliance|
Here is an older photo our installation. We use some small ASUS chromeboxes along with the Chrome Kiosk extension to display our dashboards.
This module will talk to a VMware vSphere vCenter server using VMware APIs to get data about ESX hosts. Items are sorted based on top CPU usage over a 30 minute period.
This module will talk to a VMware vSphere vCenter server using VMware APIs to get data about the top ESX VMs. Items are sorted based on top CPU usage over a 30 minute period.
This module demonstrates how to grab network bandwidth data. In the first image, it is pulling in snmp data from a Palo Alto Firewall. In the second image, it is pulling snmp data some VLANs on a Cisco Catalyst 6880 switch.
This module demonstrates how to grab SNMP table data. In this case, it is pulling in ISDN values from a Cisco Voice Gateway to show the number of active phone calls.
This module talks to a couple different APC devices to pull in temperature, humidity, voltage and runtime data.
This module talks to a PRTG monitoring server using their rest-api instead of talking directly to devices. There are two modules, one that uses the basic interface bandwidth and the other uses channels.
This module monitors a Microsoft Exchange server to display SMTP message totals for the day along with RPC and latency information (per CAS server). Note that this code requires my pyPerfmon app running on each Exchange server to be monitored.
This module monitors a Tintri hybrid storage device using REST API calls.
This module monitors a NetApp FAS storage device using REST API calls.
This module monitors a Rubrik backup system using REST API calls.
This module monitors a Nutanix hyperconverged system using REST API calls. The first image shows cluster monitoring.
The second Nutanix gadget shows per-VM storage monitoring. It shows the top X VMs in the cluster sorted by IOPS based over a 30 minute window.
This project is basically a copy of what I run in production. You will need to edit the data module files to provide details related to your environment, for example server ip addresses and SNMP OIDs. You will want to download a copy of the free PyCharm Community Edition so you can step through modules as necessary to get them working in your environment.
You should edit the credentials.py file to store usernames and passwords. Although the python files are hidden behind the web server, the credentials are being stored in plain text, so be sure that you are using locked down accounts with read-only privileges. For example, a read-only VMware vSphere account is all we need.
The main module is webserver.py. This launches the CherryPy webserver and loads each data module into a separate thread. To enable/disable a module, find the MODULES section and use the SysAdminBoardModule function, specifying the module filename (without the .py).
For example this function:
will load the vmware_host.py data module, setup the webserver to serve the front-end HTML page (/vmware_host) and serve the json data (/vmware_host/ajax). By default, the webserver only has the sample module enabled.
If you browse to the webserver, it will display a list of loaded modules with links to display the output appropriately (HTML and AJAX). Note that the webserver loads on port 8080 by default unless you make the iptables changes below to redirect from port 80.
Here are some directions for a base CentOS 8 Linux server install. (I know CentOS 8 is EOL soon, but I made this change before they announced they were killing it. I'll post again once we change to Rocky Linux.)
dnf install epel-release dnf install python3
Create sbpython account and assign owner rights to the static folder. The webserver will run as this user account, so it needs rights to this folder. All other files will be owned by root. Copy all files to /opt/sysadminboard. Note that the default log_settings.json file is set for debugging on Mac OS X. Replace it with the CentOS version in log_settings_samples. Be sure to mark the credentials file so other accounts cannot access it.
mkdir -p /opt/sysadminboard/static adduser sbpython chown -R sbpython:sbpython /opt/sysadminboard/static chmod 700 /opt/sysadminboard/credentials.py
Create a virtual environment in /opt/sysadminboard-ve to store the required python modules (so they don't intermingle with the normal OS python modules.)
pip3 install -U pip pip3 install virtualenv cd /opt virtualenv -p python3 sysadminboard-ve
Now that the virtual environment is available, use this command anytime you want to test or run pip
Confirm which python you're using
Install modules using pip (make sure you're in the virtualenv first using the source command above.)
pip install CherryPy pip install routes pip install pyvmomi pip install mysql-connector pip install requests pip install pysnmp
Logs will appear in the journal (check /var/log/messages if you have rsyslog installed, or use journalctl). To increase the logging level, edit log_settings.json and replace INFO with DEBUG.
Setup Service There is a simple systemd service in the centos_install directory. Copy the sysadminboard.service file to /etc/systemd/system on server
cp /opt/sysadminboard/centos_install/systemd/sysadminboard.service /etc/systemd/system systemctl enable sysadminboard
You can run the following commands now to stop or start the service.
systemctl stop sysadminboard systemctl start sysadminboard systemctl restart sysadminboard systemctl status sysadminboard
Note that you use the deactivate command to exit a virtual environment. The source...activate and deactivate commands are not needed when starting the service, only when testing.
Add these rules to your firewall to redirect from port 8080 to port 80:
firewall-cmd --list-all firewall-cmd --add-service=http firewall-cmd --add-service=https firewall-cmd --add-port=8080/tcp firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080 firewall-cmd --runtime-to-permanent
Note about Tintri support: I don't have one anymore, so the code may stop working.