prometheus / prometheus/client_python

OpenMetrics parser cannot parse the output of `promtool tsdb dump-openmetrics`

Đang mở
#1,091 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Ngôn ngữ chính
Python
Star
4.4k
Fork
876
Merge trung bình
8 ngày 4 giờ
Pull request đã merge (30 ngày)
1

Mô tả

I tried using the example code...

import sys
from prometheus_client.openmetrics.parser import text_string_to_metric_families

for family in text_string_to_metric_families(sys.stdin.read()):
  for sample in family.samples:
      print("Name: {0} Labels: {1} Value: {2} Timestamp: {3}".format(*sample))

...to parse an OpenMetrics file produced by promtool tsdb dump-openmetrics, but I run into the following issue:

Traceback (most recent call last):
  File "/home/nicolas/IE6/synapse-meshsim/exp/./normalise_timestamps.py", line 6, in <module>
    for family in text_string_to_metric_families(sys.stdin.read()):
  File "/home/nicolas/IE6/synapse-meshsim/exp/venv/lib/python3.11/site-packages/prometheus_client/openmetrics/parser.py", line 18, in text_string_to_metric_families
    yield from text_fd_to_metric_families(StringIO.StringIO(text))
  File "/home/nicolas/IE6/synapse-meshsim/exp/venv/lib/python3.11/site-packages/prometheus_client/openmetrics/parser.py", line 543, in text_fd_to_metric_families
    yield build_metric(name, documentation, typ, unit, samples)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/nicolas/IE6/synapse-meshsim/exp/venv/lib/python3.11/site-packages/prometheus_client/openmetrics/parser.py", line 472, in build_metric
    raise ValueError("Clashing name: " + name + suffix)
ValueError: Clashing name: go_gc_duration_seconds

This comes from this code: https://github.com/prometheus/client_python/blob/46eae7bae88f76951f7246d9f359f2dd5eeff110/prometheus_client/openmetrics/parser.py#L487-L489

But I don't understand why this check exists in the first place? In my case, I have the same metrics for multiple instances, and dump-openmetrics groups them by instance, then by metrics name. Can't we just remove this check altogether?

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Hướng nghiên cứu

Bắt đầu với prometheus_client/openmetrics/parser.py tại phần kiểm tra build_metric được liên kết và so sánh các giả định của nó với đầu ra được nhóm từ promtool tsdb dump-openmetrics. Tái hiện lỗi bằng mã parser mẫu và đầu ra đó. Được xem là hoàn tất khi hành vi của parser đối với các tên metric lặp lại được xác định và lỗi do tên xung đột đã được báo cáo được xử lý.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
python
Lĩnh vực
observability-sre
Loại issue
Lỗi
Độ khó
3/5
Thời gian dự kiến
1-2 ngày
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Khá rõ ràng
Mức phù hợp với người mới
38/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.