Prometheus uses the Pull model for data collection but also supports the Push model:
Pull Model (Recommended):
- Prometheus actively pulls metrics from targets
- Advantages:
- Simple architecture, easy to scale
- Automatic target discovery via service discovery
- Supports target health checks
- Reduces complexity of target services
- Use Cases:
- Long-running services
- Containerized environments
- Kubernetes clusters
Push Model:
- Targets actively push metrics to Pushgateway
- Advantages:
- Suitable for short-lived jobs
- No need for targets to expose HTTP ports
- Disadvantages:
- Cannot monitor target health status
- Pushgateway becomes a single point of failure
- Data may become stale
- Use Cases:
- Batch processing jobs
- Temporary tasks
- Short-running jobs
Service Discovery Mechanisms:
- Static configuration
- Kubernetes API
- DNS SRV records
- Consul
- Cloud platforms like EC2, Azure
Configuration Example:
yamlscrape_configs: - job_name: 'kubernetes-pods' kubernetes_sd_configs: - role: pod
Best Practices:
- Prioritize the Pull model
- Use Pushgateway for short-lived jobs
- Set reasonable scrape intervals (typically 15s-1m)