Even though this is an implementation detail, a metric name is nothing more than the value of a special label called "__name__". So, if you have a metric named "beverages_total", internally, it's represented as "__name__=beverages_total". Keep in mind that labels surrounded by "__" are internal to Prometheus, and any label prefixed with "__" is only available in some phases of the metrics collection cycle.
The combination of labels (key/values) and the metric name defines the identity of a time series.
Every metric name in Prometheus must match the following regular expression:
"[a-zA-Z_:][a-zA-Z0-9_:]*"
This, in layman's terms, means that metric names only allow lowercase and uppercase letters of the English alphabet (a-z), underscores (_), colons (:), and Arabic numerals (0-9), except on the first character, where numbers are not allowed.