PHPackages                             baddybugs/agent - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Logging &amp; Monitoring](/categories/logging)
4. /
5. baddybugs/agent

ActiveLibrary[Logging &amp; Monitoring](/categories/logging)

baddybugs/agent
===============

Intelligent monitoring agent for Laravel, the data collector for BaddyBugs platform.

1.0.14(4mo ago)0133MITPHPPHP ^8.2

Since Dec 29Pushed 4mo agoCompare

[ Source](https://github.com/Baddybugs/agent)[ Packagist](https://packagist.org/packages/baddybugs/agent)[ RSS](/packages/baddybugs-agent/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (1)Dependencies (14)Versions (14)Used By (0)

🐛 BaddyBugs PHP Agent
=====================

[](#-baddybugs-php-agent)

**L'agent d'observabilité complet pour Laravel** - Collecte automatiquement toutes les métriques, erreurs et traces de votre application.

[![PHP Version](https://camo.githubusercontent.com/0f16581d1180dbfd4c0e13166ec1267d4ad2f2fab8281ea6d6b284cf5c65d921/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048502d382e322532422d626c75652e737667)](https://php.net)[![Laravel Version](https://camo.githubusercontent.com/73692ab0f1fac2901149539199fa738ac249d6cd2387048e8063666cfab3d736/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c61726176656c2d31302e7825323025374325323031312e7825323025374325323031322e782d7265642e737667)](https://laravel.com)[![License](https://camo.githubusercontent.com/8bb50fd2278f18fc326bf71f6e88ca8f884f72f179d3e555e20ed30157190d0d/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d677265656e2e737667)](LICENSE)

---

📋 Table des Matières
--------------------

[](#-table-des-matières)

- [Fonctionnalités](#-fonctionnalit%C3%A9s)
- [Installation](#-installation)
- [Configuration Rapide](#-configuration-rapide)
- [Données Collectées](#-donn%C3%A9es-collect%C3%A9es)
- [Configuration Avancée](#-configuration-avanc%C3%A9e)
- [Lifecycle HTTP](#-lifecycle-http-complet)
- [Intégrations](#-int%C3%A9grations)
- [API Manuelle](#-api-manuelle)
- [Performance](#-performance)
- [Dépannage](#-d%C3%A9pannage)

---

✨ Fonctionnalités
-----------------

[](#-fonctionnalités)

### 🔍 Observabilité Complète

[](#-observabilité-complète)

- **42 collectors** couvrant tous les aspects de Laravel
- **Lifecycle HTTP complet** : Bootstrap → Middleware → Controller → Response
- **Distributed tracing** avec propagation des trace IDs
- **Timeline waterfall** pour visualiser chaque requête

### 🚨 Détection Automatique

[](#-détection-automatique)

- **Exceptions** (gérées et non gérées)
- **Requêtes SQL lentes** et problèmes N+1
- **Menaces de sécurité** (SQL injection, XSS, path traversal)
- **Fuites mémoire** et usage excessif
- **Jobs bloqués** et échecs de queue

### 📊 Analytics Produit

[](#-analytics-produit)

- **Feature tracking** automatique par route
- **Session analytics** (durée, bounce rate)
- **Form analytics** (erreurs de validation, types de formulaires)
- **Authentication events** (login, 2FA, lockouts)

### 🔒 Sécurité &amp; Confidentialité

[](#-sécurité--confidentialité)

- **Redaction automatique** des données sensibles
- **Scrubbing PII** (mots de passe, cartes bancaires, tokens)
- **Mode GDPR** pour anonymisation complète
- **Sampling configurable** par collector

---

📦 Installation
--------------

[](#-installation)

### Prérequis

[](#prérequis)

- PHP 8.2+
- Laravel 10.x, 11.x ou 12.x
- Extension JSON activée

### Via Composer

[](#via-composer)

```
composer require baddybugs/agent
```

### Publication de la Configuration

[](#publication-de-la-configuration)

```
php artisan vendor:publish --tag=baddybugs-config
```

---

⚡ Configuration Rapide
----------------------

[](#-configuration-rapide)

### 1. Ajoutez vos clés dans `.env`

[](#1-ajoutez-vos-clés-dans-env)

```
BADDYBUGS_ENABLED=true
BADDYBUGS_API_KEY=your-api-key-here
BADDYBUGS_ENV=production
```

### 2. C'est tout ! 🎉

[](#2-cest-tout--)

Puis faites

```
php artisan baddybugs:agent

```

L'agent démarre automatiquement et collecte les données.

En production vous devez la mettre comme tache de fond soit avec cron ou supervisor

---

📊 Données Collectées
--------------------

[](#-données-collectées)

### Lifecycle HTTP Complet

[](#lifecycle-http-complet)

Pour chaque requête HTTP, l'agent capture :

```
┌─────────────────────────────────────────────────────────────────────┐
│ BOOTSTRAP (2.3ms)                                                    │
│ ├── PHP Version: 8.2.0                                               │
│ ├── Laravel Version: 11.0.0                                          │
│ └── SAPI: fpm-fcgi                                                   │
├─────────────────────────────────────────────────────────────────────┤
│ ROUTING (0.8ms)                                                      │
│ ├── Route: user.profile                                              │
│ ├── URI: /api/users/{user}                                           │
│ └── Methods: GET, HEAD                                               │
├─────────────────────────────────────────────────────────────────────┤
│ MIDDLEWARE (12.5ms)                                                  │
│ ├── Global: EncryptCookies, VerifyCsrfToken (5)                      │
│ ├── Route: auth, throttle:60,1 (2)                                   │
│ └── Total: 7 middlewares                                             │
├─────────────────────────────────────────────────────────────────────┤
│ CONTROLLER (45.2ms)                                                  │
│ ├── Class: App\Http\Controllers\UserController                       │
│ ├── Action: show                                                     │
│ └── Parameters: [user]                                               │
├─────────────────────────────────────────────────────────────────────┤
│ RESPONSE (1.2ms)                                                     │
│ ├── Status: 200                                                      │
│ ├── Content-Type: application/json                                   │
│ └── Size: 1,234 bytes                                                │
├─────────────────────────────────────────────────────────────────────┤
│ TERMINATE (0.5ms)                                                    │
│ └── Callbacks executed                                               │
└─────────────────────────────────────────────────────────────────────┘
TOTAL: 62.5ms | Memory Peak: 24.5 MB

```

### Collectors Disponibles (42)

[](#collectors-disponibles-42)

CatégorieCollectors**HTTP &amp; Requêtes**RequestCollector, HttpClientCollector, RouteCollector, RateLimitCollector, LifecycleCollector**Database**QueryCollector, DatabaseCollector, RedisCollector**Eloquent**ModelCollector, EloquentCollector**Queue &amp; Jobs**JobCollector, ScheduledTaskCollector, QueueMetricsCollector**Exceptions**ExceptionCollector, HandledExceptionCollector**Logs**LogCollector**Email &amp; Notifications**MailCollector, NotificationCollector, BroadcastCollector**Sécurité**SecurityCollector, ThreatCollector, GateCollector, AuthCollector**Analytics**FeatureCollector, SessionCollector, FormCollector, ValidationCollector**Performance**TimelineCollector, MiddlewareCollector, ProfilingCollector, MemoryCollector, ViewCollector**Fichiers**FileUploadCollector, FilesystemCollector**Livewire**LivewireCollector**i18n**TranslationCollector**Tests**TestCollector**AI/LLM**LLMCollector**Health**HealthCollector**Cache**CacheCollector**Events**EventCollector**Commands**CommandCollector---

⚙️ Configuration Avancée
------------------------

[](#️-configuration-avancée)

### Collectors Individuels

[](#collectors-individuels)

Activez/désactivez chaque collector :

```
# Désactiver un collector spécifique
BADDYBUGS_ELOQUENT_TRACKING_ENABLED=false
BADDYBUGS_LIVEWIRE_MONITORING_ENABLED=false
BADDYBUGS_COLLECTORS_BROADCAST_ENABLED=false
```

### Sécurité &amp; Redaction

[](#sécurité--redaction)

```
// config/baddybugs.php

'redact_keys' => [
    'password',
    'password_confirmation',
    'credit_card',
    'cvv',
    'ssn',
    'token',
    'secret',
    'api_key',
],

'redact_headers' => [
    'authorization',
    'cookie',
    'x-xsrf-token',
],
```

### Sampling

[](#sampling)

Réduisez le volume de données avec le sampling :

```
# Sampling global (0.0 à 1.0)
BADDYBUGS_SAMPLING_RATE=0.5  # 50% des requêtes

# Sampling par type
BADDYBUGS_SESSION_REPLAY_SAMPLING=0.01  # 1% pour replay
BADDYBUGS_QUERY_SAMPLING_RATE=0.1       # 10% des queries
```

### Ignorer des Routes

[](#ignorer-des-routes)

```
// config/baddybugs.php

'ignore_paths' => [
    'health-check',
    'livewire/*',
    'telescope/*',
    '_debugbar/*',
],
```

---

🌊 Lifecycle HTTP Complet
------------------------

[](#-lifecycle-http-complet)

L'agent capture le lifecycle complet de chaque requête avec le `LifecycleCollector` :

### Phases Capturées

[](#phases-capturées)

PhaseDescriptionDonnées**Bootstrap**Chargement de LaravelPHP version, Laravel version, SAPI**Routing**Matching de routeRoute name, URI, methods**Middleware**Exécution middlewareStack complète, timings individuels**Controller**Logique métierClass, action, parameters**Response**Préparation réponseStatus, content-type, size**Terminate**Callbacks terminablesCleanup actions### Visualisation Waterfall

[](#visualisation-waterfall)

Chaque requête génère un événement `lifecycle.http_request` avec :

```
{
  "type": "lifecycle",
  "name": "http_request",
  "data": {
    "total_duration_ms": 62.5,
    "phases": [
      {"name": "bootstrap", "duration_ms": 2.3, "percentage": 3.68},
      {"name": "routing", "duration_ms": 0.8, "percentage": 1.28},
      {"name": "middleware", "duration_ms": 12.5, "percentage": 20.0},
      {"name": "controller", "duration_ms": 45.2, "percentage": 72.32},
      {"name": "response", "duration_ms": 1.2, "percentage": 1.92},
      {"name": "terminate", "duration_ms": 0.5, "percentage": 0.8}
    ],
    "summary": {
      "controller": "App\\Http\\Controllers\\UserController",
      "action": "show",
      "route_name": "user.profile",
      "method": "GET",
      "url": "https://example.com/api/users/123",
      "status_code": 200
    },
    "memory": {
      "peak_mb": 24.5
    }
  }
}
```

---

🔗 Intégrations
--------------

[](#-intégrations)

### Livewire / Filament

[](#livewire--filament)

```
BADDYBUGS_LIVEWIRE_MONITORING_ENABLED=true
```

Capture automatiquement :

- Initialisation des composants
- Requêtes lentes
- Erreurs de déshydratation
- Actions utilisateur

### OpenAI / LLM

[](#openai--llm)

```
use BaddyBugs\Agent\Facades\BaddyBugs;

// Tracking automatique via recordLLMRequest()
BaddyBugs::recordLLMRequest(
    provider: 'openai',
    model: 'gpt-4',
    prompt: $prompt,
    response: $response,
    usage: ['prompt_tokens' => 100, 'completion_tokens' => 50],
    durationMs: 1500
);
```

### Guzzle HTTP Client

[](#guzzle-http-client)

```
$client = new \GuzzleHttp\Client([
    'handler' => BaddyBugs::getGuzzleMiddlewareStack(),
]);

// Toutes les requêtes sont automatiquement tracées
$response = $client->get('https://api.example.com/data');
```

---

🛠️ API Manuelle
---------------

[](#️-api-manuelle)

### Enregistrer un Événement Custom

[](#enregistrer-un-événement-custom)

```
use BaddyBugs\Agent\Facades\BaddyBugs;

BaddyBugs::record('custom', 'user_purchased', [
    'product_id' => 123,
    'amount' => 99.99,
    'currency' => 'EUR',
]);
```

### Feature Tracking

[](#feature-tracking)

```
// Tracker l'utilisation d'une feature
BaddyBugs::feature('dark_mode_enabled', [
    'user_segment' => 'premium',
]);

// Tracker un événement custom
BaddyBugs::track('button_clicked', [
    'button' => 'subscribe',
    'page' => 'pricing',
]);
```

### Breadcrumbs

[](#breadcrumbs)

```
use BaddyBugs\Agent\Breadcrumbs;

// Ajouter un breadcrumb pour contexte
Breadcrumbs::add('user.action', 'User clicked checkout button');
Breadcrumbs::add('api.call', 'Called payment gateway', ['gateway' => 'stripe']);
```

### Profiling Manuel

[](#profiling-manuel)

```
use BaddyBugs\Agent\Facades\BaddyBugs;

// Mesurer une opération
BaddyBugs::startTimer('heavy_computation');
// ... code coûteux ...
BaddyBugs::stopTimer('heavy_computation'); // Enregistre automatiquement la durée
```

### Context Partagé

[](#context-partagé)

```
// Ajouter du contexte à tous les événements
BaddyBugs::setContext([
    'tenant_id' => $tenant->id,
    'subscription_plan' => 'enterprise',
]);
```

### Exceptions Gérées

[](#exceptions-gérées)

```
try {
    // Code qui peut échouer
    $result = riskyOperation();
} catch (Exception $e) {
    // Reporter l'exception même si elle est gérée
    reportHandledException($e, [
        'operation' => 'risky_operation',
        'severity' => 'medium',
    ]);

    // Fallback
    $result = defaultValue();
}
```

---

⚡ Performance
-------------

[](#-performance)

### Impact Minimal

[](#impact-minimal)

L'agent est conçu pour un impact minimal :

- **&lt; 2ms** overhead par requête en mode standard
- **Async sending** des événements (ne bloque pas la réponse)
- **Compression Gzip** des payloads
- **Buffering intelligent** avec envoi par batch

### Mode Performance

[](#mode-performance)

Pour les applications haute performance :

```
BADDYBUGS_PERFORMANCE_MODE=true
```

Cela désactive automatiquement les collectors à haut overhead.

### Sampling Recommandé pour Production

[](#sampling-recommandé-pour-production)

```
BADDYBUGS_SAMPLING_RATE=1.0        # Toutes les requêtes
BADDYBUGS_QUERY_SAMPLING_RATE=0.1  # 10% des queries (volume élevé)
BADDYBUGS_CACHE_SAMPLING=0.05      # 5% des ops cache
BADDYBUGS_SESSION_REPLAY_SAMPLING=0.01  # 1% session replay
```

---

🔧 Dépannage
-----------

[](#-dépannage)

### L'agent ne collecte pas

[](#lagent-ne-collecte-pas)

```
// Vérifiez que l'agent est activé
php artisan tinker
>>> config('baddybugs.enabled')
true

// Vérifiez la clé API
>>> config('baddybugs.api_key')
"your-api-key"
```

### Vérifier les logs

[](#vérifier-les-logs)

```
tail -f storage/logs/laravel.log | grep -i baddybugs
```

### Tester la connexion

[](#tester-la-connexion)

```
php artisan baddybugs:send --test
```

### Commandes Artisan

[](#commandes-artisan)

```
# Information sur l'agent
php artisan about

# Envoyer les événements en attente
php artisan baddybugs:agent

# Vider le buffer
php artisan baddybugs:flush
```

---

🤝 Support
---------

[](#-support)

- **Documentation** : [docs.baddybugs.com](https://docs.baddybugs.com)
- **Issues** : [GitHub Issues](https://github.com/baddybugs/agent/issues)
- **Email** :

---

📄 Licence
---------

[](#-licence)

MIT License - voir [LICENSE](LICENSE) pour plus de détails.

---

**Fait avec ❤️ par l'équipe BaddyBugs**

###  Health Score

39

—

LowBetter than 86% of packages

Maintenance76

Regular maintenance activity

Popularity10

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity54

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~1 days

Total

13

Last Release

131d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/20987014?v=4)[Chapdel KAMGA](/maintainers/chapdel)[@chapdel](https://github.com/chapdel)

---

Top Contributors

[![chapdel](https://avatars.githubusercontent.com/u/20987014?v=4)](https://github.com/chapdel "chapdel (24 commits)")

---

Tags

laravelmonitoringperformanceapmAgentobservability

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/baddybugs-agent/health.svg)

```
[![Health](https://phpackages.com/badges/baddybugs-agent/health.svg)](https://phpackages.com/packages/baddybugs-agent)
```

###  Alternatives

[roots/acorn

Framework for Roots WordPress projects built with Laravel components.

9682.1M97](/packages/roots-acorn)[laravel/cashier

Laravel Cashier provides an expressive, fluent interface to Stripe's subscription billing services.

2.5k25.9M107](/packages/laravel-cashier)[spatie/laravel-health

Monitor the health of a Laravel application

86910.0M83](/packages/spatie-laravel-health)[laravel/pulse

Laravel Pulse is a real-time application performance monitoring tool and dashboard for your Laravel application.

1.7k12.1M99](/packages/laravel-pulse)[yadahan/laravel-authentication-log

Laravel Authentication Log provides authentication logger and notification for Laravel.

416632.8k5](/packages/yadahan-laravel-authentication-log)[aedart/athenaeum

Athenaeum is a mono repository; a collection of various PHP packages

245.2k](/packages/aedart-athenaeum)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
