@@ -855,7 +855,7 @@ def build_root_app(
855
855
sample_rate = local_config ["pyroscope" ]["sample-rate" ],
856
856
)
857
857
)
858
- root_ctx = RootContext (metrics = CommonMetricRegistry ())
858
+ root_ctx = RootContext (metrics = CommonMetricRegistry . instance ())
859
859
app = web .Application (
860
860
middlewares = [
861
861
exception_middleware ,
@@ -942,9 +942,6 @@ async def _call_cleanup_context_shutdown_handlers(app: web.Application) -> None:
942
942
# should be done in create_app() in other modules.
943
943
cors .add (app .router .add_route ("GET" , r"" , hello ))
944
944
cors .add (app .router .add_route ("GET" , r"/" , hello ))
945
- cors .add (
946
- app .router .add_route ("GET" , r"/metrics" , build_prometheus_metrics_handler (root_ctx .metrics ))
947
- )
948
945
if subapp_pkgs is None :
949
946
subapp_pkgs = []
950
947
for pkg_name in subapp_pkgs :
@@ -959,6 +956,13 @@ async def _call_cleanup_context_shutdown_handlers(app: web.Application) -> None:
959
956
return app
960
957
961
958
959
+ def build_internal_app () -> web .Application :
960
+ app = web .Application ()
961
+ metric_registry = CommonMetricRegistry .instance ()
962
+ app .router .add_route ("GET" , r"/metrics" , build_prometheus_metrics_handler (metric_registry ))
963
+ return app
964
+
965
+
962
966
def build_public_app (
963
967
root_ctx : RootContext ,
964
968
subapp_pkgs : Iterable [str ] | None = None ,
@@ -982,6 +986,7 @@ async def server_main(
982
986
_args : List [Any ],
983
987
) -> AsyncIterator [None ]:
984
988
root_app = build_root_app (pidx , _args [0 ], subapp_pkgs = global_subapp_pkgs )
989
+ internal_app = build_internal_app ()
985
990
root_ctx : RootContext = root_app ["_root.context" ]
986
991
987
992
# Start aiomonitor.
@@ -1021,8 +1026,11 @@ async def server_main(
1021
1026
)
1022
1027
1023
1028
runner = web .AppRunner (root_app , keepalive_timeout = 30.0 )
1029
+ internal_runner = web .AppRunner (internal_app , keepalive_timeout = 30.0 )
1024
1030
await runner .setup ()
1031
+ await internal_runner .setup ()
1025
1032
service_addr = cast (HostPortPair , root_ctx .local_config ["manager" ]["service-addr" ])
1033
+ internal_addr = cast (HostPortPair , root_ctx .local_config ["manager" ]["internal-addr" ])
1026
1034
site = web .TCPSite (
1027
1035
runner ,
1028
1036
str (service_addr .host ),
@@ -1031,7 +1039,15 @@ async def server_main(
1031
1039
reuse_port = True ,
1032
1040
ssl_context = ssl_ctx ,
1033
1041
)
1042
+ internal_site = web .TCPSite (
1043
+ internal_runner ,
1044
+ str (internal_addr .host ),
1045
+ internal_addr .port ,
1046
+ backlog = 1024 ,
1047
+ reuse_port = True ,
1048
+ )
1034
1049
await site .start ()
1050
+ await internal_site .start ()
1035
1051
public_metrics_port = cast (
1036
1052
Optional [int ], root_ctx .local_config ["manager" ]["public-metrics-port" ]
1037
1053
)
0 commit comments