api-insight / metrics-bundle
Métriques et monitoring pour API Symfony
Installs: 1
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
Type:symfony-bundle
pkg:composer/api-insight/metrics-bundle
Requires
- php: >=8.2
- symfony/config: ^6.0|^7.0
- symfony/dependency-injection: ^6.0|^7.0
- symfony/framework-bundle: ^6.0|^7.0
- symfony/http-kernel: ^6.0|^7.0
Requires (Dev)
- phpunit/phpunit: ^10.0
- symfony/phpunit-bridge: ^6.0|^7.0
README
API Insight est un bundle Symfony ultra-léger qui ajoute des métriques, de la visibilité et un point d'observation (/metrics) à toutes tes routes API
🚀 Installation
composer require api-insight/metrics-bundle
⚙️ Configuration
Ajouter le bundle dans config/bundles.php:
return [ // ... ApiInsight\ApiInsightBundle::class => ['all' => true], ];
Créer le fichier de configuration config/packages/api_insight.yaml:
api_insight: enabled: true storage: memory # Options: memory, redis, database (Pro) auth: enabled: false type: token # Options: token, jwt (Pro) token: null # Votre token secret prometheus: enabled: false # Disponible en version Pro dashboard: enabled: false # Disponible en version Pro
Importer les routes dans config/routes.yaml:
api_insight: resource: '@ApiInsightBundle/Resources/config/routes.yaml'
📊 Utilisation
Une fois installé, API Insight commence automatiquement à collecter des métriques sur toutes les requêtes API.
Accès aux métriques globales
Accédez à vos métriques via l'endpoint /metrics:
curl http://votre-api.com/metrics
Exemple de réponse:
{
"global": {
"total_calls": 325,
"total_errors": 12,
"error_rate": 3.69,
"routes_count": 8
},
"routes": {
"api_users_get": {
"total_calls": 120,
"avg_duration": 0.056,
"min_duration": 0.012,
"max_duration": 0.234,
"status_codes": {
"200": 118,
"404": 2
},
"errors": 2,
"error_rate": 1.67
},
// ... autres routes
}
}
Accès aux métriques temporelles
Vous pouvez également accéder aux métriques réparties dans le temps via l'endpoint /metrics/time:
# Métriques journalières (par défaut) curl http://votre-api.com/metrics/time # Métriques period= {minute, hour, day, month, year} curl http://votre-api.com/metrics/time?period=hour # Métriques pour une route spécifique curl http://votre-api.com/metrics/time?route=api_users_get
Exemple de réponse pour les métriques temporelles:
{
"period": "day",
"metrics": {
"2023-11-15": {
"api_users_get": {
"total_calls": 45,
"errors": 2,
"avg_duration": 0.067,
"error_rate": 4.44
},
"api_products_list": {
"total_calls": 38,
"errors": 0,
"avg_duration": 0.123,
"error_rate": 0
}
},
"2023-11-16": {
// ... métriques pour ce jour
}
}
}
Exemple de réponse pour les métriques mensuelles:
{
"period": "month",
"metrics": {
"2023-11": {
"api_users_get": {
"total_calls": 1245,
"errors": 23,
"avg_duration": 0.062,
"error_rate": 1.85
},
// ... autres routes
},
"2023-12": {
// ... métriques pour ce mois
}
}
}
Réinitialisation des métriques
curl -X POST http://votre-api.com/metrics/reset
🔒 Sécurité
Pour protéger l'accès à vos métriques, activez l'authentification:
api_insight: auth: enabled: true type: token token: "votre-token-secret"
Puis accédez aux métriques avec l'en-tête d'authentification:
curl http://votre-api.com/metrics -H "X-API-Insight-Token: votre-token-secret"
🌟 Fonctionnalités
| Fonction | Version gratuite | Version Pro |
|---|---|---|
| Compteur de requêtes API (par route) | ✅ | ✅ |
| Suivi des erreurs HTTP (4xx/5xx) | ✅ | ✅ |
| Latence moyenne par endpoint | ✅ | ✅ |
| Route /metrics en JSON | ✅ | ✅ |
| Métriques temporelles (minute/heure/jour/mois/année) | ✅ | ✅ |
| Export Prometheus | ❌ | ✅ |
| Export vers Grafana/Influx/Elastic | ❌ | ✅ |
| Authentification JWT ou Token | ❌ | ✅ |
| Dashboard web intégré | ❌ | ✅ |
| Limitation de débit & alertes | ❌ | ✅ |
📝 Licence
MIT
🤝 Support
Pour toute question ou assistance, ouvrez une issue.