Download the PHP package iamfarhad/laravel-prometheus without Composer
On this page you can find all versions of the php package iamfarhad/laravel-prometheus. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download iamfarhad/laravel-prometheus
More information about iamfarhad/laravel-prometheus
Files in iamfarhad/laravel-prometheus
Package laravel-prometheus
Short Description Production-ready Laravel Prometheus metrics package with built-in collectors for HTTP, database, cache, queue, events, errors, filesystem, and mail monitoring
License MIT
Homepage https://github.com/iamfarhad/laravel-prometheus
Informations about the package laravel-prometheus
๐ Laravel Prometheus Metrics Package
Enterprise-grade Prometheus metrics exporter for Laravel applications with comprehensive monitoring capabilities and industry-standard SLO tracking.
Built on the official PromPHP/prometheus_client_php library for maximum compatibility and performance.
โจ Key Features
- ๐ฏ Complete Metric Types: Counter, Gauge, Histogram, and Summary metrics with percentile tracking
- ๐ Advanced Collectors: HTTP, Database, Cache, Queue, Commands, Events, Errors, Filesystem, Mail, and Horizon
- ๐ญ Production-Ready: Built with official PromPHP library and Laravel best practices
- ๐ SLO Monitoring: Industry-standard bucket configurations for p50, p95, p99, p99.9 tracking
- ๐พ Multiple Storage: Redis, Memory, and APCu storage adapters
- ๐ Security First: IP whitelisting, authentication middleware, and secure endpoint protection
- โก High Performance: Optimized for minimal overhead with intelligent filtering
- ๐งช Fully Tested: Comprehensive test suite covering all components
- ๐ Developer Friendly: Rich documentation and intuitive API
๐ฆ Installation
Publish Configuration
HTTP Middleware Setup
For HTTP request tracking, you need to register the middleware. Choose one of these simple options:
โ Option 1: Easy Helper (Recommended)
No more complex setup! Add this single line to your bootstrap/app.php:
Benefits:
- โ One line setup - No complex configuration needed
- โ Automatic checks - Only registers if HTTP collector is enabled
- โ Laravel 11+ optimized - Works perfectly with new bootstrap structure
- โ Future-proof - Handles configuration changes automatically
โ Option 2: Manual Registration
โ Option 3: Automatic Registration (Experimental)
Enable automatic middleware registration in your .env:
Note: Automatic registration attempts to register middleware programmatically. If it doesn't work in your setup, use Options 1 or 2.
โก Option 4: Route-Specific Registration (Performance Optimized)
For high-performance applications where you want to monitor only specific routes:
Route Groups:
Individual Routes:
Route Groups with Aliases:
Controller-Level Registration:
Conditional Route Monitoring:
Benefits of Route-Specific Registration:
- โ Performance: Monitor only critical endpoints
- โ Selective Monitoring: Focus on business-critical routes
- โ Resource Efficiency: Reduce monitoring overhead
- โ Environment Control: Different monitoring per environment
- โ Granular Control: Fine-tune monitoring scope
Use Cases:
- High-traffic applications with performance requirements
- API endpoints where you want selective monitoring
- Admin routes that need separate tracking
- Public vs authenticated route monitoring
- Critical business logic routes only
๐ Quick Start
Basic Usage
Controller Integration
๐ Built-in Collectors
๐ HTTP Request Collector
Automatically enabled - Tracks all HTTP requests with comprehensive metrics.
Metrics:
http_requests_total{method, route, status}- Total HTTP requests counterhttp_request_duration_seconds{method, route}- Response time histogramhttp_request_duration_seconds_summary{method, route}- Response time percentileshttp_request_size_bytes{method, route}- Request payload sizehttp_response_size_bytes{method, route, status}- Response payload size
Industry-Standard Configuration:
Example Metrics:
๐๏ธ Database Query Collector
Automatically enabled - Monitors database performance with operation-level granularity.
Metrics:
database_queries_total{connection, table, operation}- Query count by operation typedatabase_query_duration_seconds{connection, table, operation}- Query duration histogramdatabase_query_duration_seconds_summary{connection, table, operation}- Query duration percentiles
Supported Operations: select, insert, update, delete, create, drop, alter, truncate
Fine-Grained Configuration:
Example Metrics:
โก Cache Operation Collector
Disabled by default - Monitors application cache operations (not internal storage).
โ ๏ธ Important: Disabled by default to prevent recursive counting of Prometheus's own Redis operations.
Metrics:
cache_operations_total{store, operation, result}- Cache operation countscache_operation_duration_seconds{store, operation}- Operation durationcache_operation_duration_seconds_summary{store, operation}- Duration percentiles
Operations: get, put, forget, flush
Results: hit, miss, success, failure
Intelligent Filtering:
Enable for Application Cache:
๐ Queue Job Collectors
Basic Queue Collector
Automatically enabled - Tracks queue job processing and performance.
Metrics:
queue_jobs_total{queue, connection, status, job_class}- Processed jobs countqueue_job_duration_seconds{queue, job_class}- Job processing time histogramqueue_job_duration_seconds_summary{queue, job_class}- Processing time percentilesqueue_active_jobs{queue, connection}- Currently active jobs gauge
Status Values: completed, failed, exception, timeout
Enhanced Queue Collector
Advanced monitoring with comprehensive queue health metrics:
Additional Metrics:
queue_job_wait_time_seconds{queue, job_class}- Time jobs wait before processingqueue_job_retries_total{queue, job_class, reason}- Job retry attemptsqueue_job_timeouts_total{queue, job_class}- Job timeout occurrencesqueue_size{queue, connection, status}- Queue depth metricsqueue_pending_jobs{queue, connection}- Jobs waiting to be processedqueue_failed_jobs{queue, connection}- Failed jobs countqueue_workers{queue, connection, supervisor}- Active worker processes
Configuration:
๐ฏ Command Collector
Automatically enabled - Tracks Laravel Artisan command executions.
Metrics:
artisan_commands_total{command, status}- Command execution countartisan_command_duration_seconds{command, status}- Execution time histogram
Status Values: success, error, invalid_usage, interrupted, unknown
Configuration:
Example Metrics:
๐ Horizon Collector
Available when Laravel Horizon is installed - Comprehensive Horizon monitoring.
Metrics:
horizon_supervisors{environment}- Active supervisors counthorizon_workload{queue, supervisor}- Queue workload distributionhorizon_master_loops_total{environment}- Master supervisor loopsqueue_workers{queue, connection, supervisor}- Worker process tracking
Enable:
Features:
- โ Automatic Horizon detection
- โ Supervisor health monitoring
- โ Worker process tracking
- โ Workload balance analysis
๐จ Error Collector
Disabled by default - Tracks application errors and exceptions.
Metrics:
application_errors_total{exception_class, severity, component}- Application errorsapplication_response_errors_total{http_status, method, route}- HTTP errorsapplication_critical_errors_total{exception_class, component}- Critical errors
๐ Additional Collectors
Event Collector
events_fired_total{event_class, status}- Laravel event tracking
Filesystem Collector
filesystem_operations_total{disk, operation, status}- File system operations
Mail Collector
mail_sent_total{driver, status, template}- Email delivery tracking
Enable any collector:
โ๏ธ Configuration
Storage Backends
Choose your preferred storage backend:
Global Namespace
Set a global namespace to avoid metric name conflicts:
Results in metrics like: myapp_http_requests_total
Industry-Standard Defaults
The package comes with optimized industry-standard configurations:
๐ Security
Protecting the Metrics Endpoint
The package automatically registers a /metrics endpoint with configurable security:
IP Address Restriction
Use the built-in AllowIps middleware:
Environment Configuration:
Features:
- โ IPv4 and IPv6 support
- โ CIDR notation support
- โ Multiple IP ranges
- โ Returns 403 for unauthorized access
Authentication
Add authentication middleware:
Combined Security
For maximum security:
๐ง Advanced Usage
Custom Metrics with Summary Support
Middleware Integration
Create custom middleware for application-specific metrics:
๐ Monitoring & Alerting
Prometheus Configuration
Add this scrape configuration to your prometheus.yml:
Essential Queries
SLO Monitoring
Database Performance
Queue Health
Grafana Dashboard
Create comprehensive dashboards with:
Panels:
- HTTP request rate and latency percentiles
- Database query performance by operation
- Queue processing metrics and health
- Error rates and exception tracking
- Command execution monitoring
Alerts:
- High error rate (> 1%)
- Slow database queries (p95 > 500ms)
- Queue depth growth
- Failed job rate increase
๐งช Testing
Test Suite Coverage
The package includes comprehensive tests:
- โ Unit Tests: All metric types and collectors
- โ Feature Tests: HTTP endpoints and middleware
- โ Integration Tests: Storage adapters and PromPHP integration
- โ Security Tests: IP filtering and authentication
Testing Custom Metrics
๐ Performance Optimization
Best Practices
-
Enable Only Needed Collectors
-
Optimize Storage Backend
-
Configure Appropriate Buckets
-
Monitor Resource Usage
- Each enabled collector adds minimal overhead (~0.1ms per request)
- Summary metrics use more memory than histograms
- High-cardinality labels increase storage requirements
- Choose the Right Middleware Strategy
Middleware Performance Guide
Choose your middleware registration strategy based on your application requirements:
| Application Type | Recommended Option | Reasoning |
|---|---|---|
| Standard Web/API | Helper Registration (Option 1) | Easy setup, automatic checks, minimal overhead |
| High-Traffic API (1000+ RPS) | Route-Specific (Option 4) | Monitor only critical endpoints, reduce overhead |
| Microservices | Route-Specific (Option 4) | Focus on service-specific endpoints |
| Admin Dashboards | Global Registration (Option 1/2) | Monitor all admin actions |
| Public APIs | Route-Specific (Option 4) | Monitor API endpoints, skip static assets |
| Development/Testing | Auto Registration (Option 3) | Zero-config for quick testing |
Performance Impact Comparison:
Real-World Example:
Memory Optimization
๐ง Troubleshooting
Common Issues
-
Cache Collector Showing False Metrics
- Solution: Cache collector is disabled by default to prevent counting Prometheus's own Redis operations
- Enable only for application cache: Ensure you're using dedicated cache stores
-
High Memory Usage
- Use Redis storage instead of Memory
- Reduce histogram bucket count
- Optimize Summary quantiles and max age
-
Metrics Not Appearing
- Check collector configuration in
config/prometheus.php - Verify storage backend connectivity
- Check Laravel logs for errors
- Check collector configuration in
- Slow Response Times
- Optimize histogram bucket configuration
- Use Redis with proper connection pooling
- Consider metric sampling for very high traffic
Debug Mode
Enable comprehensive debug logging to troubleshoot metrics collection:
Debug Output Examples:
Debug Features:
- โ Metric Operations: All metric registrations and operations
- โ Collector Activity: Detailed collector behavior tracking
- โ Performance Timing: Collection and rendering performance
- โ Storage Operations: Redis/storage adapter interactions
- โ Request Tracking: HTTP middleware execution flow
- โ Cache Filtering: Cache operation filtering logic
Production Note: Always disable debug mode in production to avoid log bloat.
Middleware Configuration
All available environment variables for easy configuration:
๐ค Contributing
Contributions are welcome! Please see CONTRIBUTING.md for details.
Development Setup
๐ License
This package is open-sourced software licensed under the MIT license.
๐ Support
- ๐ Documentation: Laravel Prometheus Docs
- ๐ Issues: GitHub Issues
- ๐ฌ Discussions: GitHub Discussions
- โญ Star on GitHub: Show your support
๐ Credits
- Author: Farhad Zand
- Built on: PromPHP/prometheus_client_php
- Inspired by: Prometheus community best practices and Laravel ecosystem
๐ Built with โค๏ธ for the Laravel community
Ready for enterprise-grade monitoring with industry-standard SLO tracking! โญ
๐ฏ Key Differentiators
- โ Official PromPHP Integration: Built on the official PHP client
- โ Industry-Standard Buckets: Optimized for real-world SLO monitoring
- โ Complete Metric Types: Counter, Gauge, Histogram, AND Summary with percentiles
- โ Intelligent Filtering: Prevents recursive metric counting issues
- โ Security-First: Built-in IP filtering and authentication support
- โ Production-Ready: Used in enterprise Laravel applications
- โ Comprehensive Testing: Extensive test coverage for reliability
- โ Developer-Friendly: Rich documentation and intuitive API
All versions of laravel-prometheus with dependencies
illuminate/config Version ^10.0|^11.0|^12.0|^13.0
illuminate/database Version ^10.0|^11.0|^12.0|^13.0
illuminate/events Version ^10.0|^11.0|^12.0|^13.0
illuminate/filesystem Version ^10.0|^11.0|^12.0|^13.0
illuminate/log Version ^10.0|^11.0|^12.0|^13.0
illuminate/mail Version ^10.0|^11.0|^12.0|^13.0
illuminate/redis Version ^10.0|^11.0|^12.0|^13.0
illuminate/support Version ^10.0|^11.0|^12.0|^13.0
promphp/prometheus_client_php Version ^2.14