aha
This commit is contained in:
parent
959daf2d22
commit
04d3c2a2e4
19
conf.yaml
19
conf.yaml
|
@ -4,6 +4,11 @@ IDE:
|
|||
hosts:
|
||||
- 172.17.4.30
|
||||
- 172.17.4.31
|
||||
check:
|
||||
type: http
|
||||
port: 80
|
||||
uri: /
|
||||
method: HEAD
|
||||
|
||||
PLOOPI:
|
||||
tables:
|
||||
|
@ -11,3 +16,17 @@ PLOOPI:
|
|||
hosts:
|
||||
- 172.17.4.40
|
||||
- 172.17.4.20
|
||||
check:
|
||||
type: tcp
|
||||
port: 80
|
||||
|
||||
SMTP:
|
||||
tables:
|
||||
- smtp
|
||||
hosts:
|
||||
- 172.17.4.40
|
||||
- 172.17.4.20
|
||||
check:
|
||||
type: smtp
|
||||
port: 25
|
||||
|
||||
|
|
71
main.go
71
main.go
|
@ -8,39 +8,52 @@ import "log"
|
|||
import "gopkg.in/yaml.v3"
|
||||
import "time"
|
||||
|
||||
type Check struct {
|
||||
Type string `yaml:"type"`
|
||||
Port int `yaml:"port"`
|
||||
Uri string `yaml:"uri"`
|
||||
Method string `yaml:"method"`
|
||||
}
|
||||
type Group struct {
|
||||
Name string `yaml:"group"`
|
||||
Tables []string `yaml:"tables"`
|
||||
Hosts []string `yaml:"hosts"`
|
||||
Name string `yaml:"group"`
|
||||
Tables []string `yaml:"tables"`
|
||||
Hosts []string `yaml:"hosts"`
|
||||
Check Check `yaml:"check"`
|
||||
}
|
||||
|
||||
func main() {
|
||||
fmt.Println("starting")
|
||||
log.Println("Starting")
|
||||
|
||||
var conf map[string]Group
|
||||
yamlFile, err := ioutil.ReadFile("conf.yaml")
|
||||
if err != nil {
|
||||
log.Printf("Configuration open error #%v ", err)
|
||||
}
|
||||
err = yaml.Unmarshal(yamlFile, &conf)
|
||||
if err != nil {
|
||||
log.Fatalf("Configuration read error #%v", err)
|
||||
}
|
||||
var conf map[string]Group
|
||||
yamlFile, err := ioutil.ReadFile("conf.yaml")
|
||||
if err != nil {
|
||||
log.Printf("Configuration open error #%v ", err)
|
||||
}
|
||||
err = yaml.Unmarshal(yamlFile, &conf)
|
||||
if err != nil {
|
||||
log.Fatalf("Configuration read error #%v", err)
|
||||
}
|
||||
|
||||
for name, group := range conf {
|
||||
fmt.Println("Checking group", name )
|
||||
for _, host := range group.Hosts {
|
||||
client := &http.Client{
|
||||
Timeout: time.Second * 5,
|
||||
}
|
||||
resp, err := client.Head(fmt.Sprintf("http://%s", host))
|
||||
if err != nil {
|
||||
fmt.Println(host, "Failed")
|
||||
} else {
|
||||
_, _ = io.ReadAll(resp.Body)
|
||||
resp.Body.Close()
|
||||
fmt.Println(host, "Status", resp.StatusCode)
|
||||
}
|
||||
}
|
||||
}
|
||||
for name, group := range conf {
|
||||
|
||||
log.Println("Checking group", name, group)
|
||||
go checkGroup(group)
|
||||
}
|
||||
}
|
||||
|
||||
func checkGroup(group Group) {
|
||||
for _, host := range group.Hosts {
|
||||
client := &http.Client{
|
||||
Timeout: time.Second * 5,
|
||||
}
|
||||
resp, err := client.Head(fmt.Sprintf("http://%s", host))
|
||||
if err != nil {
|
||||
log.Println(host, "Failed")
|
||||
} else {
|
||||
_, _ = io.ReadAll(resp.Body)
|
||||
resp.Body.Close()
|
||||
log.Println(host, "Status", resp.StatusCode)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue