Skip to content
This repository was archived by the owner on Apr 26, 2024. It is now read-only.

Commit b98b4c1

Browse files
author
Paul "LeoNerd" Evans
committed
Option to serve metrics from their own localhost-only TCP port instead of muxed on the main listener
1 parent a2cdd11 commit b98b4c1

File tree

2 files changed

+15
-2
lines changed

2 files changed

+15
-2
lines changed

synapse/app/homeserver.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,8 @@ def create_resource_tree(self, redirect_root_to_web_client):
129129
location of the web client. This does nothing if web_client is not
130130
True.
131131
"""
132-
web_client = self.get_config().webclient
132+
config = self.get_config()
133+
web_client = config.webclient
133134

134135
# list containing (path_str, Resource) e.g:
135136
# [ ("/aaa/bbb/cc", Resource1), ("/aaa/dummy", Resource2) ]
@@ -155,7 +156,7 @@ def create_resource_tree(self, redirect_root_to_web_client):
155156
self.root_resource = Resource()
156157

157158
metrics_resource = self.get_resource_for_metrics()
158-
if metrics_resource is not None:
159+
if config.metrics_port is None and metrics_resource is not None:
159160
desired_tree.append((METRICS_PREFIX, metrics_resource))
160161

161162
# ideally we'd just use getChild and putChild but getChild doesn't work
@@ -234,6 +235,13 @@ def start_listening(self):
234235
)
235236
logger.info("Synapse now listening on port %d", config.unsecure_port)
236237

238+
metrics_resource = self.get_resource_for_metrics()
239+
if metrics_resource and config.metrics_port is not None:
240+
reactor.listenTCP(
241+
config.metrics_port, Site(metrics_resource), interface="127.0.0.1",
242+
)
243+
logger.info("Metrics now running on 127.0.0.1 port %d", config.metrics_port)
244+
237245

238246
def get_version_string():
239247
try:

synapse/config/metrics.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ class MetricsConfig(Config):
2020
def __init__(self, args):
2121
super(MetricsConfig, self).__init__(args)
2222
self.enable_metrics = args.enable_metrics
23+
self.metrics_port = args.metrics_port
2324

2425
@classmethod
2526
def add_arguments(cls, parser):
@@ -29,3 +30,7 @@ def add_arguments(cls, parser):
2930
'--enable-metrics', dest="enable_metrics", action="store_true",
3031
help="Enable collection and rendering of performance metrics"
3132
)
33+
metrics_group.add_argument(
34+
'--metrics-port', metavar="PORT", type=int,
35+
help="Separate port to accept metrics requests on (on localhost)"
36+
)

0 commit comments

Comments
 (0)