Introduction
Permission Mongo includes a comprehensive monitoring stack built on Prometheus and Grafana, providing real-time visibility into system performance, health, and behavior.Architecture
The monitoring infrastructure follows a standard observability pattern:Components
Application
Exposes Prometheus metrics at
/metrics endpoint on port 8080Prometheus
Scrapes metrics every 5 seconds and stores time-series data
Grafana
Provides visualization dashboards and alerting capabilities
Quick Start
Access the services
| Service | URL | Credentials |
|---|---|---|
| Prometheus | http://localhost:9090 | - |
| Grafana | http://localhost:3000 | admin / admin |
| Application Metrics | http://localhost:8080/metrics | - |
Metrics Categories
Permission Mongo exposes metrics across six key areas:HTTP Metrics
Track request rates, latency, error rates, and active connectionsMongoDB Metrics
Monitor database operations, connection pools, and query performanceCache Metrics
Measure cache hit rates, operation latency, and effectivenessRBAC Metrics
Track policy evaluations, authorization decisions, and evaluation performanceAudit Metrics
Monitor audit log queue depth, drop rates, and batch sizesServer Metrics
Track server health including uptime, goroutines, and build informationConfiguration
All monitoring configuration files are located in themonitoring/ directory:
Scrape Interval
The default scrape interval is 5 seconds for the application and 15 seconds globally. This provides detailed granularity for performance analysis.prometheus.yml
Running Without Docker
If you need to run components separately:Start Prometheus
Start Prometheus
Start Grafana
Start Grafana
- Add Prometheus datasource: http://host.docker.internal:9090
- Import dashboard from
grafana/dashboards/permission-mongo.json
Troubleshooting
Prometheus not scraping
Prometheus not scraping
- Check target status: http://localhost:9090/targets
- Verify application is running and
/metricsendpoint is accessible - Check network connectivity between containers
Missing metrics in Grafana
Missing metrics in Grafana
- Verify Prometheus datasource is configured correctly
- Check metric names match between code and dashboard queries
- Ensure sufficient time has passed for data collection
High cardinality warnings
High cardinality warnings
- Path normalization is applied in MetricsMiddleware to prevent cardinality explosion
- Avoid adding high-cardinality labels (user IDs, request IDs, etc.)
Next Steps
Explore Metrics
View all available Prometheus metrics and example queries
Setup Dashboards
Learn about pre-built dashboards and create custom panels
Configure Alerts
Set up alerting rules and notification channels