def start(self,
addr: str = '',
port: int = 0,
ssl: SSLContext = None,
metrics_url: str = DEFAULT_METRICS_PATH,
discovery_agent=None) -> None:
''' Start the prometheus metrics HTTP(S) server.
:param addr: the address to bind the server on. By default this is
set to an empty string so that the service becomes available on
all interfaces.
:param port: The port to bind the server on. The default value is 0
which will cause the server to bind to an ephemeral port. If you
want the server to operate on a fixed port then you need to specifiy
the port.
:param ssl: a sslContext for use with TLS.
:param metrics_url: The name of the endpoint route to expose
prometheus metrics on. Defaults to '/metrics'.
:param discovery_agent: an agent that can register the metrics
service with a service discovery mechanism.
:raises: Exception if the server could not be started.
'''
logger.debug(
'Prometheus metrics server starting on %s:%s%s',
addr, port, metrics_url)
if self._svr:
logger.warning(
'Prometheus metrics server is already running')
return
self._svc = aiohttp.web.Application()
self._metrics_url = metrics_url
self._svc.router.add_route(
GET, metrics_url, self.handle_metrics)
self._handler = self._svc.make_handler()
self._https = ssl is not None
try:
self._svr = await self.loop.create_server(
self._handler, addr, port, ssl=ssl)
except Exception:
logger.exception('error creating metrics server')
raise
logger.debug('Prometheus metrics server started on %s', self.url)
# register service with service discovery
if discovery_agent:
await discovery_agent.register(self)
评论列表
文章目录