Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gitlab/metrics/subscribers/action_cable.rb')
-rw-r--r--lib/gitlab/metrics/subscribers/action_cable.rb72
1 files changed, 72 insertions, 0 deletions
diff --git a/lib/gitlab/metrics/subscribers/action_cable.rb b/lib/gitlab/metrics/subscribers/action_cable.rb
new file mode 100644
index 00000000000..a9355eeae40
--- /dev/null
+++ b/lib/gitlab/metrics/subscribers/action_cable.rb
@@ -0,0 +1,72 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Metrics
+ module Subscribers
+ class ActionCable < ActiveSupport::Subscriber
+ include Gitlab::Utils::StrongMemoize
+
+ attach_to :action_cable
+
+ SINGLE_CLIENT_TRANSMISSION = :action_cable_single_client_transmissions_total
+ TRANSMIT_SUBSCRIPTION_CONFIRMATION = :action_cable_subscription_confirmations_total
+ TRANSMIT_SUBSCRIPTION_REJECTION = :action_cable_subscription_rejections_total
+ BROADCAST = :action_cable_broadcasts_total
+
+ def transmit_subscription_confirmation(event)
+ confirm_subscription_counter.increment
+ end
+
+ def transmit_subscription_rejection(event)
+ reject_subscription_counter.increment
+ end
+
+ def transmit(event)
+ transmit_counter.increment
+ end
+
+ def broadcast(event)
+ broadcast_counter.increment
+ end
+
+ private
+
+ def transmit_counter
+ strong_memoize("transmission_counter") do
+ ::Gitlab::Metrics.counter(
+ SINGLE_CLIENT_TRANSMISSION,
+ 'The number of ActionCable messages transmitted to any client in any channel'
+ )
+ end
+ end
+
+ def broadcast_counter
+ strong_memoize("broadcast_counter") do
+ ::Gitlab::Metrics.counter(
+ BROADCAST,
+ 'The number of ActionCable broadcasts emitted'
+ )
+ end
+ end
+
+ def confirm_subscription_counter
+ strong_memoize("confirm_subscription_counter") do
+ ::Gitlab::Metrics.counter(
+ TRANSMIT_SUBSCRIPTION_CONFIRMATION,
+ 'The number of ActionCable subscriptions from clients confirmed'
+ )
+ end
+ end
+
+ def reject_subscription_counter
+ strong_memoize("reject_subscription_counter") do
+ ::Gitlab::Metrics.counter(
+ TRANSMIT_SUBSCRIPTION_REJECTION,
+ 'The number of ActionCable subscriptions from clients rejected'
+ )
+ end
+ end
+ end
+ end
+ end
+end