Skip to content

Commit b586de9

Browse files
committed
Add configuration for publishing cc-worker metrics
1 parent 8ff3506 commit b586de9

File tree

5 files changed

+80
-5
lines changed

5 files changed

+80
-5
lines changed

jobs/cloud_controller_worker/spec

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -425,6 +425,18 @@ properties:
425425
description: "The number of seconds to wait for each generic cloud_controller_worker worker process to finish processing jobs before forcefully shutting it down"
426426
default: 15
427427

428+
cc.publish_metrics:
429+
default: false
430+
description: "When set to true a small webserver will be started in a seperate thread within the first worker's process.
431+
This webserver will publish prometheus metrics of the workers under '/metrics'. The webserver will listen on the port
432+
defined in 'cc.prometheus_port'."
433+
cc.prometheus_port:
434+
default: 9394
435+
description: "When 'cc.publish_metrics' is set to true, the webserver, which publishes the metrics, will listen on this port."
436+
437+
cc.directories.tmpdir:
438+
default: "/var/vcap/data/cloud_controller_worker/tmp"
439+
description: "The directory to use for temporary files"
428440

429441
uaa.clients.cc-service-dashboards.secret:
430442
description: "Used for generating SSO clients for service brokers."

jobs/cloud_controller_worker/templates/cloud_controller_ng.yml.erb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -356,3 +356,9 @@ cpu_weight_max_memory: <%= link("cloud_controller_internal").p("cc.cpu_weight_ma
356356
max_manifest_service_binding_poll_duration_in_seconds: <%= p("cc.max_manifest_service_binding_poll_duration_in_seconds") %>
357357

358358
app_log_revision: <%= link("cloud_controller_internal").p("cc.app_log_revision") %>
359+
360+
publish_metrics: <%= p("cc.publish_metrics") %>
361+
prometheus_port: <%= p("cc.prometheus_port") %>
362+
363+
directories:
364+
tmpdir: <%= p("cc.directories.tmpdir") %>

jobs/cloud_controller_worker/templates/post-start.sh.erb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ set -ex
44

55
function fix_bundler_home_permissions {
66
BUNDLER_DIR1=/tmp/bundler
7-
BUNDLER_DIR2=/var/vcap/data/cloud_controller_worker/tmp/bundler
7+
BUNDLER_DIR2="<%= p("cc.directories.tmpdir") %>/bundler"
88
chpst -u vcap:vcap mkdir -p $BUNDLER_DIR1 $BUNDLER_DIR2
99
chown vcap:vcap -R $BUNDLER_DIR1 $BUNDLER_DIR2
1010
chpst -u vcap:vcap chmod -R go-w $BUNDLER_DIR1 $BUNDLER_DIR2

jobs/cloud_controller_worker/templates/pre-start.sh.erb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,10 @@ function setup_directories {
1818
mkdir -p "/var/vcap/sys/log/cloud_controller_worker"
1919
chown -R vcap:vcap "/var/vcap/sys/log/cloud_controller_worker"
2020

21-
mkdir -p "/var/vcap/data/cloud_controller_worker/tmp"
22-
chown vcap:vcap "/var/vcap/data/cloud_controller_worker/tmp"
21+
mkdir -p "<%= p("cc.directories.tmpdir") %>"
22+
chown vcap:vcap "<%= p("cc.directories.tmpdir") %>"
2323

24-
BUNDLER_DIR=/var/vcap/data/cloud_controller_worker/tmp/bundler
24+
BUNDLER_DIR="<%= p("cc.directories.tmpdir") %>/bundler"
2525
chpst -u vcap:vcap mkdir -p $BUNDLER_DIR
2626
chpst -u vcap:vcap chmod -R go-w $BUNDLER_DIR
2727
}

spec/cloud_controller_worker/cloud_controller_worker_spec.rb

Lines changed: 58 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ module Test
2727
'skip_validation' => false,
2828
'current_key_label' => 'encryption_key_0',
2929
:keys => { 'encryption_key_0' => '((cc_db_encryption_key))' }
30-
}
30+
},
31+
'directories' => {}
3132
},
3233
'ccdb' => {
3334
'db_scheme' => 'mysql',
@@ -277,6 +278,62 @@ module Test
277278
expect(template_hash['packages']['max_valid_packages_stored']).to be(5)
278279
end
279280
end
281+
282+
describe 'metrics' do
283+
context 'when cc.publish_metrics not set' do
284+
it 'is set to false' do
285+
template_hash = YAML.safe_load(template.render(manifest_properties, consumes: links))
286+
expect(template_hash['publish_metrics']).to be(false)
287+
end
288+
end
289+
290+
context 'when cc.publish_metrics set to true' do
291+
before do
292+
manifest_properties['cc']['publish_metrics'] = true
293+
end
294+
295+
it 'is set to true' do
296+
template_hash = YAML.safe_load(template.render(manifest_properties, consumes: links))
297+
expect(template_hash['publish_metrics']).to be(true)
298+
end
299+
end
300+
301+
context 'when cc.prometheus_port not set' do
302+
it 'uses default' do
303+
template_hash = YAML.safe_load(template.render(manifest_properties, consumes: links))
304+
expect(template_hash['prometheus_port']).to eq(9394)
305+
end
306+
end
307+
308+
context 'when cc.prometheus_port is set' do
309+
before do
310+
manifest_properties['cc']['prometheus_port'] = 9397
311+
end
312+
313+
it 'uses the default' do
314+
template_hash = YAML.safe_load(template.render(manifest_properties, consumes: links))
315+
expect(template_hash['prometheus_port']).to eq(9397)
316+
end
317+
end
318+
end
319+
320+
describe 'cc.directories.tmpdir' do
321+
it 'uses the default' do
322+
template_hash = YAML.safe_load(template.render(manifest_properties, consumes: links))
323+
expect(template_hash['directories']['tmpdir']).to eq('/var/vcap/data/cloud_controller_worker/tmp')
324+
end
325+
326+
context 'when set' do
327+
before do
328+
manifest_properties['cc']['directories']['tmpdir'] = '/some/tmp'
329+
end
330+
331+
it 'renders accordingly' do
332+
template_hash = YAML.safe_load(template.render(manifest_properties, consumes: links))
333+
expect(template_hash['directories']['tmpdir']).to eq('/some/tmp')
334+
end
335+
end
336+
end
280337
end
281338
end
282339
end

0 commit comments

Comments
 (0)