A simple monitoring solution written in Go (work in progress)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

36 lines
591 B

  1. package config
  2. import (
  3. "fmt"
  4. )
  5. type Group struct {
  6. Name string
  7. Hosts map[string]*Host
  8. }
  9. func (ag *Group) NewHost(name string) (*Host, error) {
  10. if ag.Hosts == nil {
  11. ag.Hosts = make(map[string]*Host)
  12. }
  13. if _, exists := ag.Hosts[name]; exists {
  14. return nil, fmt.Errorf("host %s already exists", name)
  15. }
  16. host := &Host{Name: name}
  17. ag.Hosts[name] = host
  18. return host, nil
  19. }
  20. func (ag *Group) Check(debuglvl int) error {
  21. for _, host := range ag.Hosts {
  22. for _, chk := range host.Checks {
  23. err := chk.Check(debuglvl)
  24. if err != nil {
  25. return err
  26. }
  27. }
  28. }
  29. return nil
  30. }