internal/cloudapi: additional prometheus listener
Listening on another port, while keeping the existing endpoint until transition is complete
This commit is contained in:
parent
a8f7ff487d
commit
8398f27742
7 changed files with 80 additions and 5 deletions
|
|
@ -44,7 +44,7 @@ type Composer struct {
|
|||
weldr *weldr.API
|
||||
api *cloudapi.Server
|
||||
|
||||
weldrListener, localWorkerListener, workerListener, apiListener net.Listener
|
||||
weldrListener, localWorkerListener, workerListener, apiListener, promListener net.Listener
|
||||
}
|
||||
|
||||
func NewComposer(config *ComposerConfigFile, stateDir, cacheDir string) (*Composer, error) {
|
||||
|
|
@ -130,6 +130,10 @@ func (c *Composer) InitWeldr(repoPaths []string, weldrListener net.Listener,
|
|||
return nil
|
||||
}
|
||||
|
||||
func (c *Composer) InitMetricsAPI(prometheus net.Listener) {
|
||||
c.promListener = prometheus
|
||||
}
|
||||
|
||||
func (c *Composer) InitAPI(cert, key string, enableTLS bool, enableMTLS bool, enableJWT bool, l net.Listener) error {
|
||||
config := v2.ServerConfig{
|
||||
JWTEnabled: c.config.Koji.EnableJWT,
|
||||
|
|
@ -218,7 +222,7 @@ func (c *Composer) Start() error {
|
|||
logrus.Fatal("neither the weldr API socket nor the composer API socket is enabled, osbuild-composer is useless without one of these APIs enabled")
|
||||
}
|
||||
|
||||
var localWorkerAPI, remoteWorkerAPI, composerAPI *http.Server
|
||||
var localWorkerAPI, remoteWorkerAPI, composerAPI, prometheusAPI *http.Server
|
||||
|
||||
if c.localWorkerListener != nil {
|
||||
localWorkerAPI = &http.Server{
|
||||
|
|
@ -313,6 +317,25 @@ func (c *Composer) Start() error {
|
|||
}()
|
||||
}
|
||||
|
||||
if c.promListener != nil {
|
||||
// metrics listener on another port
|
||||
metricsMux := http.NewServeMux()
|
||||
metricsMux.Handle("/metrics", promhttp.Handler().(http.HandlerFunc))
|
||||
|
||||
prometheusAPI = &http.Server{
|
||||
ErrorLog: c.logger,
|
||||
Handler: metricsMux,
|
||||
ReadHeaderTimeout: 5 * time.Second,
|
||||
}
|
||||
|
||||
go func() {
|
||||
err := prometheusAPI.Serve(c.promListener)
|
||||
if err != nil && err != http.ErrServerClosed {
|
||||
panic(err)
|
||||
}
|
||||
}()
|
||||
}
|
||||
|
||||
if c.weldrListener != nil {
|
||||
go func() {
|
||||
err := c.weldr.Serve(c.weldrListener)
|
||||
|
|
@ -341,6 +364,13 @@ func (c *Composer) Start() error {
|
|||
}
|
||||
}
|
||||
|
||||
if c.promListener != nil {
|
||||
err := prometheusAPI.Shutdown(context.Background())
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
|
||||
if c.localWorkerListener != nil {
|
||||
err := localWorkerAPI.Shutdown(context.Background())
|
||||
if err != nil {
|
||||
|
|
|
|||
|
|
@ -108,6 +108,14 @@ func main() {
|
|||
composer.InitLocalWorker(l[0])
|
||||
}
|
||||
|
||||
if l, exists := listeners["osbuild-composer-prometheus.socket"]; exists {
|
||||
if len(l) != 1 {
|
||||
logrus.Warn("The osbuild-composer-prometheus.socket unit is misconfigured. It should contain only one socket.")
|
||||
}
|
||||
|
||||
composer.InitMetricsAPI(l[0])
|
||||
}
|
||||
|
||||
if l, exists := listeners["osbuild-composer-api.socket"]; exists {
|
||||
if len(l) != 1 {
|
||||
logrus.Fatal("The osbuild-composer-api.socket unit is misconfigured. It should contain only one socket.")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue