Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

bigbroproject/BigBro

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

30 Commits

Repository files navigation

BigBro

Build Status MIT License made-with-Go made-with-Go GitHub go.mod Go version of a Go module GitHub Release

An extensible monitoring tool for user defined services and protocols, all wrote in GoLang and VueJS 3, made with BigBro core.

Project status

  • This project is in BETA stage
  • Go version : 1.15
  • Vue version : 3.0
  • BigBro core version: GitHub Release

Introduction

BigBro is a lightweight monitoring software tool that offers a lightweight User Interface to monitor the services and protocols defined by users.

The software also can be used only via CLI interface

The entire software is based on one configuration file where it is possible define a list of services that would be monitor.

Compatibility

Operative Systems

BigBro was compiled and tested on Debian and RHEL Linux distribution families.

Hardware

BigBro was develop to run in any kind of computer or embedded system and was tested on:

  • General Personal Computer (x86_64)
  • Raspberry 3 B+
  • Orange Pi Zero

Defaults Protocols implemented

The default protocols are based on default protocols from BigBro Core, nevertheless new or custom protocols can be implemented in BigBro as in BigBro Core.

  • http
  • https (with ssl)
  • icmp
  • icmp6

Configuration file

In the configuration file will must be defined all services and protocol to be monitor. The format type of the file is YAML as follows:

services:
 - name: Facebook (ssl)
 protocols:
 - type: https
 port: 443
 server: facebook.com
 interval : 1000
 - name: Google
 protocols:
 - type: http
 server: google.com
 interval : 1000
 - name: Google DNS
 protocols:
 - type: icmp
 server: 8.8.8.8
 interval : 1000
 - name: Google DNS6
 protocols:
 - type: icmp6
 server: 2a00:1450:400a:804::2004
 interval : 5000
 - type: ftp
 server: 1.1.1.1
 interval : 1000
 customs :
 user : uss
 password : passwd
 ...
  • name : Name of the service
  • protocols: List of protocols that would be monitored
    • type: name of registered protocol
    • server: IP or dns of service
    • interval: interval time between check (in milliseconds)
    • port: (optional) port of service
    • customs: (optional) list of custom filed for custom implementation of protocols

Usage Example

From Binary File

Basically BigBro can be downloaded from releases section with a pre-compiled binary file.

Releases Page | Last release:

GitHub Release

From Source Code

Requirements

  • Debian or RHEL Linux distribution family
  • NodeJS >= v12.10.1 (it is used to compile the user interface)
  • Go Version >= v1.15 (developed with this version)
  • $GOPATH variable set and included in $PATH ( export PATH=$PATH:$GO:$GOPATH/bin )
  • Git installed

Firstly, before the usage of this library you must clone this repository:

git clone github.com/bigbroproject/bigbro

Secondly, the installation of libraries and dependencies is required:

cd bigbro && make install-dep

After the installation of dependencies, you can proceed to build BigBro:

make build #for your architecture
make build-x64 #for 64 bit architecture
make build-x86 #for 32 bit architecture
make build-arm #for ARM 7 architecture
make build-arm5 #for ARM 5 architecture
make build-all #to build all solutions

Customisation of the code

Before the build phase you can edit the main code, registering new protocols or handlers:

package main
import (
	"github.com/bigbroproject/bigbrocore/core"
	"github.com/bigbroproject/bigbrocore/protocols"
	"github.com/bigbroproject/bigbrocore/responsehandlers"
)
func main() {
	//log.SetFlags(log.LstdFlags | log.Lshortfile)
	system.PrintSystemInfo()
	ws := webserver.NewWebServer("config/serverconfig.yml")
	ws.Start()
	regProtocolInterfaces, regResponseHandlerInterfaces := core.Initialize("config/config.yml")
	// Register custom protocols
	//protocols.RegisterProtocolInterface(&regProtocolInterfaces, "ftp", protocols.FTP{})
	// Register Response Handlers
	responsehandlers.RegisterResponseHandlerInterface(&regResponseHandlerInterfaces, "webServerHandler", responsehandler.WebServerRespHandler{OutputChannel: ws.InputChannel})
 // Register custom handlers
	//responsehandlers.RegisterResponseHandlerInterface(&regResponseHandlerInterfaces, "console", responsehandlers.ConsoleHandler{})
	responsehandlers.RegisterResponseHandlerInterface(&regResponseHandlerInterfaces, "consoleMemory", responsehandlers.ConsoleHandlerWithMemory{})
	// Start monitoring
	core.Start(regProtocolInterfaces, regResponseHandlerInterfaces)
}

In this example we Initialize the entire module with a given configuration file path (you can manage this as a first input in your command line, for instance). Secondly, you must define and register a ResponseHandler to manage the Responses from service checks (otherwise you cannot log or see anything) and then register a custom protocol, if needed.

Finally, you can over your project main with the Start of the module.

Struct of the Core and implementation of custom protocols and handlers

For more information about the implementation of new protocols and handlers read the documentation of BigBro core.


Made with ❤️ by Asdrubbalo, filirnd and fedyfausto

AltStyle によって変換されたページ (->オリジナル) /