@@ -4,13 +4,14 @@ import (
|
||||
"encoding/json"
|
||||
"flag"
|
||||
"fmt"
|
||||
"github.com/castawaylabs/cachet-monitor/system"
|
||||
"io"
|
||||
"io/ioutil"
|
||||
"log"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"os"
|
||||
|
||||
"github.com/castawaylabs/cachet-monitor/system"
|
||||
)
|
||||
|
||||
// Static config
|
||||
@@ -23,6 +24,7 @@ var Logger *log.Logger
|
||||
type CachetConfig struct {
|
||||
APIUrl string `json:"api_url"`
|
||||
APIToken string `json:"api_token"`
|
||||
Interval int64 `json:"interval"`
|
||||
Monitors []*Monitor `json:"monitors"`
|
||||
SystemName string `json:"system_name"`
|
||||
LogPath string `json:"log_path"`
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"api_url": "https://demo.cachethq.io/api/v1",
|
||||
"api_token": "9yMHsdioQosnyVK4iCVR",
|
||||
"interval": 5,
|
||||
"monitors": [
|
||||
{
|
||||
"name": "nodegear frontend",
|
||||
|
||||
4
main.go
4
main.go
@@ -9,7 +9,7 @@ func main() {
|
||||
config := cachet.Config
|
||||
log := cachet.Logger
|
||||
|
||||
log.Printf("System: %s, API: %s\n", config.SystemName, config.APIUrl)
|
||||
log.Printf("System: %s, Interval: %d second(s), API: %s\n", config.SystemName, config.Interval, config.APIUrl)
|
||||
log.Printf("Starting %d monitors:\n", len(config.Monitors))
|
||||
for _, mon := range config.Monitors {
|
||||
log.Printf(" %s: GET %s & Expect HTTP %d\n", mon.Name, mon.URL, mon.ExpectedStatusCode)
|
||||
@@ -20,7 +20,7 @@ func main() {
|
||||
|
||||
log.Println()
|
||||
|
||||
ticker := time.NewTicker(time.Second)
|
||||
ticker := time.NewTicker(time.Duration(config.Interval)*time.Second)
|
||||
for range ticker.C {
|
||||
for _, mon := range config.Monitors {
|
||||
go mon.Run()
|
||||
|
||||
@@ -9,7 +9,7 @@ Features
|
||||
--------
|
||||
|
||||
- [x] Creates & Resolves Incidents
|
||||
- [x] Posts monitor lag every second
|
||||
- [x] Posts monitor lag every second * config.Interval
|
||||
- [x] Updates Component to Partial Outage
|
||||
- [x] Updates Component to Major Outage if in Partial Outage
|
||||
- [x] Can be run on multiple servers and geo regions
|
||||
@@ -34,6 +34,7 @@ Configuration
|
||||
{
|
||||
"api_url": "https://demo.cachethq.io/api/v1",
|
||||
"api_token": "9yMHsdioQosnyVK4iCVR",
|
||||
"interval": 60,
|
||||
"monitors": [
|
||||
{
|
||||
"name": "nodegear frontend",
|
||||
|
||||
Reference in New Issue
Block a user