Monitoring is a crucial aspect of the system that enables engineers and administrators to observe system performance passively. It collects metrics and logs from all services and uses rule configurations to predict potential issues. When an issue is detected, alerts are sent to the responsible person to address it as quickly as possible, ensuring the system remains available and consistent.

According to the diagram above, various tools can be used to collect metrics, store data, log information, and visualize data on a dashboard.
Logs Collection & Analysis:
- Loki:
- Collect and manage data logs
- Integrate easily with Grafana
- Lightweight rather than ELK Stack
- ELK Stack:
- Elasticsearch: Storage & Search
- Logstash: Log processing
- Kibana: Visualization
- Filebeat: Log shipping
Infrastructure Monitoring:
- Node Exporter:
- Monitor hardware & OS metrics
- CPU, memory, disk, network
- cAdvisor:
- Container metrics
- Resource usage & performance
- Blackbox Exporter:
- External monitoring
- HTTP, HTTPS, DNS, and TCP checks
APM (Application Performance Monitoring):
- Jaeger:
- Distributed tracing
- Performance bottleneck analysis
- Request flow visualization
- Tempo:
- Scalable tracing backend
- Compatible với nhiều tracing protocols
Visualization & Dashboard:
- Grafana:
- Unified dashboard
- Multi-data source support
- Advanced alerting
- Custom visualizations
Visualize the interactions between each component of the monitoring system in greater detail.

Depending on the system's complexity and size, we will need to use additional tools and frameworks to manage more tasks and integrate them.