如何 运行 多个 python 脚本到普罗米修斯

How to run multiple python scripts to prometheus

我一直在研究 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()

然后我有另一个脚本可以启动 promethus http_server:

from prometheus_client import start_http_server

if __name__ == '__main__':
    start_http_server(8000)

然而问题是 sydsvenskan.py 和 bbc.py 似乎没有任何东西通过普罗米修斯,我想知道我做错了什么?当 运行 sydsvenskan 和 bbc 同时

时,我没有看到任何统计数据在增长

您需要将 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)。