all: Add Prometheus-style metrics to expose some internal performance counters (fixes #5175) (#9003)
This commit is contained in:
@@ -297,6 +297,7 @@ loop:
|
||||
case e := <-l.events:
|
||||
// Incoming events get sent
|
||||
l.sendEvent(e)
|
||||
metricEvents.WithLabelValues(e.Type.String(), metricEventStateCreated).Inc()
|
||||
|
||||
case fn := <-l.funcs:
|
||||
// Subscriptions are handled here.
|
||||
@@ -345,9 +346,11 @@ func (l *logger) sendEvent(e Event) {
|
||||
|
||||
select {
|
||||
case s.events <- e:
|
||||
metricEvents.WithLabelValues(e.Type.String(), metricEventStateDelivered).Inc()
|
||||
case <-l.timeout.C:
|
||||
// if s.events is not ready, drop the event
|
||||
timedOut = true
|
||||
metricEvents.WithLabelValues(e.Type.String(), metricEventStateDropped).Inc()
|
||||
}
|
||||
|
||||
// If stop returns false it already sent something to the
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
// Copyright (C) 2023 The Syncthing Authors.
|
||||
//
|
||||
// This Source Code Form is subject to the terms of the Mozilla Public
|
||||
// License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
// You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
|
||||
package events
|
||||
|
||||
import (
|
||||
"github.com/prometheus/client_golang/prometheus"
|
||||
"github.com/prometheus/client_golang/prometheus/promauto"
|
||||
)
|
||||
|
||||
var metricEvents = promauto.NewCounterVec(prometheus.CounterOpts{
|
||||
Namespace: "syncthing",
|
||||
Subsystem: "events",
|
||||
Name: "total",
|
||||
Help: "Total number of created/forwarded/dropped events",
|
||||
}, []string{"event", "state"})
|
||||
|
||||
const (
|
||||
metricEventStateCreated = "created"
|
||||
metricEventStateDelivered = "delivered"
|
||||
metricEventStateDropped = "dropped"
|
||||
)
|
||||
Reference in New Issue
Block a user