Skip to content

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

@n-peugnet

Description

@n-peugnet

I tried using the example code...

importsysfromprometheus_client.openmetrics.parserimporttext_string_to_metric_familiesforfamilyintext_string_to_metric_families(sys.stdin.read()): forsampleinfamily.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:

forsuffixinset(type_suffixes.get(typ, []) + [""]):
ifname+suffixinseen_names:
raiseValueError("Clashing name: "+name+suffix)

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?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions