Module: Appsignal
- Defined in:
- lib/appsignal/rack/streaming_listener.rb,
lib/appsignal.rb,
lib/appsignal/cli.rb,
lib/appsignal/hooks.rb,
lib/appsignal/utils.rb,
lib/appsignal/config.rb,
lib/appsignal/marker.rb,
lib/appsignal/version.rb,
lib/appsignal/extension.rb,
lib/appsignal/auth_check.rb,
lib/appsignal/hooks/puma.rb,
lib/appsignal/hooks/rake.rb,
lib/appsignal/subscriber.rb,
lib/appsignal/cli/install.rb,
lib/appsignal/hooks/redis.rb,
lib/appsignal/transaction.rb,
lib/appsignal/transmitter.rb,
lib/appsignal/cli/diagnose.rb,
lib/appsignal/hooks/sequel.rb,
lib/appsignal/hooks/sidekiq.rb,
lib/appsignal/hooks/unicorn.rb,
lib/appsignal/hooks/net_http.rb,
lib/appsignal/event_formatter.rb,
lib/appsignal/hooks/celluloid.rb,
lib/appsignal/hooks/passenger.rb,
lib/appsignal/params_sanitizer.rb,
lib/appsignal/hooks/delayed_job.rb,
lib/appsignal/integrations/grape.rb,
lib/appsignal/integrations/resque.rb,
lib/appsignal/cli/notify_of_deploy.rb,
lib/appsignal/integrations/railtie.rb,
lib/appsignal/update_active_support.rb,
lib/appsignal/hooks/mongo_ruby_driver.rb,
lib/appsignal/js_exception_transaction.rb,
lib/appsignal/rack/js_exception_catcher.rb,
lib/appsignal/rack/rails_instrumentation.rb,
lib/appsignal/rack/generic_instrumentation.rb,
lib/appsignal/rack/sinatra_instrumentation.rb,
lib/appsignal/integrations/mongo_ruby_driver.rb,
lib/appsignal/integrations/resque_active_job.rb,
lib/appsignal/integrations/delayed_job_plugin.rb,
lib/appsignal/event_formatter/sequel/sql_formatter.rb,
lib/appsignal/event_formatter/moped/query_formatter.rb,
lib/appsignal/event_formatter/faraday/request_formatter.rb,
lib/appsignal/event_formatter/net_http/request_formatter.rb,
lib/appsignal/integrations/capistrano/capistrano_2_tasks.rb,
lib/appsignal/event_formatter/active_record/sql_formatter.rb,
lib/appsignal/event_formatter/action_view/render_formatter.rb,
lib/appsignal/event_formatter/elastic_search/search_formatter.rb,
lib/appsignal/event_formatter/mongo_ruby_driver/query_formatter.rb,
lib/appsignal/event_formatter/active_record/instantiation_formatter.rb,
ext/appsignal_extension.c
Overview
Appsignal module that tracks exceptions in Streaming rack responses.
Defined Under Namespace
Modules: Grape, Integrations, Rack, UpdateActiveSupport, Utils
Classes: AuthCheck, CLI, Capistrano, Config, EventFormatter, Extension, Hooks, JSExceptionTransaction, Marker, ParamsSanitizer, ParamsSanitizerCopy, ParamsSanitizerCopyScrub, ParamsSanitizerDestructive, ParamsSanitizerDestructiveScrub, StreamWrapper, Subscriber, Transaction, Transmitter
Constant Summary
collapse
- VERSION =
'1.1.9'
- SQL_BODY_FORMAT =
1
Class Attribute Summary collapse
Class Method Summary
collapse
-
.active? ⇒ Boolean
-
.add_distribution_value(key, value) ⇒ Object
-
.extension_loaded? ⇒ Boolean
-
.extensions ⇒ Object
-
.forked ⇒ Object
-
.increment_counter(key, value = 1) ⇒ Object
-
.initialize_extensions ⇒ Object
-
.is_ignored_action?(action) ⇒ Boolean
-
.is_ignored_error?(error) ⇒ Boolean
(also: is_ignored_exception?)
-
.listen_for_error(&block) ⇒ Object
(also: listen_for_exception)
-
.log_formatter ⇒ Object
-
.monitor_single_transaction(name, env = {}, &block) ⇒ Object
Monitor a transaction, stop Appsignal and wait for this single transaction to be flushed.
-
.monitor_transaction(name, env = {}) ⇒ Object
Wrap a transaction with appsignal monitoring.
-
.send_error(error, tags = nil, namespace = Appsignal::Transaction::HTTP_REQUEST) ⇒ Object
(also: send_exception)
-
.set_error(exception) ⇒ Object
(also: set_exception, add_exception)
-
.set_gauge(key, value) ⇒ Object
-
.set_host_gauge(key, value) ⇒ Object
-
.set_process_gauge(key, value) ⇒ Object
-
.start ⇒ Object
-
.start_logger(path_arg = nil) ⇒ Object
-
.stop(called_by = nil) ⇒ Object
-
.tag_request(params = {}) ⇒ Object
(also: tag_job)
-
.without_instrumentation ⇒ Object
Convenience method for skipping instrumentations around a block of code.
Class Attribute Details
.agent ⇒ Object
Returns the value of attribute agent.
17
18
19
|
# File 'lib/appsignal.rb', line 17
def agent
@agent
end
|
.config ⇒ Object
Returns the value of attribute config.
17
18
19
|
# File 'lib/appsignal.rb', line 17
def config
@config
end
|
.extension_loaded ⇒ Object
Returns the value of attribute extension_loaded.
17
18
19
|
# File 'lib/appsignal.rb', line 17
def extension_loaded
@extension_loaded
end
|
.in_memory_log ⇒ Object
Returns the value of attribute in_memory_log.
17
18
19
|
# File 'lib/appsignal.rb', line 17
def in_memory_log
@in_memory_log
end
|
.logger ⇒ Object
Returns the value of attribute logger.
17
18
19
|
# File 'lib/appsignal.rb', line 17
def logger
@logger
end
|
.subscriber ⇒ Object
Returns the value of attribute subscriber.
17
18
19
|
# File 'lib/appsignal.rb', line 17
def subscriber
@subscriber
end
|
Class Method Details
.active? ⇒ Boolean
232
233
234
|
# File 'lib/appsignal.rb', line 232
def active?
config && config.active? && extension_loaded?
end
|
.add_distribution_value(key, value) ⇒ Object
.extension_loaded? ⇒ Boolean
228
229
230
|
# File 'lib/appsignal.rb', line 228
def extension_loaded?
!!@extension_loaded
end
|
.extensions ⇒ Object
19
20
21
|
# File 'lib/appsignal.rb', line 19
def extensions
@extensions ||= []
end
|
.increment_counter(key, value = 1) ⇒ Object
.initialize_extensions ⇒ Object
23
24
25
26
27
28
29
|
# File 'lib/appsignal.rb', line 23
def initialize_extensions
Appsignal.logger.debug('Initializing extensions')
extensions.each do |extension|
Appsignal.logger.debug("Initializing #{extension}")
extension.initializer
end
end
|
.is_ignored_action?(action) ⇒ Boolean
241
242
243
|
# File 'lib/appsignal.rb', line 241
def is_ignored_action?(action)
Appsignal.config[:ignore_actions].include?(action)
end
|
.is_ignored_error?(error) ⇒ Boolean
Also known as:
is_ignored_exception?
236
237
238
|
# File 'lib/appsignal.rb', line 236
def is_ignored_error?(error)
Appsignal.config[:ignore_errors].include?(error.class.name)
end
|
.listen_for_error(&block) ⇒ Object
Also known as:
listen_for_exception
132
133
134
135
136
137
|
# File 'lib/appsignal.rb', line 132
def listen_for_error(&block)
yield
rescue => error
send_error(error)
raise error
end
|
203
204
205
206
207
|
# File 'lib/appsignal.rb', line 203
def log_formatter
proc do |severity, datetime, progname, msg|
"[#{datetime.strftime('%Y-%m-%dT%H:%M:%S')} (process) ##{Process.pid}][#{severity}] #{msg}\n"
end
end
|
.monitor_single_transaction(name, env = {}, &block) ⇒ Object
Monitor a transaction, stop Appsignal and wait for this single transaction to be flushed.
Useful for cases such as Rake tasks and Resque-like systems where a process is forked and immediately exits after the transaction finishes.
126
127
128
129
130
|
# File 'lib/appsignal.rb', line 126
def monitor_single_transaction(name, env={}, &block)
monitor_transaction(name, env, &block)
ensure
stop
end
|
.monitor_transaction(name, env = {}) ⇒ Object
Wrap a transaction with appsignal monitoring.
.send_error(error, tags = nil, namespace = Appsignal::Transaction::HTTP_REQUEST) ⇒ Object
Also known as:
send_exception
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
|
# File 'lib/appsignal.rb', line 140
def send_error(error, tags=nil, namespace=Appsignal::Transaction::HTTP_REQUEST)
return if !active? || is_ignored_error?(error)
unless error.is_a?(Exception)
logger.error('Can\'t send error, given value is not an exception')
return
end
transaction = Appsignal::Transaction.new(
SecureRandom.uuid,
namespace,
Appsignal::Transaction::GenericRequest.new({})
)
transaction.set_tags(tags) if tags
transaction.set_error(error)
transaction.complete
end
|
.set_error(exception) ⇒ Object
Also known as:
set_exception, add_exception
.set_gauge(key, value) ⇒ Object
.set_host_gauge(key, value) ⇒ Object
179
180
181
|
# File 'lib/appsignal.rb', line 179
def set_host_gauge(key, value)
Appsignal::Extension.set_host_gauge(key, value.to_f)
end
|
.set_process_gauge(key, value) ⇒ Object
183
184
185
|
# File 'lib/appsignal.rb', line 183
def set_process_gauge(key, value)
Appsignal::Extension.set_process_gauge(key, value.to_f)
end
|
.start_logger(path_arg = nil) ⇒ Object
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
|
# File 'lib/appsignal.rb', line 209
def start_logger(path_arg=nil)
path = Appsignal.config ? Appsignal.config.log_file_path : nil
if path && !ENV['DYNO']
@logger = Logger.new(path)
@logger.formatter = log_formatter
else
@logger = Logger.new($stdout)
@logger.formatter = lambda do |severity, datetime, progname, msg|
"appsignal: #{msg}\n"
end
end
@logger.level = Logger::INFO
@logger << @in_memory_log.string if @in_memory_log
if path_arg
@logger.info('Setting the path in start_logger has no effect anymore, set it in the config instead')
end
end
|
.stop(called_by = nil) ⇒ Object
70
71
72
73
74
75
76
77
|
# File 'lib/appsignal.rb', line 70
def stop(called_by=nil)
if called_by
logger.debug("Stopping appsignal (#{called_by})")
else
logger.debug('Stopping appsignal')
end
Appsignal::Extension.stop
end
|
.tag_request(params = {}) ⇒ Object
Also known as:
tag_job
167
168
169
170
171
172
|
# File 'lib/appsignal.rb', line 167
def tag_request(params={})
return unless active?
transaction = Appsignal::Transaction.current
return false unless transaction
transaction.set_tags(params)
end
|
.without_instrumentation ⇒ Object
Convenience method for skipping instrumentations around a block of code.