PHPackages                             gemvc/apm-tracekit - 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. gemvc/apm-tracekit

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

gemvc/apm-tracekit
==================

TraceKit APM provider for GEMVC framework

2.1.2(3mo ago)0881MITPHPPHP &gt;=8.2

Since Jan 1Pushed 3mo agoCompare

[ Source](https://github.com/gemvc/apm-tracekit)[ Packagist](https://packagist.org/packages/gemvc/apm-tracekit)[ Docs](https://github.com/gemvc/apm-tracekit)[ RSS](/packages/gemvc-apm-tracekit/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (6)Dependencies (3)Versions (8)Used By (1)

[![gemvc_header_for_github](https://private-user-images.githubusercontent.com/211101824/531325087-69dcc3f3-b422-47b6-a67d-a9df94628158.JPG?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzUxNDI3NDEsIm5iZiI6MTc3NTE0MjQ0MSwicGF0aCI6Ii8yMTExMDE4MjQvNTMxMzI1MDg3LTY5ZGNjM2YzLWI0MjItNDdiNi1hNjdkLWE5ZGY5NDYyODE1OC5KUEc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwNDAyJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDQwMlQxNTA3MjFaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0zZmI5OWU4MzlkNjA1ZGFiM2UxMjUxZjk0N2E3ZDQyZjU0YmE4MzcyMTU4ZTZiNGVhMGM2ZjJkMzNjZjQ0MzU4JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.KnKENuMcsDbXN15mQbxBJmhIM_0UmUsLDhhXDmYscpU)](https://private-user-images.githubusercontent.com/211101824/531325087-69dcc3f3-b422-47b6-a67d-a9df94628158.JPG?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzUxNDI3NDEsIm5iZiI6MTc3NTE0MjQ0MSwicGF0aCI6Ii8yMTExMDE4MjQvNTMxMzI1MDg3LTY5ZGNjM2YzLWI0MjItNDdiNi1hNjdkLWE5ZGY5NDYyODE1OC5KUEc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwNDAyJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDQwMlQxNTA3MjFaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0zZmI5OWU4MzlkNjA1ZGFiM2UxMjUxZjk0N2E3ZDQyZjU0YmE4MzcyMTU4ZTZiNGVhMGM2ZjJkMzNjZjQ0MzU4JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.KnKENuMcsDbXN15mQbxBJmhIM_0UmUsLDhhXDmYscpU)

GEMVC APM TraceKit Provider
===========================

[](#gemvc-apm-tracekit-provider)

[![License: MIT](https://camo.githubusercontent.com/fdf2982b9f5d7489dcf44570e714e3a15fce6253e0cc6b5aa61a075aac2ff71b/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d79656c6c6f772e737667)](https://opensource.org/licenses/MIT)[![PHP Version](https://camo.githubusercontent.com/c5e8da782b1a0673c08b4f474108036d2cc973470eed2d5d89d48e8c8475eee6/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7068702d253345253344382e322d626c75652e737667)](https://www.php.net/)

TraceKit APM provider implementation for GEMVC framework. This package implements the [GEMVC APM Contracts](https://github.com/gemvc/apm-contracts) interface, providing distributed tracing and performance monitoring for GEMVC applications.

⬇️ Installation
---------------

[](#️-installation)

**TraceKit is automatically included** when you install `gemvc/library` - no separate installation required!

If you're using GEMVC framework, TraceKit APM is already available and ready to configure. Simply run the setup wizard:

```
php vendor/bin/tracekit init
```

**Note:** If you need to install this package standalone (outside of GEMVC framework), you can still use:

```
composer require gemvc/apm-tracekit
```

This package automatically installs `gemvc/apm-contracts` as a dependency, which provides the base interfaces and abstract classes.

🎯 Architecture
--------------

[](#-architecture)

This package is built on top of the [GEMVC APM Contracts](https://github.com/gemvc/apm-contracts) package:

```
┌─────────────────────────────────────────────────────────┐
│              gemvc/apm-contracts                        │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐   │
│  │ ApmInterface │  │ AbstractApm  │  │ ApmFactory   │   │
│  │  (Contract)  │  │  (Base)      │  │ (Universal)  │   │
│  └──────────────┘  └──────────────┘  └──────────────┘   │
│  ┌──────────────────┐  ┌──────────────────┐             │
│  │ApmToolkitInterface│ │AbstractApmToolkit│             │
│  │   (Contract)     │  │    (Base)        │             │
│  └──────────────────┘  └──────────────────┘             │
└────────────────────┬────────────────────────────────────┘
                     │ implements/extends
                     ▼
┌─────────────────────────────────────────────────────────┐
│            gemvc/apm-tracekit                           │
│  ┌──────────────────┐  ┌──────────────────┐             │
│  │ TraceKitProvider │  │ TraceKitToolkit   │            │
│  │  (extends        │  │  (extends         │            │
│  │   AbstractApm)   │  │   AbstractApmToolkit)          │
│  │  [Used by Factory]│  └──────────────────┘            │
│  └──────────────────┘                                   │
│  ┌──────────────────┐                                   │
│  │ TraceKitModel    │                                   │
│  │  (extends        │                                   │
│  │   AbstractApm)   │                                   │
│  │  [Alternative]   │                                   │
│  └──────────────────┘                                   │
└─────────────────────────────────────────────────────────┘

```

**Key Components:**

- **`TraceKitProvider`** - Main APM provider class extending `AbstractApm` (used by `ApmFactory`)
- **`TraceKitModel`** - Alternative APM provider implementation extending `AbstractApm` (with additional methods like `addEvent()`)
- **`TraceKitToolkit`** - Client-side integration and management class extending `AbstractApmToolkit`
- **OpenTelemetry OTLP JSON Format** - Sends traces in standard OpenTelemetry format
- **Batch Trace Sending** - Uses `AbstractApm`'s batching system with synchronous `ApiCall` for reliable trace delivery (compatible with OpenSwoole production)

🔐 Configuration
---------------

[](#-configuration)

### Environment Variables

[](#environment-variables)

Set in your `.env` file:

```
# Core APM Configuration
APM_NAME="TraceKit"
APM_ENABLED="true"
APM_SAMPLE_RATE="1.0"
APM_SEND_INTERVAL="5"
APM_TRACE_RESPONSE="false"
APM_TRACE_DB_QUERY="false"
APM_TRACE_REQUEST_BODY="false"

# TraceKit-Specific Configuration
TRACEKIT_API_KEY="your-api-key"
TRACEKIT_SERVICE_NAME="your-service-name"
TRACEKIT_SAMPLE_RATE="1.0"
TRACEKIT_TRACE_RESPONSE="false"
TRACEKIT_TRACE_DB_QUERY="false"
TRACEKIT_TRACE_REQUEST_BODY="false"
```

**Note:** The TraceKit endpoint URL (`https://app.tracekit.dev/v1/traces`) is pre-configured as a library constant and does not need to be set in your `.env` file. If you need to override it (e.g., for custom deployments), you can set `TRACEKIT_ENDPOINT` in your `.env` file.

### Configuration Priority

[](#configuration-priority)

Configuration values are loaded in the following priority order:

1. **Config array** (passed to constructor/init) - Highest priority
2. **Provider-specific env vars** (`TRACEKIT_*`) - Medium priority
3. **Unified APM env vars** (`APM_*`) - Lower priority
4. **Default values** - Lowest priority

### Unified API Key Support

[](#unified-api-key-support)

You can use either `TRACEKIT_API_KEY` or the unified `APM_API_KEY` environment variable:

```
# Both work the same way
TRACEKIT_API_KEY="your-api-key"
# or
APM_API_KEY="your-api-key"
```

### Quick Setup with CLI Command

[](#quick-setup-with-cli-command)

The easiest way to configure TraceKit is using the interactive CLI command:

```
php vendor/bin/tracekit init
```

This command provides an interactive wizard that:

- Guides you through registration or API key setup
- Handles email verification flow (waits for your input)
- Automatically configures your `.env` file
- Tests the connection to verify everything works

**Setup Options:**

1. **Easy Register** - Automated registration with email verification
2. **I have API key** - Manual entry of existing API key

See the [CLI Setup Wizard](#-cli-setup-wizard) section below for detailed information.

💡 Usage
-------

[](#-usage)

### Automatic Integration

[](#automatic-integration)

Once installed and configured, TraceKit automatically integrates with GEMVC:

1. **Framework Initialization** - The framework creates a `TraceKitProvider` instance via `ApmFactory::create()`
2. **Root Trace Creation** - A root span is automatically created for each HTTP request
3. **Span Management** - Child spans are created for database queries, controller operations, etc.
4. **Trace Batching** - Traces are automatically batched and sent every 5 seconds (configurable via `APM_SEND_INTERVAL`) using synchronous `ApiCall`
5. **Shutdown Safety** - All pending traces are sent immediately on shutdown to ensure no data loss

### Manual Span Creation

[](#manual-span-creation)

You can create custom spans in your code:

```
// Get APM instance from Request
$apm = $request->apm;

if ($apm !== null && $apm->isEnabled()) {
    // Start a custom span
    $span = $apm->startSpan('custom-operation', [
        'custom.attribute' => 'value'
    ]);

    try {
        // Your code here
        $result = doSomething();

        // End span with success
        $apm->endSpan($span, ['result' => 'success'], \Gemvc\Core\Apm\ApmInterface::STATUS_OK);
    } catch (\Throwable $e) {
        // Record exception
        $apm->recordException($span, $e);
        $apm->endSpan($span, ['result' => 'error'], \Gemvc\Core\Apm\ApmInterface::STATUS_ERROR);
        throw $e;
    }
}
```

### Using TraceKit Toolkit

[](#using-tracekit-toolkit)

The `TraceKitToolkit` class provides client-side integration features:

```
use Gemvc\Core\Apm\Providers\TraceKit\TraceKitToolkit;

// Initialize toolkit
$toolkit = new TraceKitToolkit();

// Register new service (first-time setup)
$response = $toolkit->registerService('admin@example.com', 'My Organization');
if ($response->response_code === 200) {
    $sessionId = $response->data['session_id'];
    // User receives verification code via email
}

// Verify code and activate service
$response = $toolkit->verifyCode($sessionId, '123456');
if ($response->response_code === 200) {
    $apiKey = $response->data['api_key'];
    // Save to .env: TRACEKIT_API_KEY=$apiKey
}

// Send periodic health heartbeat (non-blocking)
$toolkit->sendHeartbeatAsync('healthy', [
    'memory_usage_mb' => round(memory_get_usage(true) / 1024 / 1024, 2),
    'cpu_load' => sys_getloadavg()[0] ?? 0,
]);

// Get service metrics
$metrics = $toolkit->getMetrics('1h');

// Create webhook for alerts
$toolkit->createWebhook(
    'production-alerts',
    'https://example.com/webhooks/alerts',
    ['alert.created', 'alert.resolved'],
    true
);
```

### CLI Setup Wizard

[](#cli-setup-wizard)

The `tracekit init` command provides an interactive setup wizard for configuring TraceKit:

```
php vendor/bin/tracekit init
```

**What the wizard does:**

1. **Welcome Banner** - Displays TraceKit features and welcome message
2. **Configuration Detection** - Checks for existing TraceKit configuration
    - If found, offers to reconfigure, test connection, or exit
3. **Setup Method Selection:**
    - **Easy Register** (Recommended)
        - Prompts for email and organization name
        - Sends registration request to TraceKit
        - Sends verification code to your email
        - **Waits for you to enter the verification code** (CLI does not exit)
        - Supports retry logic (max 3 attempts)
        - Automatically receives and saves API key
    - **I have API key**
        - Prompts for existing API key
        - Validates API key format
4. **Service Name Setup** - Prompts for unique service name with validation
5. **Automatic Configuration** - Updates `.env` file with:
    - `TRACEKIT_API_KEY` - Your API key
    - `TRACEKIT_SERVICE_NAME` - Your service name
    - `APM_NAME="TraceKit"` - Provider name
    - `APM_ENABLED="true"` - Enable APM
6. **Connection Test** - Verifies API key and connection to TraceKit service
7. **Success Message** - Displays confirmation and next steps

**Example Flow:**

```
$ php vendor/bin/tracekit init

╔══════════════════════════════════════════════════════════╗
║         Welcome to TraceKit APM Setup Wizard            ║
╚══════════════════════════════════════════════════════════╝

Choose setup method:
  1. Easy Register (Recommended)
  2. I have API key

Enter your choice [1]: 1

Enter your email: admin@example.com
Enter organization name (optional): My Company

Registering service with TraceKit...
  Sending registration request... ✓ Done

✓ Verification code sent to: admin@example.com
Please check your email for the verification code.

Enter verification code from email: 123456

Verifying code... ✓ Verified
✓ API Key received
✓ Service registered successfully

Enter service name: my-awesome-service

Saving configuration... ✓ Done
Testing connection... ✓ Connection successful!

╔══════════════════════════════════════════════════════════╗
║              TraceKit Setup Complete!                    ║
╚══════════════════════════════════════════════════════════╝

```

**Note:** The CLI command is part of the GEMVC framework and uses standard CLI infrastructure (`Command`, `CliBoxShow`, `ProjectHelper`).

✨ Features
----------

[](#-features)

### OpenTelemetry OTLP JSON Format

[](#opentelemetry-otlp-json-format)

- **Standard Format** - Uses OpenTelemetry OTLP JSON format for compatibility
- **Service Discovery** - Automatically includes service name in resource attributes
- **Span Hierarchy** - Supports parent-child span relationships
- **Event Recording** - Can record exception events and custom events on spans

### Batch Trace Sending

[](#batch-trace-sending)

- **Time-Based Batching** - Uses `AbstractApm`'s batching system to send traces in batches every 5 seconds (configurable via `APM_SEND_INTERVAL`)
- **Synchronous ApiCall** - Uses synchronous `ApiCall` for reliable trace delivery (compatible with OpenSwoole production environments)
- **Automatic Batching** - Multiple traces are automatically combined into single batch requests for efficiency
- **Shutdown Safety** - All pending traces are force-sent on shutdown to ensure no data loss
- **Graceful Degradation** - Failures in trace sending don't affect application performance
- **OpenSwoole Compatible** - No async operations that cause issues in OpenSwoole production environments

### Span Management

[](#span-management)

- **Stack-Based Context** - Simple stack-based span context propagation
- **Automatic Sampling** - Respects sample rate configuration
- **Error Handling** - Errors are always traced (forced sampling)
- **Span Kinds** - Supports OpenTelemetry span kinds (SERVER, CLIENT, INTERNAL, etc.)

📖 API Reference
---------------

[](#-api-reference)

### TraceKitProvider

[](#tracekitprovider)

Main provider class implementing `ApmInterface` (used by `ApmFactory`):

**Instance Methods:**

- `init(array $config = []): bool` - Initialize provider with configuration (for setup/configuration via CLI/GUI)
- `isEnabled(): bool` - Check if tracing is enabled
- `startTrace(string $operationName, array $attributes = [], bool $forceSample = false): array` - Start a root trace (span). `$forceSample = true` forces tracing regardless of sample rate (used for errors)
- `startSpan(string $operationName, array $attributes = [], int $kind = self::SPAN_KIND_INTERNAL): array` - Start a child span. `$kind` can be `SPAN_KIND_SERVER`, `SPAN_KIND_CLIENT`, `SPAN_KIND_INTERNAL`, etc.
- `endSpan(array $spanData, array $finalAttributes = [], ?string $status = self::STATUS_OK): void` - End a span. `$status` can be `STATUS_OK` or `STATUS_ERROR`
- `recordException(array $spanData, \Throwable $exception): array` - Record an exception on a span. Auto-creates trace if no root span exists
- `flush(): void` - Add traces to batch queue (batches are sent automatically every `APM_SEND_INTERVAL` seconds)
- `getTraceId(): ?string` - Get current trace ID (inherited from `AbstractApm`)

**Static Methods:**

- `getCurrentInstance(): ?TraceKitProvider` - Get the current active instance
- `clearCurrentInstance(): void` - Clear the current active instance

**Note:** `TraceKitModel` is an alternative implementation with additional methods like `addEvent()`, `getSampleRate()`, `getSampleRatePercent()`, and `getActiveSpan()`.

### TraceKitToolkit

[](#tracekittoolkit)

Client-side integration class implementing `ApmToolkitInterface`:

- `registerService(string $email, ?string $organizationName, string $source, array $sourceMetadata): JsonResponse` - Register new service
- `verifyCode(string $sessionId, string $code): JsonResponse` - Verify email and get API key
- `getStatus(): JsonResponse` - Check integration status
- `sendHeartbeatAsync(string $status, array $metadata): void` - Send asynchronous heartbeat
- `getMetrics(string $window): JsonResponse` - Get service metrics
- `getAlertsSummary(): JsonResponse` - Get alerts overview
- `createWebhook(string $name, string $url, array $events, bool $enabled): JsonResponse` - Create webhook

For complete API documentation, see the [GEMVC APM Contracts README](vendor/gemvc/apm-contracts/README.md).

🔄 Related Packages
------------------

[](#-related-packages)

- [gemvc/apm-contracts](https://github.com/gemvc/apm-contracts) - Base APM contracts and interfaces
- [gemvc/library](https://github.com/gemvc/library) - GEMVC core framework

🌐 Environment Variables Reference
---------------------------------

[](#-environment-variables-reference)

### Core APM Variables

[](#core-apm-variables)

- `APM_NAME` - APM provider name (must be "TraceKit" for this provider)
- `APM_ENABLED` - Enable/disable APM (`"true"`, `"1"`, `"false"`, `"0"`, or boolean)
- `APM_SAMPLE_RATE` - Sample rate for traces (0.0 to 1.0, where 1.0 = 100%)
- `APM_TRACE_RESPONSE` - Enable/disable response tracing
- `APM_TRACE_DB_QUERY` - Enable/disable database query tracing
- `APM_TRACE_REQUEST_BODY` - Enable/disable request body tracing
- `APM_SEND_INTERVAL` - Batch send interval in seconds (default: 5). Controls how often batched traces are sent to APM provider. Lower values = more frequent sends with smaller batches. Minimum: 1 second.
- `APM_API_KEY` - Unified API key (works for all providers)

### TraceKit-Specific Variables

[](#tracekit-specific-variables)

- `TRACEKIT_API_KEY` - TraceKit API key (or use `APM_API_KEY`)
- `TRACEKIT_SERVICE_NAME` - Service name for traces
- `TRACEKIT_ENDPOINT` - Override default endpoint URL (optional)
- `TRACEKIT_SAMPLE_RATE` - Override sample rate (optional)
- `TRACEKIT_TRACE_RESPONSE` - Override response tracing flag (optional)
- `TRACEKIT_TRACE_DB_QUERY` - Override DB query tracing flag (optional)
- `TRACEKIT_TRACE_REQUEST_BODY` - Override request body tracing flag (optional)

🧪 Development
-------------

[](#-development)

### Running Tests

[](#running-tests)

```
composer test
```

All tests pass successfully (87 tests, 200 assertions). The test suite includes stub files for GEMVC framework classes to enable independent testing without requiring the full framework installation.

### Code Quality

[](#code-quality)

```
composer phpstan
```

PHPStan passes with no errors at level 9. Stub files for GEMVC framework classes are automatically loaded via `phpstan.neon` configuration for static analysis.

### Stub Files

[](#stub-files)

This package includes stub files in the `stubs/` directory for GEMVC framework classes. These stubs serve two purposes:

1. **PHPStan Static Analysis** - Loaded via `phpstan.neon` bootstrap configuration
2. **PHPUnit Test Execution** - Loaded via `tests/bootstrap.php` for runtime testing

The stub files provide minimal implementations with correct method signatures and type hints, allowing the package to be analyzed and tested independently.

⚖️ License
----------

[](#️-license)

MIT License - see [LICENSE](LICENSE) file for details.

👥 Contributing
--------------

[](#-contributing)

Contributions are welcome! Please see the [GEMVC APM Contracts README](vendor/gemvc/apm-contracts/README.md) for information about the APM provider architecture.

Credits
-------

[](#credits)

Part of the [GEMVC PHP Framework built for Microservices](https://gemvc.de) ecosystem. made with love By Ali Khorsandfard

###  Health Score

40

—

FairBetter than 88% of packages

Maintenance79

Regular maintenance activity

Popularity10

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity52

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 ~5 days

Total

6

Last Release

111d ago

Major Versions

1.1.0 → 2.0.02026-01-14

### Community

Maintainers

![](https://www.gravatar.com/avatar/e56aef71be22058cb4009cb1ef3b656232c2250df6726d63a812e18fe6f73e3c?d=identicon)[gemvc](/maintainers/gemvc)

---

Top Contributors

[![gemvc](https://avatars.githubusercontent.com/u/211101824?v=4)](https://github.com/gemvc "gemvc (15 commits)")

---

Tags

monitoringapmtracinggemvctracekit

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Type Coverage Yes

### Embed Badge

![Health badge](/badges/gemvc-apm-tracekit/health.svg)

```
[![Health](https://phpackages.com/badges/gemvc-apm-tracekit/health.svg)](https://phpackages.com/packages/gemvc-apm-tracekit)
```

###  Alternatives

[open-telemetry/api

API for OpenTelemetry PHP.

1933.0M214](/packages/open-telemetry-api)[open-telemetry/sdk

SDK for OpenTelemetry PHP.

2322.9M248](/packages/open-telemetry-sdk)[pkerrigan/xray

A basic PHP instrumentation library for AWS X-Ray

601.4M3](/packages/pkerrigan-xray)[scoutapp/scout-apm-laravel

Scout Application Performance Monitoring Agent - https://scoutapm.com

23831.3k](/packages/scoutapp-scout-apm-laravel)[scoutapp/scout-apm-php

Scout Application Performance Monitoring Agent - https://scoutapm.com

17877.0k5](/packages/scoutapp-scout-apm-php)

PHPackages © 2026

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