Error on ingesting samples that are too old or are too far into the future
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 3/5
- Tempo estimado
- 1-2 dias
- Facilidade para iniciantes
- 38/100
- Tipo de issue
- Bug
- Clareza
- Razoavelmente clara
- Status de atividade
- Estagnada
- Stack de tecnologia
- prometheus, python
- Domínio
- observability
Direção de pesquisa
Start by reproducing the supplied BugDemoMetricsCollector example and compare the current timestamp with the hard-coded 2021 timestamp in the scrape output. Inspect the client_python timestamp handling and verify the behavior against Prometheus's ingestion warning; done means the reported discrepancy is explained and a regression test covers the relevant case.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Hi!
Faced strange situation with timestamps.
Briefly:
- If timestamp is taken from
datetime.datetime.now()- everything is ok. - If timestamp is parsed from the date which looks same - I got warning in Prometheus server log about bad datetime and metric is not shown.
Here is code example with comments about which metrics works and which don't:
import datetime
import sys
import time
import pytz
from prometheus_client import (
start_http_server,
)
from prometheus_client.core import (
GaugeMetricFamily,
REGISTRY,
)
class BugDemoMetricsCollector:
def collect(self):
dt_format = '%Y-%m-%d_%H-%M-%S.%f %z'
dt_now = datetime.datetime.now(tz=pytz.timezone('UTC'))
print(dt_now)
# Works
gobj = GaugeMetricFamily('FooMetricGood', '')
gobj.add_metric([], 123, timestamp=dt_now.timestamp())
yield gobj
# Works too
dt_now_str = dt_now.strftime(dt_format)
dt_parsed = datetime.datetime.strptime(dt_now_str, dt_format)
gobj = GaugeMetricFamily('FooMetricGoodToo', '')
gobj.add_metric([], 456, timestamp=dt_parsed.timestamp())
yield gobj
# Does not work, but same date
dt_custom_str = '2021-11-11_18-12-59.000000 +0000'
dt_parsed_from_custom = datetime.datetime.strptime(dt_custom_str, dt_format)
gobj = GaugeMetricFamily('FooMetricNotWorking', '')
gobj.add_metric([], 789987, timestamp=dt_parsed_from_custom.timestamp())
yield gobj
def main():
start_http_server(8080)
REGISTRY.register(BugDemoMetricsCollector())
while True:
time.sleep(1)
if __name__ == '__main__':
sys.exit(main())
Message from Prometheus log about trouble metric:
prometheus-prometheus-1 | ts=2021-11-11T13:41:01.895Z caller=scrape.go:1563 level=warn component="scrape manager" scrape_pool=services target=http://192.168.64.1:8080/metrics msg="Error on ingesting samples that are too old or are too far into the future" num_dropped=1
But date is correct, here is Python code for used date and format:
>>> datetime.datetime.strptime('2021-11-11_18-12-59.000000 +0000', '%Y-%m-%d_%H-%M-%S.%f %z')
datetime.datetime(2021, 11, 11, 18, 12, 59, tzinfo=datetime.timezone.utc)
I've spent more than one day trying to google, read docs and resolve it - no results.
Any help will be very appreciated.
- Linguagem predominante
- Python
- Estrelas
- 4.4k
- Forks
- 876
- Merge médio
- 8d 4h
- PRs com merge (30d)
- 1
Guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de prometheus/client_python
-
bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
prometheus/client_python#1177 · 1 comentário ·
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 45/100
prometheus/client_python#1210 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 58/100
prometheus/client_python#1199 · 1 reação ·
-
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 35/100
prometheus/client_python#1176 ·
-
Dificuldade 1/5 1-3 horas Facilidade para iniciantes 52/100
prometheus/client_python#1126 · 2 comentários ·
Todas as issues de prometheus/client_python
Issues semelhantes
-
bug priority:low
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
CyberAgent/psd2svg#436 ·
-
area/install-update comp/cli comp/desktop P3 sweeper:risk-compatibility type/bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 86/100
NousResearch/hermes-agent#122386 · 1 comentário ·
-
ai-generated
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
vllm-project/production-stack#1105 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 88/100