Module: CloseYourIt
- Defined in:
- lib/closeyourit-ruby.rb,
lib/closeyourit/event.rb,
lib/closeyourit/scope.rb,
lib/closeyourit/client.rb,
lib/closeyourit/monitor.rb,
lib/closeyourit/version.rb,
lib/closeyourit/scrubber.rb,
lib/closeyourit/transport.rb,
lib/closeyourit/breadcrumb.rb,
lib/closeyourit/instrumenter.rb,
lib/closeyourit/configuration.rb,
lib/closeyourit/rails/railtie.rb,
lib/closeyourit/background_worker.rb,
lib/closeyourit/breadcrumb_buffer.rb,
lib/closeyourit/events/error_event.rb,
lib/closeyourit/rails/query_source.rb,
lib/closeyourit/events/message_event.rb,
lib/closeyourit/rails/request_context.rb,
lib/closeyourit/sidekiq/error_handler.rb,
lib/closeyourit/rails/error_subscriber.rb,
lib/closeyourit/subscribers/slow_query.rb,
lib/closeyourit/events/slow_query_event.rb,
lib/closeyourit/events/slow_method_event.rb,
lib/closeyourit/rails/capture_exceptions.rb,
lib/closeyourit/rails/active_job_extension.rb
Overview
CloseYourIt — client di telemetria (errori + statistiche di query/metodi lenti) che invia gli eventi all’endpoint di ingest di CloseYourIt.
Entry point della gemma (file con trattino come ‘sentry-ruby`): `require “closeyourit-ruby”` carica il modulo `CloseYourIt`.
Defined Under Namespace
Modules: Instrumenter, Monitor, Rails, Sidekiq, Subscribers Classes: BackgroundWorker, Breadcrumb, BreadcrumbBuffer, Client, Configuration, Error, ErrorEvent, Event, MessageEvent, Scope, Scrubber, SlowMethodEvent, SlowQueryEvent, Transport
Constant Summary collapse
- CAPTURED_FLAG =
:@__closeyourit_captured- VERSION =
"0.2.0"
Class Attribute Summary collapse
Class Method Summary collapse
-
.add_breadcrumb(message: nil, category: nil, type: "default", level: "info", data: {}) ⇒ Object
Aggiunge una briciola di contesto (query, navigazione, evento custom) all’evento corrente.
-
.capture_event(event) ⇒ Object
Spedisce un evento già costruito (slow_query/slow_method).
-
.capture_exception(exception, handled: false, level: "error", contexts: nil) ⇒ Object
Cattura un’eccezione e la spedisce (fire-and-forget).
-
.capture_message(message, level: "info") ⇒ Object
Invia un messaggio diagnostico esplicito (non un’eccezione).
- .clear_scope ⇒ Object
- .configuration ⇒ Object
- .configure_scope {|Scope.current| ... } ⇒ Object
- .configured? ⇒ Boolean
- .enabled? ⇒ Boolean
-
.init {|@configuration| ... } ⇒ Object
Configura il client.
-
.measure(label, &block) ⇒ Object
Cronometra un blocco e invia un slow_method se supera la soglia.
- .set_context(key, attributes) ⇒ Object
- .set_extra(key, value) ⇒ Object
- .set_tag(key, value) ⇒ Object
- .set_tags(attributes) ⇒ Object
-
.set_user(attributes) ⇒ Object
— Scope per-richiesta/job (user/tags/extra/contexts) — Arricchiscono l’evento corrente; resettati a fine richiesta/job da middleware e estensioni.
Class Attribute Details
.logger ⇒ Object
141 142 143 |
# File 'lib/closeyourit-ruby.rb', line 141 def logger @logger ||= default_logger end |
Class Method Details
.add_breadcrumb(message: nil, category: nil, type: "default", level: "info", data: {}) ⇒ Object
Aggiunge una briciola di contesto (query, navigazione, evento custom) all’evento corrente. No-op se breadcrumbs disabilitati; ‘data` viene scrubato (denylist) prima di essere salvato.
132 133 134 135 136 137 138 139 |
# File 'lib/closeyourit-ruby.rb', line 132 def (message: nil, category: nil, type: "default", level: "info", data: {}) return nil unless configuration. scrubbed = data.nil? || data.empty? ? data : Scrubber.new(configuration).filter_params(data) Scope.current.( Breadcrumb.new(message: , category: category, type: type, level: level, data: scrubbed) ) end |
.capture_event(event) ⇒ Object
Spedisce un evento già costruito (slow_query/slow_method).
77 78 79 80 81 |
# File 'lib/closeyourit-ruby.rb', line 77 def capture_event(event) return nil unless enabled? client.capture_event(event) end |
.capture_exception(exception, handled: false, level: "error", contexts: nil) ⇒ Object
Cattura un’eccezione e la spedisce (fire-and-forget). No-op se disabilitato, se l’eccezione è esclusa o già catturata.
62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/closeyourit-ruby.rb', line 62 def capture_exception(exception, handled: false, level: "error", contexts: nil) return nil unless enabled? return nil if ignored_exception?(exception) return nil if exception_captured?(exception) mark_captured(exception) return nil unless sampled? event = ErrorEvent.from_exception( exception, configuration: configuration, handled: handled, level: level, contexts: contexts ) client.capture_event(event) end |
.capture_message(message, level: "info") ⇒ Object
Invia un messaggio diagnostico esplicito (non un’eccezione). Soggetto a sampling + scope.
CloseYourIt.("cache miss storm", level: "warning")
85 86 87 88 89 90 91 |
# File 'lib/closeyourit-ruby.rb', line 85 def (, level: "info") return nil unless enabled? return nil unless sampled? event = MessageEvent.new(, level: level, configuration: configuration) client.capture_event(event) end |
.clear_scope ⇒ Object
126 127 128 |
# File 'lib/closeyourit-ruby.rb', line 126 def clear_scope Scope.reset! end |
.configuration ⇒ Object
48 49 50 |
# File 'lib/closeyourit-ruby.rb', line 48 def configuration @configuration ||= Configuration.new end |
.configure_scope {|Scope.current| ... } ⇒ Object
122 123 124 |
# File 'lib/closeyourit-ruby.rb', line 122 def configure_scope yield(Scope.current) if block_given? end |
.configured? ⇒ Boolean
52 53 54 |
# File 'lib/closeyourit-ruby.rb', line 52 def configured? !@configuration.nil? end |
.enabled? ⇒ Boolean
56 57 58 |
# File 'lib/closeyourit-ruby.rb', line 56 def enabled? configuration.enabled? end |
.init {|@configuration| ... } ⇒ Object
Configura il client. Senza token/endpoint → no-op.
40 41 42 43 44 45 46 |
# File 'lib/closeyourit-ruby.rb', line 40 def init @configuration = Configuration.new @client = nil yield(@configuration) if block_given? @configuration.validate! @configuration end |
.measure(label, &block) ⇒ Object
Cronometra un blocco e invia un slow_method se supera la soglia.
CloseYourIt.measure("checkout.total") { ... }
95 96 97 |
# File 'lib/closeyourit-ruby.rb', line 95 def measure(label, &block) Instrumenter.measure(label, &block) end |
.set_context(key, attributes) ⇒ Object
114 115 116 |
# File 'lib/closeyourit-ruby.rb', line 114 def set_context(key, attributes) Scope.current.set_context(key, attributes) end |
.set_extra(key, value) ⇒ Object
118 119 120 |
# File 'lib/closeyourit-ruby.rb', line 118 def set_extra(key, value) Scope.current.set_extra(key, value) end |
.set_tag(key, value) ⇒ Object
106 107 108 |
# File 'lib/closeyourit-ruby.rb', line 106 def set_tag(key, value) Scope.current.set_tag(key, value) end |