Monitoring
Monitoring Setup
Prometheus Configuration
yaml
# prometheus.yml
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'tileserver'
static_configs:
- targets: ['tileserver:8080']
metrics_path: '/metrics'
scrape_interval: 5s
- job_name: 'postgres'
static_configs:
- targets: ['postgres:5432']
metrics_path: '/metrics'
- job_name: 'redis'
static_configs:
- targets: ['redis:6379']
metrics_path: '/metrics'
Grafana Dashboard Configuration
json
{
"dashboard": {
"title": "Tile Server 5.3.1 Monitoring",
"panels": [
{
"title": "Request Rate",
"type": "graph",
"targets": [
{
"expr": "rate(tileserver_requests_total[5m])",
"legendFormat": "Requests/sec"
}
]
},
{
"title": "Response Time",
"type": "graph",
"targets": [
{
"expr": "tileserver_request_duration_seconds",
"legendFormat": "{{quantile}}"
}
]
},
{
"title": "Cache Hit Rate",
"type": "singlestat",
"targets": [
{
"expr": "rate(tileserver_cache_hits_total[5m]) / rate(tileserver_cache_requests_total[5m])",
"legendFormat": "Hit Rate"
}
]
}
]
}
}
Key Metrics to Monitor
Application Metrics
-
Request rate (requests/second)
-
Response time (percentiles: 50th, 95th, 99th)
-
Error rate (4xx, 5xx responses)
-
Cache hit ratio
-
Active connections
-
Queue depth
System Metrics
-
CPU usage
-
Memory usage
-
Disk I/O
-
Network throughput
-
Database connection pool status
Custom Alerts
yaml
groups:
- name: tileserver
rules:
- alert: HighErrorRate
expr: rate(tileserver_requests_total{status=~"5.."}[5m]) > 0.1
for: 5m
labels:
severity: warning
annotations:
summary: "High error rate detected"
- alert: HighResponseTime
expr: tileserver_request_duration_seconds{quantile="0.95"} > 1
for: 5m
labels:
severity: warning
annotations:
summary: "High response time detected"
- alert: LowCacheHitRate
expr: rate(tileserver_cache_hits_total[5m]) / rate(tileserver_cache_requests_total[5m]) < 0.8
for: 10m
labels:
severity: warning
annotations:
summary: "Cache hit rate is low"
Log Management
bash
# Configure log rotation
sudo nano /etc/logrotate.d/tileserver
/var/log/tileserver/*.log {
daily
rotate 30
compress
delaycompress
missingok
notifempty
create 644 tileserver tileserver
postrotate
docker-compose exec tileserver killall -USR1 node
endscript
}