Add initial structure of influxdb monitoring.

This commit is contained in:
Maximilian Paß
2022-04-09 17:51:34 +02:00
parent e4ebb5b384
commit 8feffdae3a
12 changed files with 225 additions and 20 deletions

View File

@@ -4,6 +4,8 @@ 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"
@@ -35,6 +37,20 @@ 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
@@ -95,7 +111,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() *http.Server {
func initServer(influxClient influxdb2API.WriteAPI) *http.Server {
runnerManager, environmentManager := createManagerHandler(createNomadManager, config.Config.Nomad.Enabled,
runner.NewAbstractManager(), &environment.AbstractManager{})
runnerManager, environmentManager = createManagerHandler(createAWSManager, config.Config.AWS.Enabled,
@@ -105,7 +121,7 @@ func initServer() *http.Server {
Addr: config.Config.Server.URL().Host,
ReadTimeout: time.Second * 15,
IdleTimeout: time.Second * 60,
Handler: api.NewRouter(runnerManager, environmentManager),
Handler: api.NewRouter(runnerManager, environmentManager, influxClient),
}
}
@@ -133,7 +149,10 @@ func main() {
initSentry(&config.Config.Sentry)
defer shutdownSentry()
server := initServer()
influxDB, cancel := initInfluxDB(&config.Config.InfluxDB)
defer cancel()
server := initServer(influxDB)
go runServer(server)
shutdownOnOSSignal(server)
}