server_metrics.go 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. package server
  2. import (
  3. "github.com/prometheus/client_golang/prometheus"
  4. )
  5. var (
  6. metrics = newMetrics()
  7. )
  8. type serverMetrics struct {
  9. messagesPublishedSuccess prometheus.Counter
  10. messagesPublishedFailure prometheus.Counter
  11. messagesCached prometheus.Gauge
  12. firebasePublishedSuccess prometheus.Counter
  13. firebasePublishedFailure prometheus.Counter
  14. emailsPublishedSuccess prometheus.Counter
  15. emailsPublishedFailure prometheus.Counter
  16. emailsReceivedSuccess prometheus.Counter
  17. emailsReceivedFailure prometheus.Counter
  18. unifiedPushPublishedSuccess prometheus.Counter
  19. matrixPublishedSuccess prometheus.Counter
  20. matrixPublishedFailure prometheus.Counter
  21. attachmentsTotalSize prometheus.Gauge
  22. visitors prometheus.Gauge
  23. subscribers prometheus.Gauge
  24. topics prometheus.Gauge
  25. httpRequests *prometheus.CounterVec
  26. }
  27. func newMetrics() *serverMetrics {
  28. m := &serverMetrics{
  29. messagesPublishedSuccess: prometheus.NewCounter(prometheus.CounterOpts{
  30. Name: "ntfy_messages_published_success",
  31. }),
  32. messagesPublishedFailure: prometheus.NewCounter(prometheus.CounterOpts{
  33. Name: "ntfy_messages_published_failure",
  34. }),
  35. messagesCached: prometheus.NewGauge(prometheus.GaugeOpts{
  36. Name: "ntfy_messages_cached_total",
  37. }),
  38. firebasePublishedSuccess: prometheus.NewCounter(prometheus.CounterOpts{
  39. Name: "ntfy_firebase_published_success",
  40. }),
  41. firebasePublishedFailure: prometheus.NewCounter(prometheus.CounterOpts{
  42. Name: "ntfy_firebase_published_failure",
  43. }),
  44. emailsPublishedSuccess: prometheus.NewCounter(prometheus.CounterOpts{
  45. Name: "ntfy_emails_sent_success",
  46. }),
  47. emailsPublishedFailure: prometheus.NewCounter(prometheus.CounterOpts{
  48. Name: "ntfy_emails_sent_failure",
  49. }),
  50. emailsReceivedSuccess: prometheus.NewCounter(prometheus.CounterOpts{
  51. Name: "ntfy_emails_received_success",
  52. }),
  53. emailsReceivedFailure: prometheus.NewCounter(prometheus.CounterOpts{
  54. Name: "ntfy_emails_received_failure",
  55. }),
  56. unifiedPushPublishedSuccess: prometheus.NewCounter(prometheus.CounterOpts{
  57. Name: "ntfy_unifiedpush_published_success",
  58. }),
  59. matrixPublishedSuccess: prometheus.NewCounter(prometheus.CounterOpts{
  60. Name: "ntfy_matrix_published_success",
  61. }),
  62. matrixPublishedFailure: prometheus.NewCounter(prometheus.CounterOpts{
  63. Name: "ntfy_matrix_published_failure",
  64. }),
  65. attachmentsTotalSize: prometheus.NewGauge(prometheus.GaugeOpts{
  66. Name: "ntfy_attachments_total_size",
  67. }),
  68. visitors: prometheus.NewGauge(prometheus.GaugeOpts{
  69. Name: "ntfy_visitors_total",
  70. }),
  71. subscribers: prometheus.NewGauge(prometheus.GaugeOpts{
  72. Name: "ntfy_subscribers_total",
  73. }),
  74. topics: prometheus.NewGauge(prometheus.GaugeOpts{
  75. Name: "ntfy_topics_total",
  76. }),
  77. httpRequests: prometheus.NewCounterVec(prometheus.CounterOpts{
  78. Name: "ntfy_http_requests_total",
  79. }, []string{"http_code", "ntfy_code", "http_method"}),
  80. }
  81. prometheus.MustRegister(
  82. m.messagesPublishedSuccess,
  83. m.messagesPublishedFailure,
  84. m.messagesCached,
  85. m.firebasePublishedSuccess,
  86. m.firebasePublishedFailure,
  87. m.emailsPublishedSuccess,
  88. m.emailsPublishedFailure,
  89. m.emailsReceivedSuccess,
  90. m.emailsReceivedFailure,
  91. m.unifiedPushPublishedSuccess,
  92. m.matrixPublishedSuccess,
  93. m.matrixPublishedFailure,
  94. m.attachmentsTotalSize,
  95. m.visitors,
  96. m.subscribers,
  97. m.topics,
  98. m.httpRequests,
  99. )
  100. return m
  101. }