Module: Appsignal
- Defined in:
- lib/appsignal.rb,
lib/appsignal/cli.rb,
lib/appsignal/ipc.rb,
lib/appsignal/agent.rb,
lib/appsignal/config.rb,
lib/appsignal/marker.rb,
lib/appsignal/version.rb,
lib/appsignal/aggregator.rb,
lib/appsignal/auth_check.rb,
lib/appsignal/transaction.rb,
lib/appsignal/transmitter.rb,
lib/appsignal/rack/listener.rb,
lib/appsignal/params_sanitizer.rb,
lib/appsignal/integrations/rails.rb,
lib/appsignal/integrations/resque.rb,
lib/appsignal/integrations/sidekiq.rb,
lib/appsignal/rack/instrumentation.rb,
lib/appsignal/transaction/formatter.rb,
lib/appsignal/integrations/delayed_job.rb,
lib/appsignal/aggregator/post_processor.rb,
lib/appsignal/aggregator/middleware/chain.rb,
lib/appsignal/aggregator/middleware/delete_blanks.rb,
lib/appsignal/integrations/capistrano/careful_logger.rb,
lib/appsignal/integrations/capistrano/capistrano_2_tasks.rb,
lib/appsignal/aggregator/middleware/action_view_sanitizer.rb,
lib/appsignal/aggregator/middleware/active_record_sanitizer.rb
Defined Under Namespace
Modules: CarefulLogger, Integrations, Rack
Classes: Agent, Aggregator, AuthCheck, CLI, Config, Event, IPC, Marker, ParamsSanitizer, ParamsSanitizerCopy, ParamsSanitizerCopyScrub, ParamsSanitizerDestructive, ParamsSanitizerDestructiveScrub, Transaction, Transmitter
Constant Summary
collapse
- VERSION =
'0.11.4'
Class Attribute Summary collapse
Class Method Summary
collapse
Class Attribute Details
.agent ⇒ Object
Returns the value of attribute agent.
14
15
16
|
# File 'lib/appsignal.rb', line 14
def agent
@agent
end
|
.config ⇒ Object
Returns the value of attribute config.
14
15
16
|
# File 'lib/appsignal.rb', line 14
def config
@config
end
|
.in_memory_log ⇒ Object
Returns the value of attribute in_memory_log.
14
15
16
|
# File 'lib/appsignal.rb', line 14
def in_memory_log
@in_memory_log
end
|
.logger ⇒ Object
Returns the value of attribute logger.
14
15
16
|
# File 'lib/appsignal.rb', line 14
def logger
@logger
end
|
Class Method Details
.active? ⇒ Boolean
161
162
163
164
|
# File 'lib/appsignal.rb', line 161
def active?
config && config.active? &&
agent && agent.active?
end
|
.add_exception(exception) ⇒ Object
.enqueue(transaction) ⇒ true
Convenience method for adding a transaction to the queue. This queue is managed and is periodically pushed to Appsignal.
71
72
73
74
|
# File 'lib/appsignal.rb', line 71
def enqueue(transaction)
return unless active?
agent.enqueue(transaction)
end
|
.extensions ⇒ Object
28
29
30
|
# File 'lib/appsignal.rb', line 28
def extensions
@extensions ||= []
end
|
.initialize_extensions ⇒ Object
32
33
34
35
36
37
38
|
# File 'lib/appsignal.rb', line 32
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
170
171
172
|
# File 'lib/appsignal.rb', line 170
def is_ignored_action?(action)
Appsignal.config[:ignore_actions].include?(action)
end
|
.is_ignored_exception?(exception) ⇒ Boolean
166
167
168
|
# File 'lib/appsignal.rb', line 166
def is_ignored_exception?(exception)
Appsignal.config[:ignore_exceptions].include?(exception.class.name)
end
|
.listen_for_exception(&block) ⇒ Object
95
96
97
98
99
100
|
# File 'lib/appsignal.rb', line 95
def listen_for_exception(&block)
yield
rescue Exception => exception
send_exception(exception)
raise exception
end
|
.load_instrumentations ⇒ Object
24
25
26
|
# File 'lib/appsignal.rb', line 24
def load_instrumentations
require 'appsignal/instrumentations/net_http' if config[:instrument_net_http]
end
|
.load_integrations ⇒ Object
16
17
18
19
20
21
22
|
# File 'lib/appsignal.rb', line 16
def load_integrations
require 'appsignal/integrations/delayed_job'
require 'appsignal/integrations/passenger'
require 'appsignal/integrations/unicorn'
require 'appsignal/integrations/sidekiq'
require 'appsignal/integrations/resque'
end
|
.monitor_transaction(name, payload = {}) ⇒ Object
.post_processing_middleware {|@post_processing_chain| ... } ⇒ Object
.send_exception(exception, tags = nil) ⇒ Object
102
103
104
105
106
107
108
109
|
# File 'lib/appsignal.rb', line 102
def send_exception(exception, tags=nil)
return if !active? || is_ignored_exception?(exception)
transaction = Appsignal::Transaction.create(SecureRandom.uuid, ENV)
transaction.add_exception(exception)
transaction.set_tags(tags) if tags
transaction.complete!
Appsignal.agent.send_queue
end
|
.start ⇒ Object
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
# File 'lib/appsignal.rb', line 40
def start
if config
if config[:debug]
logger.level = Logger::DEBUG
else
logger.level = Logger::INFO
end
if config.active?
logger.info("Starting AppSignal #{Appsignal::VERSION} on #{RUBY_VERSION}/#{RUBY_PLATFORM}")
load_integrations
load_instrumentations
initialize_extensions
@agent = Appsignal::Agent.new
at_exit do
logger.debug('Running at_exit block')
@agent.send_queue
end
else
logger.info("Not starting, not active for #{config.env}")
end
else
logger.error('Can\'t start, no config loaded')
end
end
|
.start_logger(path) ⇒ Object
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
|
# File 'lib/appsignal.rb', line 139
def start_logger(path)
if path && File.writable?(path) &&
!ENV['DYNO'] &&
!ENV['SHELLYCLOUD_DEPLOYMENT']
@logger = Logger.new(File.join(path, 'appsignal.log'))
@logger.formatter = Logger::Formatter.new
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
end
|
.tag_request(params = {}) ⇒ Object
Also known as:
tag_job
119
120
121
122
123
124
|
# File 'lib/appsignal.rb', line 119
def tag_request(params={})
return unless active?
transaction = Appsignal::Transaction.current
return false unless transaction
transaction.set_tags(params)
end
|
.transactions ⇒ Object
127
128
129
|
# File 'lib/appsignal.rb', line 127
def transactions
@transactions ||= {}
end
|
.without_instrumentation ⇒ Object
Convenience method for skipping instrumentations around a block of code.