Skip to content

Commit 940671e

Browse files
authored
Configure metrics socket and forward /internal/v4/metrics to that socket (#551)
1 parent 712587c commit 940671e

File tree

3 files changed

+47
-0
lines changed

3 files changed

+47
-0
lines changed

jobs/cloud_controller_ng/templates/cloud_controller_ng.yml.erb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,7 @@ request_timeout_in_seconds: <%= p("request_timeout_in_seconds") %>
138138
nginx:
139139
use_nginx: true
140140
instance_socket: "/var/vcap/data/cloud_controller_ng/cloud_controller.sock"
141+
metrics_socket: "/var/vcap/data/cloud_controller_ng/cloud_controller_metrics.sock"
141142

142143
index: <%= spec.index %>
143144
name: <%= name %>

jobs/cloud_controller_ng/templates/nginx.conf.erb

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,22 @@ limit_req_zone $http_authorization zone=<%= zone['name'] %>:10m rate=<%= zone['l
5454
server unix:/var/vcap/data/cloud_controller_ng/cloud_controller.sock;
5555
}
5656

57+
<%
58+
def thin_webserver_enabled?
59+
if_p('cc.experimental.use_puma_webserver') do |prop|
60+
return !prop
61+
end
62+
63+
p('cc.temporary_enable_deprecated_thin_webserver')
64+
end
65+
-%>
66+
67+
<% unless thin_webserver_enabled? -%>
68+
upstream cloud_controller_metrics {
69+
server unix:/var/vcap/data/cloud_controller_ng/cloud_controller_metrics.sock;
70+
}
71+
<% end -%>
72+
5773
# This block ensures the endpoints it serves are handled by mutual TLS.
5874
# Refer to the 'return 403' statement in the http block to see how we secure those endpoints.
5975
server {
@@ -137,7 +153,11 @@ limit_req_zone $http_authorization zone=<%= zone['name'] %>:10m rate=<%= zone['l
137153
proxy_connect_timeout 10;
138154

139155
location /internal/v4/metrics {
156+
<%- if thin_webserver_enabled? -%>
140157
proxy_pass http://cloud_controller;
158+
<%- else -%>
159+
proxy_pass http://cloud_controller_metrics;
160+
<%- end -%>
141161
}
142162
}
143163
<% end -%>

spec/cloud_controller_ng/nginx_spec.rb

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,32 @@ module Test
8787
expect(@rendered_file).not_to include('include prom_scraper_mtls.conf')
8888
end
8989
end
90+
91+
describe 'separate metrics webserver' do
92+
let(:manifest_properties) { { 'cc' => { 'prom_scraper_tls' => { 'public_cert' => 'a public cert', 'private_key' => 'a private key', 'ca_cert' => 'an authority' } } } }
93+
94+
it 'renders the unix socket of the second webserver' do
95+
expect(@rendered_file).to include('unix:/var/vcap/data/cloud_controller_ng/cloud_controller_metrics.sock;')
96+
end
97+
98+
it 'forwards requests for the metrics endpoint to second webserver' do
99+
expect(@rendered_file).to include('proxy_pass http://cloud_controller_metrics;')
100+
end
101+
102+
context 'when the webserver is not puma' do
103+
let(:manifest_properties) do
104+
super().merge('cc' => super()['cc'].merge('temporary_enable_deprecated_thin_webserver' => true))
105+
end
106+
107+
it 'does not render the second webserver' do
108+
expect(@rendered_file).not_to include('unix:/var/vcap/data/cloud_controller_ng/cloud_controller_metrics.sock;')
109+
end
110+
111+
it 'forwards requests for metrics endpoint to main app' do
112+
expect(@rendered_file).not_to include('proxy_pass http://cloud_controller_metrics;')
113+
end
114+
end
115+
end
90116
end
91117
end
92118
end

0 commit comments

Comments
 (0)