datadog/php-datadogstatsd
DogStatsD client for PHP from Datadog. Send metrics, events, and service checks to the Datadog Agent via UDP or UDS, with support for tags, sampling, buffering, and namespacing. Useful for instrumenting PHP apps and services.
datadog/php-datadogstatsd 1.7.1 further solidifies its fit for Laravel’s event-driven, distributed architecture. The feature directly addresses UDP reliability gaps, a critical pain point in high-throughput or unstable network environments. This aligns with Laravel’s reliance on asynchronous processing (queues, events) and resilience patterns (circuit breakers, fallbacks).App\Exceptions\Handler) and logging (Monolog), enabling correlated debugging. For example, socket errors can trigger alerts when paired with Laravel’s 5xx response tracking.StatsdSocketError) for reactive fallbacks (e.g., switching to HTTP API).statsd.socket_errors metric, triggering Datadog alerts for network instability.StatsdSocketError).ext-udp, ext-json). The handler is isolated and backward-compatible.'datadog' => [
'statsd' => [
'error_handler' => \App\Services\StatsdErrorHandler::class,
],
],
| Risk Area | Mitigation Strategy |
|---|---|
| UDP Packet Loss | New: Leverage the error handler to emit structured metrics (statsd.socket_errors) and trigger Datadog alerts. Pair with HTTP API fallback for critical paths. |
| Metric Cardinality | Unchanged; continue using tags to avoid sampling. Monitor statsd.socket_errors volume to prevent cost spikes. |
| Latency Overhead | Benchmark with the handler to ensure <1ms overhead. UDP’s async nature means the handler runs post-send, avoiding blocking. |
| Schema Changes | Low Risk: The handler is additive. No breaking changes to existing metrics or config. |
| Laravel Version Gaps | Test on LTS versions (8.x, 10.x). No PHP version requirements changed. |
| Handler Complexity | New: Risk of overly complex fallbacks (e.g., recursive retries). Mitigate by: |
retry helper for HTTP fallbacks.laravel.requests, db.query_time). |statsd.socket_errors > 0 monitor)?datadog/datadog-api-client) when UDP fails? If so, what’s the cost/latency trade-off?'error_handler' => function ($error) {
if (config('datadog.fallback_enabled')) {
\Datadog\API\Metrics::submit([[
'metric' => 'fallback.' . $error->getMetric(),
'points' => [[time(), $error->getValue()]],
'tags' => ['source' => 'laravel', 'error_type' => get_class($error)],
]]);
}
},
statsd_non_local_traffic tuning) to reduce packet loss?ddtrace or custom metric)?laravel.payment_failure when socket errors coincide with payment processing.debugbar to display socket error stats in the debug toolbar?StatsdSocketError) for reactive fallbacks.dd-trace-php) for end-to-end traces.datadog/datadog-api-client).Monolog to Datadog to correlate socket errors with application events.statsd_non_local_traffic to reduce packet loss.8125 remains critical; monitor latency between Laravel and Agent. Use Datadog Network Maps to visualize dependencies.laravel.requests, db.query_time).'datadog' => [
'statsd' => [
'error_handler' => function ($error) {
\Log::error("StatsD socket error: " . $error->getMessage());
app('datadog.statsd')->increment('statsd.socket_errors', 1, [
'error_type' => get_class($error),
]);
},
],
],
// app/Services/StatsdErrorHandler.php
class StatsdErrorHandler {
public function __invoke($error) {
if (config('datadog.fallback_enabled')) {
\Datadog\API\Metrics::submit([[
'metric' => 'fallback.' . $error->getMetric(),
'points' => [[time(), $error->getValue()]],
'tags' => ['source' => 'laravel'],
]]);
}
event(new StatsdSocketError($error));
}
}
// config/services.php
'datadog' => [
'statsd' => [
'error_handler' => \App\Services\StatsdErrorHandler::class,
],
],
How can I help you explore Laravel packages today?