簡體   English   中英

時間戳未過期的普羅米修斯客戶端自定義指標

[英]prometheus client custom metrics with timestamp not expiring

我在下面寫了自定義收集器,它從 rest api 中提取數據並添加頁面查看指標。 每個有效負載都有 5 個指標,因此我為其添加了時間戳。 它成功地將其發布到 http 偵聽器,但指標永不過期。 如何將到期時間添加到這些指標?

#!/usr/bin/env python3

import argparse
import re
import sys
import time
import datetime
import urllib3
import requests
import aniso8601
import pytz
import json

from prometheus_client import start_http_server
from prometheus_client.core import GaugeMetricFamily, REGISTRY

class HttpCollector(object):
    def __init__(self):
        self.url = "my_endpoint"
        self.username = 'my_userid'
        self.password = 'my_pass'
        self.labels = ['app_name', 'url_host' ]
        self.page_views_metrics = GaugeMetricFamily('pageviews', 'Page Views', labels=self.labels)

    def collect(self):
        headers = {'Accept': '*/*', }
        auth = (self.username, self.password)
        urllib3.disable_warnings()
        result = requests.get(self.url, headers=headers, auth=auth, timeout=60, verify=False)
        if not result.ok:
            # Log error
            print("No results")
            return
        json_result = result.json()
        for record in json_result['records']:
            timestamp_epoch = covert_date_to_epoch(record["timestamp'])
            label_values = ["testapp", "testhost"]
            self.page_views_metrics.add_metric(label_values, record["page_views"], timestamp=timestamp_epoch)
        yield self.page_views_metrics

將 self.page_views_metrics 作為局部變量來收集方法解決了這個問題。

import re
import sys
import time
import datetime
import urllib3
import requests
import aniso8601
import pytz
import json

from prometheus_client import start_http_server
from prometheus_client.core import GaugeMetricFamily, REGISTRY

class HttpCollector(object):
    def __init__(self):
        self.url = "my_endpoint"
        self.username = 'my_userid'
        self.password = 'my_pass'
        self.labels = ['app_name', 'url_host' ]

    def collect(self):
        headers = {'Accept': '*/*', }
        auth = (self.username, self.password)
        urllib3.disable_warnings()
        result = requests.get(self.url, headers=headers, auth=auth, timeout=60, verify=False)
        if not result.ok:
            # Log error
            print("No results")
            return
        json_result = result.json()
        page_views_metrics = GaugeMetricFamily('pageviews', 'Page Views', labels=self.labels)
        for record in json_result['records']:
            timestamp_epoch = covert_date_to_epoch(record["timestamp'])
            label_values = ["testapp", "testhost"]
            page_views_metrics.add_metric(label_values, record["page_views"], timestamp=timestamp_epoch)
        yield page_views_metrics

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM