Start here. This is the direct spoken answer to practice first.
Overview
A useful metric groups many events into a bounded number of time series; identifiers destroy that aggregation.
I use a stable metric name for the operation and a small set of bounded tags such as outcome, method, dependency name, or normalized route. I never put user IDs, order IDs, raw URLs, exception messages, or other unbounded values in metric tags. Each unique tag combination creates another time series, which can increase memory, storage, query cost, and alert noise.