Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 16 additions & 2 deletions alert.go
Original file line number Diff line number Diff line change
Expand Up @@ -96,8 +96,22 @@ type fetcher interface {
type httpFetcher struct{}

func (h httpFetcher) Get(url string) (*http.Response, error) {
client := http.Client{ Timeout: time.Second * 2 }
return client.Get(url)
client := http.Client{Timeout: time.Second * 2}

req, err := http.NewRequest("GET", url, nil)

if err != nil {
log.WithFields(log.Fields{
"error": fmt.Sprintf("%v", err),
}).Error("error creating request object to graphite")
}

// If basic auth username and password are configured, use them.
if graphiteBasicAuthUser != "" && graphiteBasicAuthPassword != "" {
req.SetBasicAuth(graphiteBasicAuthUser, graphiteBasicAuthPassword)
}

return client.Do(req)
}

func (a *alert) Fetch() (float64, error) {
Expand Down
74 changes: 40 additions & 34 deletions hound.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,21 +20,23 @@ import (
)

var (
graphiteBase string
carbonBase string
metricBase string
emailFrom string
emailTo string
checkInterval int
globalThrottle int
globalBackoff int
lastErrorEmail time.Time
emailOnError bool
smtpServer string
smtpPort int
smtpUser string
smtpPassword string
window string
graphiteBase string
graphiteBasicAuthUser string
graphiteBasicAuthPassword string
carbonBase string
metricBase string
emailFrom string
emailTo string
checkInterval int
globalThrottle int
globalBackoff int
lastErrorEmail time.Time
emailOnError bool
smtpServer string
smtpPort int
smtpUser string
smtpPassword string
window string
)

var (
Expand All @@ -47,25 +49,27 @@ var (
)

type config struct {
GraphiteBase string `envconfig:"GRAPHITE_BASE"`
CarbonBase string `envconfig:"CARBON_BASE"`
MetricBase string `envconfig:"METRIC_BASE"`
EmailFrom string `envconfig:"EMAIL_FROM"`
EmailTo string `envconfig:"EMAIL_TO"`
CheckInterval int `envconfig:"CHECK_INTERVAL"`
GlobalThrottle int `envconfig:"GLOBAL_THROTTLE"`
HTTPPort string `envconfig:"HTTP_PORT"`
TemplateFile string `envconfig:"TEMPLATE_FILE"`
AlertTemplateFile string `envconfig:"ALERT_TEMPLATE_FILE"`
EmailOnError bool `envconfig:"EMAIL_ON_ERROR"`
SMTPServer string `envconfig:"SMTP_SERVER"`
SMTPPort int `envconfig:"SMTP_PORT"`
SMTPUser string `envconfig:"SMTP_USER"`
SMTPPassword string `envconfig:"SMTP_PASSWORD"`
LogLevel string `envconfig:"LOG_LEVEL"`
ReadTimeout int `envconfig:"READ_TIMEOUT"`
WriteTimeout int `envconfig:"WRITE_TIMEOUT"`
Window string `envconfig:"WINDOW"`
GraphiteBase string `envconfig:"GRAPHITE_BASE"`
GraphiteBasicAuthUser string `envconfig:"GRAPHITE_BASIC_AUTH_USER"`
GraphiteBasicAuthPassword string `envconfig:"GRAPHITE_BASIC_AUTH_PASSWORD"`
CarbonBase string `envconfig:"CARBON_BASE"`
MetricBase string `envconfig:"METRIC_BASE"`
EmailFrom string `envconfig:"EMAIL_FROM"`
EmailTo string `envconfig:"EMAIL_TO"`
CheckInterval int `envconfig:"CHECK_INTERVAL"`
GlobalThrottle int `envconfig:"GLOBAL_THROTTLE"`
HTTPPort string `envconfig:"HTTP_PORT"`
TemplateFile string `envconfig:"TEMPLATE_FILE"`
AlertTemplateFile string `envconfig:"ALERT_TEMPLATE_FILE"`
EmailOnError bool `envconfig:"EMAIL_ON_ERROR"`
SMTPServer string `envconfig:"SMTP_SERVER"`
SMTPPort int `envconfig:"SMTP_PORT"`
SMTPUser string `envconfig:"SMTP_USER"`
SMTPPassword string `envconfig:"SMTP_PASSWORD"`
LogLevel string `envconfig:"LOG_LEVEL"`
ReadTimeout int `envconfig:"READ_TIMEOUT"`
WriteTimeout int `envconfig:"WRITE_TIMEOUT"`
Window string `envconfig:"WINDOW"`
}

func main() {
Expand Down Expand Up @@ -98,6 +102,8 @@ func main() {
log.Info("running on ", c.HTTPPort)
// set global values
graphiteBase = c.GraphiteBase
graphiteBasicAuthUser = c.GraphiteBasicAuthUser
graphiteBasicAuthPassword = c.GraphiteBasicAuthPassword
carbonBase = c.CarbonBase
metricBase = c.MetricBase
emailFrom = c.EmailFrom
Expand Down