Adds bugsnag and newrelic metrics and error reporting
Configuration variables are added under the REGISTRY_REPORTING namespace, for example REGISTRY_REPORTING_BUGSNAG_APIKEY
This commit is contained in:
parent
d726630ad0
commit
43a50b5e82
2 changed files with 82 additions and 1 deletions
|
@ -11,6 +11,9 @@ import (
|
|||
|
||||
log "github.com/Sirupsen/logrus"
|
||||
|
||||
"github.com/bugsnag/bugsnag-go"
|
||||
"github.com/yvasiyarov/gorelic"
|
||||
|
||||
"github.com/docker/docker-registry"
|
||||
"github.com/docker/docker-registry/configuration"
|
||||
_ "github.com/docker/docker-registry/storagedriver/filesystem"
|
||||
|
@ -27,7 +30,8 @@ func main() {
|
|||
}
|
||||
|
||||
app := registry.NewApp(*config)
|
||||
handler := handlers.CombinedLoggingHandler(os.Stdout, app)
|
||||
handler := configureReporting(app)
|
||||
handler = handlers.CombinedLoggingHandler(os.Stdout, handler)
|
||||
log.SetLevel(logLevel(config.Loglevel))
|
||||
|
||||
log.Infof("listening on %v", config.HTTP.Addr)
|
||||
|
@ -82,3 +86,39 @@ func logLevel(level configuration.Loglevel) log.Level {
|
|||
|
||||
return l
|
||||
}
|
||||
|
||||
func configureReporting(app *registry.App) http.Handler {
|
||||
var handler http.Handler = app
|
||||
|
||||
if app.Config.Reporting.Bugsnag.APIKey != "" {
|
||||
bugsnagConfig := bugsnag.Configuration{
|
||||
APIKey: app.Config.Reporting.Bugsnag.APIKey,
|
||||
// TODO(brianbland): provide the registry version here
|
||||
// AppVersion: "2.0",
|
||||
}
|
||||
if app.Config.Reporting.Bugsnag.ReleaseStage != "" {
|
||||
bugsnagConfig.ReleaseStage = app.Config.Reporting.Bugsnag.ReleaseStage
|
||||
}
|
||||
if app.Config.Reporting.Bugsnag.Endpoint != "" {
|
||||
bugsnagConfig.Endpoint = app.Config.Reporting.Bugsnag.Endpoint
|
||||
}
|
||||
bugsnag.Configure(bugsnagConfig)
|
||||
|
||||
handler = bugsnag.Handler(handler)
|
||||
}
|
||||
|
||||
if app.Config.Reporting.NewRelic.LicenseKey != "" {
|
||||
agent := gorelic.NewAgent()
|
||||
agent.NewrelicLicense = app.Config.Reporting.NewRelic.LicenseKey
|
||||
if app.Config.Reporting.NewRelic.Name != "" {
|
||||
agent.NewrelicName = app.Config.Reporting.NewRelic.Name
|
||||
}
|
||||
agent.CollectHTTPStat = true
|
||||
agent.Verbose = true
|
||||
agent.Run()
|
||||
|
||||
handler = agent.WrapHTTPHandler(handler)
|
||||
}
|
||||
|
||||
return handler
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue