mirror of
https://github.com/matrix-org/dendrite
synced 2024-10-31 21:19:04 +01:00
Add dendrite_roomserver_processroomevent_duration_millis to prometheus
Squashed commit of the following: commit e5e2d793119733ecbcf9b85f966e018ab0318741 Author: Neil Alexander <neilalexander@users.noreply.github.com> Date: Wed Jan 13 17:28:12 2021 +0000 Add dendrite_roomserver_processroomevent_duration_millis to prometheus
This commit is contained in:
parent
266f9c4abd
commit
3ac693c7a5
1 changed files with 30 additions and 0 deletions
|
@ -20,6 +20,7 @@ import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"time"
|
||||||
|
|
||||||
"github.com/matrix-org/dendrite/internal/eventutil"
|
"github.com/matrix-org/dendrite/internal/eventutil"
|
||||||
"github.com/matrix-org/dendrite/roomserver/api"
|
"github.com/matrix-org/dendrite/roomserver/api"
|
||||||
|
@ -28,9 +29,29 @@ import (
|
||||||
"github.com/matrix-org/dendrite/roomserver/types"
|
"github.com/matrix-org/dendrite/roomserver/types"
|
||||||
"github.com/matrix-org/gomatrixserverlib"
|
"github.com/matrix-org/gomatrixserverlib"
|
||||||
"github.com/matrix-org/util"
|
"github.com/matrix-org/util"
|
||||||
|
"github.com/prometheus/client_golang/prometheus"
|
||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
prometheus.MustRegister(processRoomEventDuration)
|
||||||
|
}
|
||||||
|
|
||||||
|
var processRoomEventDuration = prometheus.NewHistogramVec(
|
||||||
|
prometheus.HistogramOpts{
|
||||||
|
Namespace: "dendrite",
|
||||||
|
Subsystem: "roomserver",
|
||||||
|
Name: "processroomevent_duration_millis",
|
||||||
|
Help: "How long it takes the roomserver to process an event",
|
||||||
|
Buckets: []float64{ // milliseconds
|
||||||
|
5, 10, 25, 50, 75, 100, 250, 500,
|
||||||
|
1000, 2000, 3000, 4000, 5000, 6000,
|
||||||
|
7000, 8000, 9000, 10000, 15000, 20000,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
[]string{"room_id"},
|
||||||
|
)
|
||||||
|
|
||||||
// processRoomEvent can only be called once at a time
|
// processRoomEvent can only be called once at a time
|
||||||
//
|
//
|
||||||
// TODO(#375): This should be rewritten to allow concurrent calls. The
|
// TODO(#375): This should be rewritten to allow concurrent calls. The
|
||||||
|
@ -42,6 +63,15 @@ func (r *Inputer) processRoomEvent(
|
||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
input *api.InputRoomEvent,
|
input *api.InputRoomEvent,
|
||||||
) (eventID string, err error) {
|
) (eventID string, err error) {
|
||||||
|
// Measure how long it takes to process this event.
|
||||||
|
started := time.Now()
|
||||||
|
defer func() {
|
||||||
|
timetaken := time.Since(started)
|
||||||
|
processRoomEventDuration.With(prometheus.Labels{
|
||||||
|
"room_id": input.Event.RoomID(),
|
||||||
|
}).Observe(float64(timetaken.Milliseconds()))
|
||||||
|
}()
|
||||||
|
|
||||||
// Parse and validate the event JSON
|
// Parse and validate the event JSON
|
||||||
headered := input.Event
|
headered := input.Event
|
||||||
event := headered.Unwrap()
|
event := headered.Unwrap()
|
||||||
|
|
Loading…
Reference in a new issue