Hi,
I think this discussion is better suited for the -users mailing list, moving it there.
Metric systems, like Prometheus, offer you a specific tradeoff: they allow you to count a
large number of events by
limited dimensions. Fundamentally, for each combination of dimensions, it tracks a
number and incrementing that number is very cheap, but this breaks down if you have too many dimensions, because you end up with a huge amount of numbers that each only change infrequently. In practice, this means metric systems are not suited for tracking
all the metadata of API request, and you will need to remove any dimension that varies a lot from your labels. See this document for some recommendations:
https://prometheus.io/docs/practices/instrumentation/#do-not-overuse-labels
To give a concrete example, metrics are not well suited to track API latency "by customer" (I assume this is what you mean with consumer name?) You can use Prometheus to track overall latency, and break it down by a few low-cardinality dimensions such as the status code. For in-depth breakdowns, record the events (logs) into a separate system that is designed for this, such as a logging system. These have other tradeoffs, notably that querying them is a lot slower and more expensive; typically you would use metrics to tell you that there is a problem, and logs to tell you what the problem is once you start narrowing it down. I hope understanding these tradeoffs will help you design a viable observability stack for your requirements :)
/Matthias