#110 Refactor influxdb monitoring

to use it as singleton.
This enables the possibility to monitor processes that are independent of an incoming request.
This commit is contained in:
Maximilian Paß
2022-06-29 20:05:19 +02:00
parent eafc01e69a
commit 498e8f5ff5
19 changed files with 174 additions and 133 deletions

View File

@@ -4,14 +4,13 @@ import (
"context"
"errors"
"github.com/getsentry/sentry-go"
influxdb2 "github.com/influxdata/influxdb-client-go/v2"
influxdb2API "github.com/influxdata/influxdb-client-go/v2/api"
"github.com/openHPI/poseidon/internal/api"
"github.com/openHPI/poseidon/internal/config"
"github.com/openHPI/poseidon/internal/environment"
"github.com/openHPI/poseidon/internal/nomad"
"github.com/openHPI/poseidon/internal/runner"
"github.com/openHPI/poseidon/pkg/logging"
"github.com/openHPI/poseidon/pkg/monitoring"
"net/http"
"os"
"os/signal"
@@ -37,20 +36,6 @@ func shutdownSentry() {
}
}
func initInfluxDB(db *config.InfluxDB) (writeAPI influxdb2API.WriteAPI, cancel func()) {
if db.URL == "" {
return nil, func() {}
}
client := influxdb2.NewClient(db.URL, db.Token)
writeAPI = client.WriteAPI(db.Organization, db.Bucket)
cancel = func() {
writeAPI.Flush()
client.Close()
}
return writeAPI, cancel
}
func runServer(server *http.Server) {
log.WithField("address", server.Addr).Info("Starting server")
var err error
@@ -111,7 +96,7 @@ func createAWSManager() (runnerManager runner.Manager, environmentManager enviro
}
// initServer builds the http server and configures it with the chain of responsibility for multiple managers.
func initServer(influxClient influxdb2API.WriteAPI) *http.Server {
func initServer() *http.Server {
runnerManager, environmentManager := createManagerHandler(createNomadManager, config.Config.Nomad.Enabled,
nil, nil)
runnerManager, environmentManager = createManagerHandler(createAWSManager, config.Config.AWS.Enabled,
@@ -121,7 +106,7 @@ func initServer(influxClient influxdb2API.WriteAPI) *http.Server {
Addr: config.Config.Server.URL().Host,
ReadTimeout: time.Second * 15,
IdleTimeout: time.Second * 60,
Handler: api.NewRouter(runnerManager, environmentManager, influxClient),
Handler: api.NewRouter(runnerManager, environmentManager),
}
}
@@ -149,10 +134,10 @@ func main() {
initSentry(&config.Config.Sentry)
defer shutdownSentry()
influxDB, cancel := initInfluxDB(&config.Config.InfluxDB)
cancel := monitoring.InitializeInfluxDB(&config.Config.InfluxDB)
defer cancel()
server := initServer(influxDB)
server := initServer()
go runServer(server)
shutdownOnOSSignal(server)
}