2023-03-07 03:16:10 +00:00
|
|
|
package server
|
|
|
|
|
|
|
|
import (
|
|
|
|
"github.com/prometheus/client_golang/prometheus"
|
|
|
|
)
|
|
|
|
|
|
|
|
var (
|
2023-03-17 02:19:20 +00:00
|
|
|
metricMessagesPublishedSuccess prometheus.Counter
|
|
|
|
metricMessagesPublishedFailure prometheus.Counter
|
|
|
|
metricMessagesCached prometheus.Gauge
|
|
|
|
metricMessagePublishDurationMillis prometheus.Gauge
|
|
|
|
metricFirebasePublishedSuccess prometheus.Counter
|
|
|
|
metricFirebasePublishedFailure prometheus.Counter
|
|
|
|
metricEmailsPublishedSuccess prometheus.Counter
|
|
|
|
metricEmailsPublishedFailure prometheus.Counter
|
|
|
|
metricEmailsReceivedSuccess prometheus.Counter
|
|
|
|
metricEmailsReceivedFailure prometheus.Counter
|
2023-05-06 18:23:48 +00:00
|
|
|
metricCallsMadeSuccess prometheus.Counter
|
|
|
|
metricCallsMadeFailure prometheus.Counter
|
2023-03-17 02:19:20 +00:00
|
|
|
metricUnifiedPushPublishedSuccess prometheus.Counter
|
|
|
|
metricMatrixPublishedSuccess prometheus.Counter
|
|
|
|
metricMatrixPublishedFailure prometheus.Counter
|
|
|
|
metricAttachmentsTotalSize prometheus.Gauge
|
|
|
|
metricVisitors prometheus.Gauge
|
|
|
|
metricSubscribers prometheus.Gauge
|
|
|
|
metricTopics prometheus.Gauge
|
|
|
|
metricUsers prometheus.Gauge
|
|
|
|
metricHTTPRequests *prometheus.CounterVec
|
2023-03-07 03:16:10 +00:00
|
|
|
)
|
|
|
|
|
2023-03-16 02:34:06 +00:00
|
|
|
func initMetrics() {
|
|
|
|
metricMessagesPublishedSuccess = prometheus.NewCounter(prometheus.CounterOpts{
|
|
|
|
Name: "ntfy_messages_published_success",
|
|
|
|
})
|
|
|
|
metricMessagesPublishedFailure = prometheus.NewCounter(prometheus.CounterOpts{
|
|
|
|
Name: "ntfy_messages_published_failure",
|
|
|
|
})
|
|
|
|
metricMessagesCached = prometheus.NewGauge(prometheus.GaugeOpts{
|
|
|
|
Name: "ntfy_messages_cached_total",
|
|
|
|
})
|
2023-03-17 02:19:20 +00:00
|
|
|
metricMessagePublishDurationMillis = prometheus.NewGauge(prometheus.GaugeOpts{
|
|
|
|
Name: "ntfy_message_publish_duration_ms",
|
|
|
|
})
|
2023-03-16 02:34:06 +00:00
|
|
|
metricFirebasePublishedSuccess = prometheus.NewCounter(prometheus.CounterOpts{
|
|
|
|
Name: "ntfy_firebase_published_success",
|
|
|
|
})
|
|
|
|
metricFirebasePublishedFailure = prometheus.NewCounter(prometheus.CounterOpts{
|
|
|
|
Name: "ntfy_firebase_published_failure",
|
|
|
|
})
|
|
|
|
metricEmailsPublishedSuccess = prometheus.NewCounter(prometheus.CounterOpts{
|
|
|
|
Name: "ntfy_emails_sent_success",
|
|
|
|
})
|
|
|
|
metricEmailsPublishedFailure = prometheus.NewCounter(prometheus.CounterOpts{
|
|
|
|
Name: "ntfy_emails_sent_failure",
|
|
|
|
})
|
|
|
|
metricEmailsReceivedSuccess = prometheus.NewCounter(prometheus.CounterOpts{
|
|
|
|
Name: "ntfy_emails_received_success",
|
|
|
|
})
|
|
|
|
metricEmailsReceivedFailure = prometheus.NewCounter(prometheus.CounterOpts{
|
|
|
|
Name: "ntfy_emails_received_failure",
|
|
|
|
})
|
2023-05-06 18:23:48 +00:00
|
|
|
metricCallsMadeSuccess = prometheus.NewCounter(prometheus.CounterOpts{
|
|
|
|
Name: "ntfy_calls_made_success",
|
|
|
|
})
|
|
|
|
metricCallsMadeFailure = prometheus.NewCounter(prometheus.CounterOpts{
|
|
|
|
Name: "ntfy_calls_made_failure",
|
|
|
|
})
|
2023-03-16 02:34:06 +00:00
|
|
|
metricUnifiedPushPublishedSuccess = prometheus.NewCounter(prometheus.CounterOpts{
|
|
|
|
Name: "ntfy_unifiedpush_published_success",
|
|
|
|
})
|
|
|
|
metricMatrixPublishedSuccess = prometheus.NewCounter(prometheus.CounterOpts{
|
|
|
|
Name: "ntfy_matrix_published_success",
|
|
|
|
})
|
|
|
|
metricMatrixPublishedFailure = prometheus.NewCounter(prometheus.CounterOpts{
|
|
|
|
Name: "ntfy_matrix_published_failure",
|
|
|
|
})
|
|
|
|
metricAttachmentsTotalSize = prometheus.NewGauge(prometheus.GaugeOpts{
|
|
|
|
Name: "ntfy_attachments_total_size",
|
|
|
|
})
|
|
|
|
metricVisitors = prometheus.NewGauge(prometheus.GaugeOpts{
|
|
|
|
Name: "ntfy_visitors_total",
|
|
|
|
})
|
2023-03-17 02:19:20 +00:00
|
|
|
metricUsers = prometheus.NewGauge(prometheus.GaugeOpts{
|
|
|
|
Name: "ntfy_users_total",
|
|
|
|
})
|
2023-03-16 02:34:06 +00:00
|
|
|
metricSubscribers = prometheus.NewGauge(prometheus.GaugeOpts{
|
|
|
|
Name: "ntfy_subscribers_total",
|
|
|
|
})
|
|
|
|
metricTopics = prometheus.NewGauge(prometheus.GaugeOpts{
|
|
|
|
Name: "ntfy_topics_total",
|
|
|
|
})
|
|
|
|
metricHTTPRequests = prometheus.NewCounterVec(prometheus.CounterOpts{
|
|
|
|
Name: "ntfy_http_requests_total",
|
|
|
|
}, []string{"http_code", "ntfy_code", "http_method"})
|
|
|
|
prometheus.MustRegister(
|
|
|
|
metricMessagesPublishedSuccess,
|
|
|
|
metricMessagesPublishedFailure,
|
|
|
|
metricMessagesCached,
|
2023-03-17 02:19:20 +00:00
|
|
|
metricMessagePublishDurationMillis,
|
2023-03-16 02:34:06 +00:00
|
|
|
metricFirebasePublishedSuccess,
|
|
|
|
metricFirebasePublishedFailure,
|
|
|
|
metricEmailsPublishedSuccess,
|
|
|
|
metricEmailsPublishedFailure,
|
|
|
|
metricEmailsReceivedSuccess,
|
|
|
|
metricEmailsReceivedFailure,
|
2023-05-06 18:23:48 +00:00
|
|
|
metricCallsMadeSuccess,
|
|
|
|
metricCallsMadeFailure,
|
2023-03-16 02:34:06 +00:00
|
|
|
metricUnifiedPushPublishedSuccess,
|
|
|
|
metricMatrixPublishedSuccess,
|
|
|
|
metricMatrixPublishedFailure,
|
|
|
|
metricAttachmentsTotalSize,
|
|
|
|
metricVisitors,
|
2023-03-17 02:19:20 +00:00
|
|
|
metricUsers,
|
2023-03-16 02:34:06 +00:00
|
|
|
metricSubscribers,
|
|
|
|
metricTopics,
|
|
|
|
metricHTTPRequests,
|
|
|
|
)
|
2023-03-07 03:16:10 +00:00
|
|
|
}
|
|
|
|
|
2023-03-16 02:34:06 +00:00
|
|
|
// minc increments a prometheus.Counter if it is non-nil
|
|
|
|
func minc(counter prometheus.Counter) {
|
|
|
|
if counter != nil {
|
|
|
|
counter.Inc()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// mset sets a prometheus.Gauge if it is non-nil
|
|
|
|
func mset[T int | int64 | float64](gauge prometheus.Gauge, value T) {
|
|
|
|
if gauge != nil {
|
|
|
|
gauge.Set(float64(value))
|
2023-03-07 03:16:10 +00:00
|
|
|
}
|
|
|
|
}
|