(If you are reading this because you are interested in Prometheus's native histograms, pay special attention to the last paragraph below.)
This repository used to contain the protocol buffer code that defined both the data model and the exposition format of Prometheus metrics.
Starting with v2.0.0, the Prometheus server does not ingest the protobuf-based exposition format anymore. Currently, all but one of the official instrumentation libraries do not expose the protobuf-based exposition format. The Go instrumentation library, however, has been built around the protobuf-based data model. As a byproduct thereof, it is still able to expose the protobuf-based exposition format. The Go instrumentation library is the only remaining repository within the Prometheus GitHub org directly using the prometheus/client_model repository.
Therefore, formerly existing support for languages other than Go (namely C++, Java, Python, Ruby) has been removed from this repository. If you are a 3rd party user of those languages, you can go back to commit 14fe0d1 to keep using the old code, or you can consume metrics.proto
directly with your own protobuf tooling. Note, however, that changes of metrics.proto
after commit 14fe0d1 are solely informed by requirements of the Go instrumentation library and will not take into account any requirements of other languages or stability concerns for the protobuf-based exposition format.
Check out the OpenMetrics project for the future of the data model and exposition format used by Prometheus and others.
Note, though, that in an ironic twist of fate, the protobuf-based exposition format got revived to ease the implementation of experimental support for native histograms in Prometheus. Therefore, starting with v2.40.0, the Prometheus server is again capable of ingesting the protobuf-based exposition format (if the respective feature flag is enabled). Eventually, native histogram support will be added in some form to OpenMetrics, too.