Skip to content

ssubedir/goriffin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build Test Latest Stable Version License

About Goriffin

Goriffin is written in go, a heartbeat surveillance program. Goriffin is packed with goriffin API and the goriffin background processor. The API is used to configure the services being monitored and the background processor checks the services periodically and reports the status of that same services to a Mongo db

Getting Started

These instructions will get you a copy of the project up and run the service on your local machine.See deployment for notes on how to deploy the project on a live system.

Prerequisites

You will need to install go version go1.11 +

Download

Use git clone to get your local copy

git clone https://github.com/ssubedir/goriffin

Deployment

Use the go build command to build each components

Build Project

Build Goriffin API

go build -v cmd/goriffin/goriffin.go 

Build Goriffin background processor

go build -v cmd/background/goriffin_background.go 

Deploy

Before you run Goriffin create .env file with the following Environmental Variables

# MongoDB info
DB0_USER=username
DB0_PASSWORD=password
DB0_CLUSTER=address/cluster

  
#Database
DB_DBNAME= database name
SERVICES_HEARTBEAT=collection name
HEARTBEAT_HTTP=collection name

 
# Number of workers for the background processing 
WORKER_COUNT=16

#Goriffin Api port
API_PORT=9000
#Goriffin background processor grpc port
GRPC_PORT=9092

Goriffin Api

Sattus of Background Processor

GET localhost:API_PORT/status

Returns the status of the background goriffin processor by making gRPC request

Fetch all services

GET localhost:API_PORT/services

Returns all the services that are being monitored.

// Response
{
	"status": true,
  "time": "2020-05-04 23:39:50.8786948 -0400 EDT"
}

Fetch a service

GET localhost:API_PORT/service
// Example request template
{
	 "host":"example.com",
	 "stype":"http"
}

Returns a single service.

// Response
{
	"host":"example.com",
	"name":"example",
	"stype":"http",
	"accepted_status":{
		"200":true
		},
	"frequency":30,
	"request_method":"GET",
	"request_payload":"",
	"request_headers":[["Key","Value"]]
}

Add a service

POST localhost:API_PORT/service
// Example request template
{
	"host":"example.com",
	"name":"example",
	"stype":"http",
	"accepted_status":{
		"200":true
		},
	"frequency":30,
	"request_method":"GET",
	"request_payload":"",
	"request_headers":[["Key","Value"]]
}

Returns the the added service

// Response
{
	"host":"example.com",
	"name":"example",
	"stype":"http",
	"accepted_status":{
		"200":true
		},
	"frequency":30,
	"request_method":"GET",
	"request_payload":"",
	"request_headers":[["Key","Value"]]
}

Remove a service

DELETE localhost:API_PORT/service
// Example request template
{
	 "host":"example.com",
	 "stype":"http"
}

Returns the status of the action

// Response
{
	"host": "example.com"
	"status": true
}

Built With

  • GO - Programming language

License

This project is licensed under the MIT License - see the LICENSE.md file for details