Persist time series viewer metrics (#1752)

* WIP persisting time series viewer metrics. Closes #1478

* Remove unused var, move around initial collection
This commit is contained in:
Gabe Kangas
2022-03-06 19:43:57 -08:00
committed by GitHub
parent 1f05783d9a
commit 1ed1cc01eb
6 changed files with 69 additions and 21 deletions

View File

@@ -3,6 +3,8 @@ package admin
import (
"encoding/json"
"net/http"
"strconv"
"time"
"github.com/owncast/owncast/controllers"
"github.com/owncast/owncast/core"
@@ -14,9 +16,19 @@ import (
// GetViewersOverTime will return the number of viewers at points in time.
func GetViewersOverTime(w http.ResponseWriter, r *http.Request) {
viewersOverTime := metrics.Metrics.Viewers
windowStartAtStr := r.URL.Query().Get("windowStart")
windowStartAtUnix, err := strconv.Atoi(windowStartAtStr)
if err != nil {
controllers.WriteSimpleResponse(w, false, err.Error())
return
}
windowStartAt := time.Unix(int64(windowStartAtUnix), 0)
windowEnd := time.Now()
viewersOverTime := metrics.GetViewersOverTime(windowStartAt, windowEnd)
w.Header().Set("Content-Type", "application/json")
err := json.NewEncoder(w).Encode(viewersOverTime)
err = json.NewEncoder(w).Encode(viewersOverTime)
if err != nil {
log.Errorln(err)
}