如何运行多个python脚本到prometheus
Posted
技术标签:
【中文标题】如何运行多个python脚本到prometheus【英文标题】:How to run multiple python scripts to prometheus 【发布时间】:2021-08-28 06:02:21 【问题描述】:我一直在研究 prometheus 和 Python,我希望能够拥有多个写入 Prometheus 的脚本。
目前我已经完成了 2 个脚本: sydsvenskan.py
import time
import requests
from prometheus_client import Counter
REQUEST_COUNT = Counter(
namespace="scraper",
name="request_count",
documentation="Count the total requests",
labelnames=['http_status']
)
def monitor_feed():
while True:
with requests.get("https://sydsvenskan.se") as rep:
print("Request made!")
REQUEST_COUNT.labels(http_status=rep.status_code).inc()
time.sleep(10)
if __name__ == '__main__':
monitor_feed()
BBC.py
import time
import requests
from prometheus_client import Counter
REQUEST_COUNT = Counter(
namespace="scraper",
name="request_count",
documentation="Count the total requests",
labelnames=['http_status']
)
def monitor_feed():
while True:
with requests.get("https://bbc.com") as rep:
print("Request made!")
REQUEST_COUNT.labels(http_status=rep.status_code).inc()
time.sleep(10)
if __name__ == '__main__':
monitor_feed()
然后我有另一个脚本启动 promethethus http_server:
from prometheus_client import start_http_server
if __name__ == '__main__':
start_http_server(8000)
但是问题是似乎没有任何东西通过 sydsvenskan.py 和 bbc.py 的 promethethus,我想知道我做错了什么?同时运行 sydsvenskan 和 bbc 时,我没有看到任何统计数据增长
【问题讨论】:
【参考方案1】:您需要将start_http_server
函数与monitor_feed
函数结合起来。
您可以将所有内容组合在一个 HTTP 服务器下。
或者,正如我认为你想要的那样,你需要运行 2 个 HTTP 服务器,每个 monitor_feed
一个:
import time
import requests
from prometheus_client import Counter
from prometheus_client import start_http_server
REQUEST_COUNT = Counter(
namespace="scraper",
name="request_count",
documentation="Count the total requests",
labelnames=['http_status']
)
def monitor_feed():
while True:
with requests.get("https://bbc.com") as rep:
print("Request made!")
REQUEST_COUNT.labels(http_status=rep.status_code).inc()
time.sleep(10)
if __name__ == '__main__':
start_http_server(8000)
monitor_feed()
在后一种情况下,如果您在同一台主机上运行两台服务器,则需要使用 2 个不同的端口(不能同时使用 8000
)。
【讨论】:
哦,我明白了。因此,如果我想使用更多的 python 实例,那么我需要添加更多的端口,以便为每个 python 实例提供自己的端口?如果我正确? 知道了!我希望拥有 30 个端口不会太多使用!; 您始终可以将脚本组合在一个进程下并从一个端口提供它们。这完全是您的选择,取决于您希望如何构建导出器。以上是关于如何运行多个python脚本到prometheus的主要内容,如果未能解决你的问题,请参考以下文章
运行多个 python 脚本,一个要求输入,不允许输入脚本运行。另外,我如何同时运行脚本(Python)