Add Prometheus for some Owncast metrics (#1744)

* Add Prometheus for some Owncast metrics. Closes #1303

* Wrap prometheus metrics endpoint in admin middleware
This commit is contained in:
Gabe Kangas
2022-03-06 17:26:52 -08:00
committed by GitHub
parent 713c8f913e
commit 92041c4c23
12 changed files with 598 additions and 11 deletions

View File

@@ -5,12 +5,19 @@ import (
"net/http"
"sort"
"github.com/owncast/owncast/config"
"github.com/owncast/owncast/core/chat/events"
"github.com/owncast/owncast/core/data"
"github.com/owncast/owncast/models"
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/promauto"
log "github.com/sirupsen/logrus"
)
var getStatus func() models.Status
var (
getStatus func() models.Status
chatMessagesSentCounter prometheus.Gauge
)
// Start begins the chat server.
func Start(getStatusFunc func() models.Status) error {
@@ -23,6 +30,15 @@ func Start(getStatusFunc func() models.Status) error {
log.Traceln("Chat server started with max connection count of", _server.maxSocketConnectionLimit)
chatMessagesSentCounter = promauto.NewGauge(prometheus.GaugeOpts{
Name: "total_chat_message_count",
Help: "The number of chat messages incremented over time.",
ConstLabels: map[string]string{
"version": config.VersionNumber,
"host": data.GetServerURL(),
},
})
return nil
}
@@ -51,6 +67,10 @@ func FindClientByID(clientID uint) (*Client, bool) {
func GetClients() []*Client {
clients := []*Client{}
if _server == nil {
return clients
}
// Convert the keyed map to a slice.
for _, client := range _server.clients {
clients = append(clients, client)

View File

@@ -108,9 +108,9 @@ func (s *Server) userMessageSent(eventData chatClientEvent) {
// Send chat message sent webhook
webhooks.SendChatEvent(&event)
chatMessagesSentCounter.Inc()
SaveUserMessage(event)
eventData.client.MessageCount++
_lastSeenCache[event.User.ID] = time.Now()
}