Prometheus fundamentally stores all data as time series: streams of timestamped values belonging to the same metric and the same set of labeled dimensions. Besides stored time series, Prometheus may generate temporary derived time series as the result of queries.
Every time series is uniquely identified by its metric name and optional key-value pairs called labels.
Metric names:
http_requests_total
- the total number of HTTP requests received). [a-zA-Z_:][a-zA-Z0-9_:]*
.Note: The colons are reserved for user defined recording rules. They should not be used by exporters or direct instrumentation.
Metric labels:
POST
to the /api/tracks
handler). The query language allows filtering and aggregation based on these dimensions. [a-zA-Z_][a-zA-Z0-9_]*
. __
(two "_") are reserved for internal use.See also the best practices for naming metrics and labels.
Samples form the actual time series data. Each sample consists of:
Given a metric name and a set of labels, time series are frequently identified using this notation:
<metric name>{<label name>=<label value>, ...}
For example, a time series with the metric name api_http_requests_total
and
the labels method="POST"
and handler="/messages"
could be written like
this:
api_http_requests_total{method="POST", handler="/messages"}
This is the same notation that OpenTSDB uses.
This documentation is open-source. Please help improve it by filing issues or pull requests.