Christopher Ramey
3 years ago
5 changed files with 82 additions and 1 deletions
-
2check/check_ping.go
-
15config/config.go
-
8config/parser.go
-
14main.go
-
44server.go
@ -0,0 +1,44 @@ |
|||
package main |
|||
|
|||
import ( |
|||
"alrm/check" |
|||
"alrm/config" |
|||
"fmt" |
|||
"time" |
|||
) |
|||
|
|||
func startServer(cfg *config.Config, debuglvl int) error { |
|||
ch := make(chan check.Check, cfg.Threads) |
|||
for i := 0; i < cfg.Threads; i++ { |
|||
go worker(ch, debuglvl) |
|||
} |
|||
|
|||
t := time.NewTicker(cfg.Interval) |
|||
defer t.Stop() |
|||
for { |
|||
select { |
|||
case r := <-t.C: |
|||
if debuglvl > 0 { |
|||
fmt.Printf("Interval check at %s\n", r) |
|||
} |
|||
for _, g := range cfg.Groups { |
|||
for _, h := range g.Hosts { |
|||
for _, c := range h.Checks { |
|||
ch <- c |
|||
} |
|||
} |
|||
} |
|||
} |
|||
} |
|||
return nil |
|||
} |
|||
|
|||
func worker(ch chan check.Check, debuglvl int) { |
|||
for { |
|||
chk := <-ch |
|||
err := chk.Check(debuglvl) |
|||
if err != nil { |
|||
fmt.Printf("Check error: %s\n", err) |
|||
} |
|||
} |
|||
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue