refined alarm email, removed port requirement for smtp server, fixed bug with config loading
This commit is contained in:
parent
afcdef029e
commit
8c7822be97
@ -6,7 +6,7 @@ import (
|
|||||||
|
|
||||||
type Alarm interface {
|
type Alarm interface {
|
||||||
Parse(string) (bool, error)
|
Parse(string) (bool, error)
|
||||||
Alarm() error
|
Alarm(string,string,string,error) error
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewAlarm(name string, typename string) (Alarm, error) {
|
func NewAlarm(name string, typename string) (Alarm, error) {
|
||||||
|
@ -35,7 +35,7 @@ func NewAlarmEmail(name string) *AlarmEmail {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *AlarmEmail) Alarm() error {
|
func (a *AlarmEmail) Alarm(grp string, host string, chk string, cerr error) error {
|
||||||
c, err := smtp.Dial(a.SMTP)
|
c, err := smtp.Dial(a.SMTP)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@ -68,7 +68,8 @@ func (a *AlarmEmail) Alarm() error {
|
|||||||
|
|
||||||
msg := fmt.Sprintf("From: %s\r\n", a.From)
|
msg := fmt.Sprintf("From: %s\r\n", a.From)
|
||||||
msg += fmt.Sprintf("To: %s\r\n", strings.Join(a.To, ";"))
|
msg += fmt.Sprintf("To: %s\r\n", strings.Join(a.To, ";"))
|
||||||
msg += fmt.Sprintf("Subject: %s\r\n", "test subject")
|
msg += fmt.Sprintf("Subject: %s\r\n\r\n", "test subject")
|
||||||
|
msg += fmt.Sprintf("%s", cerr.Error())
|
||||||
|
|
||||||
_, err = fmt.Fprintf(m, "%s", msg)
|
_, err = fmt.Fprintf(m, "%s", msg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -113,6 +114,10 @@ func (a *AlarmEmail) Parse(tk string) (bool, error) {
|
|||||||
if strings.TrimSpace(tk) == "" {
|
if strings.TrimSpace(tk) == "" {
|
||||||
return false, fmt.Errorf("smtp server cannot be empty")
|
return false, fmt.Errorf("smtp server cannot be empty")
|
||||||
}
|
}
|
||||||
|
// If the smtp host doesn't contain a port, add the default
|
||||||
|
if !strings.Contains(tk, ":") {
|
||||||
|
tk += ":25"
|
||||||
|
}
|
||||||
a.SMTP = tk
|
a.SMTP = tk
|
||||||
a.state = TK_NONE
|
a.state = TK_NONE
|
||||||
|
|
||||||
|
2
alrmrc
2
alrmrc
@ -3,7 +3,7 @@ set interval 30s
|
|||||||
alarm people email
|
alarm people email
|
||||||
to test1@localhost
|
to test1@localhost
|
||||||
to test2@localhost
|
to test2@localhost
|
||||||
smtp localhost:25
|
smtp localhost
|
||||||
from alrm@localhost
|
from alrm@localhost
|
||||||
|
|
||||||
monitor group webservers
|
monitor group webservers
|
||||||
|
22
main.go
22
main.go
@ -16,12 +16,14 @@ func main() {
|
|||||||
flag.Usage = printUsage
|
flag.Usage = printUsage
|
||||||
flag.Parse()
|
flag.Parse()
|
||||||
|
|
||||||
|
|
||||||
if *cfgPath == "" {
|
if *cfgPath == "" {
|
||||||
if _, err := os.Stat("./alrmrc"); err == nil {
|
searchpaths := []string{"/etc/alrmrc", "./alrmrc"}
|
||||||
*cfgPath = "./alrmrc"
|
for _, sp := range searchpaths {
|
||||||
}
|
if _, err := os.Stat(sp); err == nil {
|
||||||
if _, err := os.Stat("/etc/alrmrc"); err == nil {
|
*cfgPath = sp
|
||||||
*cfgPath = "/etc/alrmrc"
|
break
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if *cfgPath == "" {
|
if *cfgPath == "" {
|
||||||
fmt.Fprintf(os.Stderr, "cannot find configuration\n")
|
fmt.Fprintf(os.Stderr, "cannot find configuration\n")
|
||||||
@ -32,12 +34,17 @@ func main() {
|
|||||||
command := strings.ToLower(flag.Arg(0))
|
command := strings.ToLower(flag.Arg(0))
|
||||||
switch command {
|
switch command {
|
||||||
case "config":
|
case "config":
|
||||||
|
if *debuglvl > 0 {
|
||||||
|
fmt.Printf("checking config %s .. \n", *cfgPath)
|
||||||
|
}
|
||||||
|
|
||||||
cfg, err := config.ReadConfig(*cfgPath, *debuglvl)
|
cfg, err := config.ReadConfig(*cfgPath, *debuglvl)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Fprintf(os.Stderr, "%s\n", err.Error())
|
fmt.Fprintf(os.Stderr, "%s\n", err.Error())
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if *debuglvl > 0 {
|
if *debuglvl > 0 {
|
||||||
o, err := json.MarshalIndent(cfg, "", " ")
|
o, err := json.MarshalIndent(cfg, "", " ")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -68,7 +75,10 @@ func main() {
|
|||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = al.Alarm()
|
err = al.Alarm(
|
||||||
|
"test group", "test host", "test check",
|
||||||
|
fmt.Errorf("test alarm message"),
|
||||||
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Fprintf(os.Stderr, "alarm failed: %s\n", err.Error())
|
fmt.Fprintf(os.Stderr, "alarm failed: %s\n", err.Error())
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
|
Loading…
Reference in New Issue
Block a user