PubSubGo includes comprehensive monitoring and observability features with Prometheus, Grafana, Jaeger, and optional Istio service mesh integration.
# Start all monitoring services
make monitoring-up
# Check status
make monitoring-status# Build and run the server
make build-server
./bin/pubsubgo-server# Run the traffic generation script
./scripts/generate-traffic.sh- URL: http://localhost:3000
- Login: admin / admin123
- Features:
- Pre-configured dashboards for PubSubGo metrics
- Real-time metric visualization
- Alert configuration
- PubSubGo Overview: Overall system health and performance
- Message Flow: Message publishing/consumption rates
- Topic Metrics: Per-topic statistics
- System Metrics: CPU, memory, network usage
- URL: http://localhost:9090
- Features:
- Raw metrics querying
- Target health monitoring
- Alert rule evaluation
# Message publish rate
rate(pubsubgo_messages_published_total[5m])
# Active subscriptions
pubsubgo_subscriptions_active
# Message processing latency
histogram_quantile(0.95, rate(pubsubgo_message_processing_duration_seconds_bucket[5m]))
# Error rate
rate(pubsubgo_errors_total[5m])
- URL: http://localhost:16686
- Features:
- End-to-end request tracing
- Latency analysis
- Dependency mapping
- Select "pubsubgo" service
- Choose operation (e.g., "publish", "subscribe")
- View trace timeline and spans
| Metric | Type | Description |
|---|---|---|
pubsubgo_messages_published_total |
Counter | Total messages published |
pubsubgo_messages_consumed_total |
Counter | Total messages consumed |
pubsubgo_messages_acknowledged_total |
Counter | Total messages acknowledged |
pubsubgo_messages_failed_total |
Counter | Failed message deliveries |
pubsubgo_topics_total |
Gauge | Number of active topics |
pubsubgo_subscriptions_active |
Gauge | Active subscriptions |
pubsubgo_message_size_bytes |
Histogram | Message size distribution |
pubsubgo_message_processing_duration_seconds |
Histogram | Message processing time |
pubsubgo_queue_depth |
Gauge | Current queue depth per topic |
| Metric | Type | Description |
|---|---|---|
go_goroutines |
Gauge | Number of goroutines |
go_memstats_alloc_bytes |
Gauge | Memory allocation |
process_cpu_seconds_total |
Counter | CPU usage |
redis_connected_clients |
Gauge | Redis connections |
redis_used_memory_bytes |
Gauge | Redis memory usage |
# Check all targets in Prometheus
curl http://localhost:9090/api/v1/targets | jq
# Check PubSubGo health
curl http://localhost:8081/health
# Check metrics endpoint
curl http://localhost:9092/metrics- Open http://localhost:3000
- Login with admin/admin123
- Navigate to Dashboards → Browse
- Open "PubSubGo" folder
- Select desired dashboard
In Grafana:
- Go to Alerting → Alert rules
- Click "New alert rule"
- Configure conditions (e.g., error rate > 1%)
- Set notification channels
| Service | Port | Purpose |
|---|---|---|
| Prometheus | 9090 | Metrics collection |
| Grafana | 3000 | Visualization |
| Jaeger | 16686 | Tracing UI |
| AlertManager | 9093 | Alert management |
| Node Exporter | 9100 | System metrics |
| Redis Exporter | 9121 | Redis metrics |
| OTEL Collector | 4317/4318 | Telemetry collection |
# Check target status
curl http://localhost:9090/api/v1/targets
# Verify PubSubGo metrics endpoint
curl http://localhost:9092/metrics# Check datasource configuration
docker compose -f deployments/docker/monitoring.yml logs grafana
# Restart Grafana
docker compose -f deployments/docker/monitoring.yml restart grafana# Check OTEL collector status
docker compose -f deployments/docker/monitoring.yml logs otel-collector
# Verify tracing is enabled in config.yaml
grep -A 5 tracing config.yamlFor advanced service mesh features:
# Run Istio setup script
./scripts/setup-istio.sh
# Access Istio dashboards
istioctl dashboard kiali # Service graph
istioctl dashboard grafana # Istio metrics- Regular Monitoring: Check dashboards during peak loads
- Alert Configuration: Set up alerts for critical metrics
- Retention Policy: Configure appropriate data retention
- Resource Limits: Monitor container resource usage
- Backup: Regularly backup Grafana dashboards
# Monitoring stack management
make monitoring-up # Start all services
make monitoring-down # Stop all services
make monitoring-restart # Restart services
make monitoring-logs # View logs
make monitoring-status # Check status
# Generate test load
./scripts/generate-traffic.sh
# Open dashboards (macOS)
open http://localhost:3000 # Grafana
open http://localhost:9090 # Prometheus
open http://localhost:16686 # Jaeger