python prometheus
问题
-
对于sanic app,如果不是全局的共享内存,不同worker是分开统计的,导致从接口获取的数据有随机性(时而来源于worker1,时而来源于worker2),多进程模式支持合并输出,需要通过环境变量指定空目录
- 多进程模式: os.environ["prometheus_multiproc_dir"] = "."
- sanic_prometheus: start_http_server不支持多进程模式
- 如果使用main_process_start初始化metric_init, 对于多worker,worker进程设置的metric inc/observe不生效。因为woker进程是主进程的子进程,inc或者observe是在子进程写入的