Skip to content

Commit

Permalink
Merge pull request #32 from ccnmtl/basic-auth
Browse files Browse the repository at this point in the history
Add basic auth support for connecting to graphite front-end
  • Loading branch information
sdreher committed May 7, 2020
2 parents 7403f4d + ea8cb31 commit dd8f18a
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 36 deletions.
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

0 comments on commit dd8f18a

Please sign in to comment.