Send the parameters role name and role instance to application insights
This commit is contained in:
Родитель
5db6b4ad65
Коммит
b54b2bfa33
|
@ -144,9 +144,11 @@ raise Exception, 'Boom!'
|
|||
```ruby
|
||||
# set up the TrackRequest middleware in the rackup (config.ru) file
|
||||
require 'application_insights'
|
||||
use ApplicationInsights::Rack::TrackRequest, '<YOUR INSTRUMENTATION KEY GOES HERE>', <buffer size>
|
||||
use ApplicationInsights::Rack::TrackRequest, '<YOUR INSTRUMENTATION KEY GOES HERE>', <buffer size>, <send_interval>, <roles>
|
||||
# For rails, suggest to set up this middleware in application.rb so that unhandled exceptions from controllers are also collected
|
||||
config.middleware.use 'ApplicationInsights::Rack::TrackRequest', '<YOUR INSTRUMENTATION KEY GOES HERE>', <buffer size>
|
||||
config.middleware.use 'ApplicationInsights::Rack::TrackRequest', '<YOUR INSTRUMENTATION KEY GOES HERE>', <buffer size>, <send_interval>, <roles>
|
||||
|
||||
Example: config.middleware.use 'ApplicationInsights::Rack::TrackRequest', 'd770211a-fdeb-4e91-b7e0-a1fffa282ec4', 500, 60, { role: 'test-role', role_instance: 'teste-role-instance' }
|
||||
```
|
||||
|
||||
#### Rerieving the Request-Id value from ApplicationInsights ####
|
||||
|
|
|
@ -44,7 +44,7 @@ module ApplicationInsights
|
|||
return unless item
|
||||
|
||||
@queue.push(item)
|
||||
|
||||
|
||||
flush if @queue.length >= @max_queue_length
|
||||
end
|
||||
|
||||
|
|
|
@ -15,11 +15,13 @@ module ApplicationInsights
|
|||
# send to Application Insights when buffer is full.
|
||||
# @param [Fixnum] send_interval the frequency (in seconds) to check buffer
|
||||
# and send buffered requests to Application Insights if any.
|
||||
def initialize(app, instrumentation_key, buffer_size = 500, send_interval = 60)
|
||||
# @param [Hash] roles send a role and role instance string to Application Insights.
|
||||
def initialize(app, instrumentation_key, buffer_size = 500, send_interval = 60, roles = {})
|
||||
@app = app
|
||||
@instrumentation_key = instrumentation_key
|
||||
@buffer_size = buffer_size
|
||||
@send_interval = send_interval
|
||||
@roles = roles
|
||||
|
||||
@sender = Channel::AsynchronousSender.new
|
||||
@sender.send_interval = @send_interval
|
||||
|
@ -54,7 +56,7 @@ module ApplicationInsights
|
|||
options = options_hash(request)
|
||||
|
||||
data = request_data(request_id, start_time, duration, status, success, options)
|
||||
context = telemetry_context(request_id, env['HTTP_REQUEST_ID'])
|
||||
context = telemetry_context(request_id, env['HTTP_REQUEST_ID'], @roles)
|
||||
|
||||
@client.channel.write data, context, start_time
|
||||
|
||||
|
@ -141,11 +143,13 @@ module ApplicationInsights
|
|||
)
|
||||
end
|
||||
|
||||
def telemetry_context(request_id, request_id_header)
|
||||
def telemetry_context(request_id, request_id_header, roles)
|
||||
context = Channel::TelemetryContext.new
|
||||
context.instrumentation_key = @instrumentation_key
|
||||
context.operation.id = operation_id(request_id)
|
||||
context.operation.parent_id = request_id_header
|
||||
context.cloud.role = roles.values[0].instance_of?(String) == true ? roles.values[0] : nil
|
||||
context.cloud.role_instance = roles.values[1].instance_of?(String) == true ? roles.values[1] : nil
|
||||
|
||||
context
|
||||
end
|
||||
|
|
Загрузка…
Ссылка в новой задаче