Module: BrainzLab::Signal
- Defined in:
- lib/brainzlab/signal.rb,
lib/brainzlab/signal/client.rb,
lib/brainzlab/signal/provisioner.rb
Defined Under Namespace
Classes: Client, Provisioner
Constant Summary collapse
- SEVERITIES =
%i[info warning error critical].freeze
Class Method Summary collapse
-
.alert(name, message, severity: :warning, channels: nil, data: {}) ⇒ Object
Send an alert with a message.
- .client ⇒ Object
-
.ensure_provisioned! ⇒ Object
INTERNAL ===.
-
.notify(channel, message, title: nil, data: {}) ⇒ Object
Send a notification to specific channels.
- .provisioner ⇒ Object
- .reset! ⇒ Object
-
.test! ⇒ Object
Send a test alert to verify configuration.
-
.trigger(rule_name, context = {}) ⇒ Object
Trigger a predefined alert rule.
Class Method Details
.alert(name, message, severity: :warning, channels: nil, data: {}) ⇒ Object
Send an alert with a message
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/brainzlab/signal.rb', line 17 def alert(name, , severity: :warning, channels: nil, data: {}) return unless enabled? ensure_provisioned! return unless BrainzLab.configuration.signal_valid? payload = { type: 'alert', name: name, message: , severity: severity.to_s, channels: channels, data: data, timestamp: Time.now.utc.iso8601(3), environment: BrainzLab.configuration.environment, service: BrainzLab.configuration.service, host: BrainzLab.configuration.host, context: context_data } client.send_alert(payload) end |
.client ⇒ Object
110 111 112 |
# File 'lib/brainzlab/signal.rb', line 110 def client @client ||= Client.new(BrainzLab.configuration) end |
.ensure_provisioned! ⇒ Object
INTERNAL ===
99 100 101 102 103 104 |
# File 'lib/brainzlab/signal.rb', line 99 def ensure_provisioned! return if @provisioned @provisioned = true provisioner.ensure_project! end |
.notify(channel, message, title: nil, data: {}) ⇒ Object
Send a notification to specific channels
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/brainzlab/signal.rb', line 45 def notify(channel, , title: nil, data: {}) return unless enabled? ensure_provisioned! return unless BrainzLab.configuration.signal_valid? channels = Array(channel) payload = { type: 'notification', channels: channels, message: , title: title, data: data, timestamp: Time.now.utc.iso8601(3), environment: BrainzLab.configuration.environment, service: BrainzLab.configuration.service } client.send_notification(payload) end |
.provisioner ⇒ Object
106 107 108 |
# File 'lib/brainzlab/signal.rb', line 106 def provisioner @provisioner ||= Provisioner.new(BrainzLab.configuration) end |
.reset! ⇒ Object
114 115 116 117 118 |
# File 'lib/brainzlab/signal.rb', line 114 def reset! @client = nil @provisioner = nil @provisioned = false end |
.test! ⇒ Object
Send a test alert to verify configuration
88 89 90 91 92 93 94 95 |
# File 'lib/brainzlab/signal.rb', line 88 def test! alert( 'test_alert', 'This is a test alert from BrainzLab Signal SDK', severity: :info, data: { test: true, sdk_version: BrainzLab::VERSION } ) end |
.trigger(rule_name, context = {}) ⇒ Object
Trigger a predefined alert rule
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/brainzlab/signal.rb', line 69 def trigger(rule_name, context = {}) return unless enabled? ensure_provisioned! return unless BrainzLab.configuration.signal_valid? payload = { type: 'trigger', rule: rule_name, context: context, timestamp: Time.now.utc.iso8601(3), environment: BrainzLab.configuration.environment, service: BrainzLab.configuration.service } client.trigger_rule(payload) end |