You are improving observability for a microservice architecture and want to catch real production issues without overwhelming engineers with noisy alerts. The system has many services, shared dependencies, and different failure modes, so a naive alerting setup could either miss customer-impacting incidents or page the team too often.
How would you set up monitoring for a microservice architecture to prevent alert fatigue while ensuring critical issues are caught?