Skip to content
/ serstat Public

A scalable, real-time distributed systems monitoring application

License

Notifications You must be signed in to change notification settings

purhan/serstat

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

serstat

About The Project

Serstat is a scalable, real-time monitoring application for collecting and displaying resource information of many servers in a network.

Built With

⚠️⚠️⚠️ This project was created for learning purposes and the code is untested. In the current state, this is not a good option for production usage. ⚠️⚠️⚠️ Check OpenWISP or Netdata for production use.

Features

On its own, serstat has a react based dashboard for displaying real-time information. However, since the data can be stored in a mongodb collection, one could leverage mongo's features for creating charts as explained later.

React Dashboard

image A react dashboard which displays metrics in real time.

MongoDB Timeseries Collections

image The metrics are by default, stored in a mongoDB collection which can be used for creating charts as explained in the mongodb charts guide. In future, the react dashboard may possibly display this information itself.

Architecture

Serstat Architecture The application comprises of 3 components:

  • React Dashboard
  • Agent Script
  • SocketIO Server

The socketIO server is responsible for creating node cluster for concurrent processing when a large number of servers are sending their data simultaneously. By default, the socketio server will update the dashboard on an interval of 1000ms which can be configured as per the user's needs.

Usage

First, clone this repository on your host machine.

Installing the dashboard

First, install the socketio server using the following commands:

$ cd server
$ npm i
$ npm start

Make sure to copy the .env_sample file into .env and set up the environment variables accordingly

Install and start the react dashboard using the following commands:

$ cd client
$ npm i
$ npm start

Again, make sure to copy the .env_sample file into .env and set up the environment variables accordingly

Connecting devices

For every device in the system, you have to run an agent on it. To install and start an agent, use the following commands:

$ cd agent
$ npm i
$ npm start

Make sure to set up the environment variables in the .env file accordingly

Mongodb charts

With your provided credentials, a mongodb timeseries collection will be created. Follow the mongodb charts guide for instructions on setting up charts for your choice of metrics.

Contributing

⚠️⚠️⚠️ This project was created for learning purposes and the code is untested. In the current state, this is not a good option for production usage. ⚠️⚠️⚠️

That being said, contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

Inspiration

This project is heavily inspired by

License

Distributed under the MIT License. See LICENSE.txt for more information.

About

A scalable, real-time distributed systems monitoring application

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published