purhan / serstat

A scalable, real-time distributed systems monitoring application

Home Page:https://serstat.herokuapp.com/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

https://serstat.herokuapp.com/

License:MIT License


Languages

Language:JavaScript 65.2%Language:CSS 27.4%Language:HTML 7.4%