【发布时间】:2020-05-13 21:27:29
【问题描述】:
我有一个服务,它目前在端口 8000 上使用 prometheus 客户端公开指标。
我想将此进程更改为控制父进程,每个“事物”生成一个(独立)子进程,即子进程由thing_id 参数化,父进程调用systemctl start child@thing_id
公开的指标是每个“事物”独立的,所以我仍然想公开每个进程的这些指标,使用标签thing 进行相应的识别和分析。
但是,我似乎必须在每个服务中运行start_http_server(8000),这会由于“端口已在使用”而出错。我尝试只在父进程中启动服务器,但没有观察到来自子进程的指标。
我可以定义一些端口范围并为每个进程设置一个 http 服务器,并相应地增加我的目标数量,但这似乎相当笨拙。
我已经研究了https://github.com/prometheus/client_python/blob/master/prometheus_client/multiprocess.py,我认为这可能是一个解决方案,但我认为可能有一种更简单的方法,只需使用 subprocessing 和 systemctl ...
【问题讨论】:
标签: python subprocess prometheus