server_metrics.go 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. package server
  2. import (
  3. "github.com/prometheus/client_golang/prometheus"
  4. )
  5. var (
  6. metricMessagesPublishedSuccess prometheus.Counter
  7. metricMessagesPublishedFailure prometheus.Counter
  8. metricMessagesCached prometheus.Gauge
  9. metricFirebasePublishedSuccess prometheus.Counter
  10. metricFirebasePublishedFailure prometheus.Counter
  11. metricEmailsPublishedSuccess prometheus.Counter
  12. metricEmailsPublishedFailure prometheus.Counter
  13. metricEmailsReceivedSuccess prometheus.Counter
  14. metricEmailsReceivedFailure prometheus.Counter
  15. metricUnifiedPushPublishedSuccess prometheus.Counter
  16. metricMatrixPublishedSuccess prometheus.Counter
  17. metricMatrixPublishedFailure prometheus.Counter
  18. metricAttachmentsTotalSize prometheus.Gauge
  19. metricVisitors prometheus.Gauge
  20. metricSubscribers prometheus.Gauge
  21. metricTopics prometheus.Gauge
  22. metricHTTPRequests *prometheus.CounterVec
  23. )
  24. func initMetrics() {
  25. metricMessagesPublishedSuccess = prometheus.NewCounter(prometheus.CounterOpts{
  26. Name: "ntfy_messages_published_success",
  27. })
  28. metricMessagesPublishedFailure = prometheus.NewCounter(prometheus.CounterOpts{
  29. Name: "ntfy_messages_published_failure",
  30. })
  31. metricMessagesCached = prometheus.NewGauge(prometheus.GaugeOpts{
  32. Name: "ntfy_messages_cached_total",
  33. })
  34. metricFirebasePublishedSuccess = prometheus.NewCounter(prometheus.CounterOpts{
  35. Name: "ntfy_firebase_published_success",
  36. })
  37. metricFirebasePublishedFailure = prometheus.NewCounter(prometheus.CounterOpts{
  38. Name: "ntfy_firebase_published_failure",
  39. })
  40. metricEmailsPublishedSuccess = prometheus.NewCounter(prometheus.CounterOpts{
  41. Name: "ntfy_emails_sent_success",
  42. })
  43. metricEmailsPublishedFailure = prometheus.NewCounter(prometheus.CounterOpts{
  44. Name: "ntfy_emails_sent_failure",
  45. })
  46. metricEmailsReceivedSuccess = prometheus.NewCounter(prometheus.CounterOpts{
  47. Name: "ntfy_emails_received_success",
  48. })
  49. metricEmailsReceivedFailure = prometheus.NewCounter(prometheus.CounterOpts{
  50. Name: "ntfy_emails_received_failure",
  51. })
  52. metricUnifiedPushPublishedSuccess = prometheus.NewCounter(prometheus.CounterOpts{
  53. Name: "ntfy_unifiedpush_published_success",
  54. })
  55. metricMatrixPublishedSuccess = prometheus.NewCounter(prometheus.CounterOpts{
  56. Name: "ntfy_matrix_published_success",
  57. })
  58. metricMatrixPublishedFailure = prometheus.NewCounter(prometheus.CounterOpts{
  59. Name: "ntfy_matrix_published_failure",
  60. })
  61. metricAttachmentsTotalSize = prometheus.NewGauge(prometheus.GaugeOpts{
  62. Name: "ntfy_attachments_total_size",
  63. })
  64. metricVisitors = prometheus.NewGauge(prometheus.GaugeOpts{
  65. Name: "ntfy_visitors_total",
  66. })
  67. metricSubscribers = prometheus.NewGauge(prometheus.GaugeOpts{
  68. Name: "ntfy_subscribers_total",
  69. })
  70. metricTopics = prometheus.NewGauge(prometheus.GaugeOpts{
  71. Name: "ntfy_topics_total",
  72. })
  73. metricHTTPRequests = prometheus.NewCounterVec(prometheus.CounterOpts{
  74. Name: "ntfy_http_requests_total",
  75. }, []string{"http_code", "ntfy_code", "http_method"})
  76. prometheus.MustRegister(
  77. metricMessagesPublishedSuccess,
  78. metricMessagesPublishedFailure,
  79. metricMessagesCached,
  80. metricFirebasePublishedSuccess,
  81. metricFirebasePublishedFailure,
  82. metricEmailsPublishedSuccess,
  83. metricEmailsPublishedFailure,
  84. metricEmailsReceivedSuccess,
  85. metricEmailsReceivedFailure,
  86. metricUnifiedPushPublishedSuccess,
  87. metricMatrixPublishedSuccess,
  88. metricMatrixPublishedFailure,
  89. metricAttachmentsTotalSize,
  90. metricVisitors,
  91. metricSubscribers,
  92. metricTopics,
  93. metricHTTPRequests,
  94. )
  95. }
  96. // minc increments a prometheus.Counter if it is non-nil
  97. func minc(counter prometheus.Counter) {
  98. if counter != nil {
  99. counter.Inc()
  100. }
  101. }
  102. // mset sets a prometheus.Gauge if it is non-nil
  103. func mset[T int | int64 | float64](gauge prometheus.Gauge, value T) {
  104. if gauge != nil {
  105. gauge.Set(float64(value))
  106. }
  107. }