Skip to content

Commit

Permalink
wire worker to emit to fluentd when configured
Browse files Browse the repository at this point in the history
* also emits app error logs to fluent

[finishes #172415438]

Co-authored-by: Connor Braa <[email protected]>
Co-authored-by: Renee Chu <[email protected]>
  • Loading branch information
cwlbraa and reneighbor committed Jun 16, 2020
1 parent b1e1e0e commit 6798ef7
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 7 deletions.
1 change: 1 addition & 0 deletions lib/app_log_emitter.rb
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ def emit(app_id, message)
end

def emit_error(app_id, message)
fluent_emitter.emit(app_id, message) if fluent_emitter
emitter.emit_error(app_id, message, generate_tags(app_id)) if emitter
rescue => e
logger.error('app_event_emitter.emit_error.failed', app_id: app_id, message: message, error: e)
Expand Down
7 changes: 4 additions & 3 deletions lib/cloud_controller/runner.rb
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ def start_cloud_controller
setup_blobstore
@config.configure_components

setup_loggregator_emitter
setup_app_log_emitter
@config.set(:external_host, VCAP::HostSystem.new.local_ip(@config.get(:local_route)))
end

Expand Down Expand Up @@ -156,13 +156,14 @@ def setup_blobstore
CloudController::DependencyLocator.instance.buildpack_blobstore.ensure_bucket_exists
end

def setup_loggregator_emitter
def setup_app_log_emitter
VCAP::AppLogEmitter.fluent_emitter = fluent_emitter if @config.get(:fluent)

if @config.get(:loggregator) && @config.get(:loggregator, :router)
VCAP::AppLogEmitter.emitter = LoggregatorEmitter::Emitter.new(@config.get(:loggregator, :router), 'cloud_controller', 'API', @config.get(:index))
VCAP::AppLogEmitter.logger = logger
end

VCAP::AppLogEmitter.logger = logger
end

def fluent_emitter
Expand Down
23 changes: 19 additions & 4 deletions lib/tasks/jobs.rake
Original file line number Diff line number Diff line change
Expand Up @@ -63,12 +63,11 @@ namespace :jobs do
def start_working
config = RakeConfig.config
BackgroundJobEnvironment.new(config).setup_environment(readiness_port)

logger = Steno.logger('cc-worker')
logger.info("Starting job with options #{@queue_options}")
if config.get(:loggregator) && config.get(:loggregator, :router)
VCAP::AppLogEmitter.emitter = LoggregatorEmitter::Emitter.new(config.get(:loggregator, :router), 'cloud_controller', 'API', config.get(:index))
VCAP::AppLogEmitter.logger = logger
end

setup_app_log_emitter(config, logger)
Delayed::Worker.destroy_failed_jobs = false
Delayed::Worker.max_attempts = 3
Delayed::Worker.logger = logger
Expand All @@ -79,6 +78,22 @@ namespace :jobs do

private

def setup_app_log_emitter(config, logger)
VCAP::AppLogEmitter.fluent_emitter = fluent_emitter(config) if config.get(:fluent)
if config.get(:loggregator) && config.get(:loggregator, :router)
VCAP::AppLogEmitter.emitter = LoggregatorEmitter::Emitter.new(config.get(:loggregator, :router), 'cloud_controller', 'API', config.get(:index))
end

VCAP::AppLogEmitter.logger = logger
end

def fluent_emitter(config)
VCAP::FluentEmitter.new(Fluent::Logger::FluentLogger.new(nil,
host: config.get(:fluent, :host) || 'localhost',
port: config.get(:fluent, :port) || 24224,
))
end

def readiness_port
if is_first_generic_worker_on_machine?
RakeConfig.config.get(:readiness_port, :cloud_controller_worker)
Expand Down
6 changes: 6 additions & 0 deletions spec/unit/lib/app_log_emitter_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,12 @@ module VCAP
AppLogEmitter.emit(app.guid, 'log message')
end

it 'emits app event logs to the fluent emitter' do
expect(fluent_emitter).to receive(:emit).with(app.guid, 'error')

AppLogEmitter.emit_error(app.guid, 'error')
end

it 'logs errors on failure' do
expect(fluent_emitter).to receive(:emit).with(app.guid, 'log message').and_raise(StandardError.new('rekt'))
expect(logger).to receive(:error)
Expand Down

0 comments on commit 6798ef7

Please sign in to comment.