插桩 HTTP 请求
了解如何手动插桩您的代码以使用 Sentry 的 Requests 模块。
Sentry 提供了一个 请求监控仪表板,可以通过我们的 Laravel SDK 和 Symfony SDK 自动插桩。
如果您使用的是其他工具,可以通过以下设置说明手动插桩您的请求,并使用 Sentry 查看 API 请求的性能。
确保在创建跨度时有一个事务正在运行。更多信息请参阅 追踪。
有关可以设置哪些数据的详细信息,请参阅 Requests Module 开发者规范 和 HTTP Span 数据约定。
如果您使用的是 Guzzle,可以将 Sentry 的 GuzzleTracingMiddleware
注入到您的 HandlerStack
中。
Copied
$stack = new \GuzzleHttp\HandlerStack();
$stack->setHandler(new \GuzzleHttp\Handler\CurlHandler());
$stack->push(\Sentry\Tracing\GuzzleTracingMiddleware::trace());
$client = new \GuzzleHttp\Client(['handler' => $stack]);
$response = $client->get('https://example.com/');
以下是一个插桩 HTTP 请求的示例:
Copied
$parentSpan = \Sentry\SentrySdk::getCurrentHub()->getSpan();
if ($parentSpan !== null) {
$context = \Sentry\Tracing\SpanContext::make()
->setOp('http.client');
$span = $parentSpan->startChild($context);
// Set the span we just started as the current span
\Sentry\SentrySdk::getCurrentHub()->setSpan($span);
$client = new \Cake\Http\Client();
$response = $client->get('https://example.com/');
$span
->setDescription('GET https://example.com/')
->setStatus(\Sentry\Tracing\SpanStatus::createFromHttpStatusCode($response->getStatusCode()))
->setData([
'http.request.method' => 'GET',
'http.response.body.size' => $response->getBody()->getSize(),
'http.response.status_code' => $response->getStatusCode(),
])
->finish();
// Restore the span back to the parent span
\Sentry\SentrySdk::getCurrentHub()->setSpan($parentSpan);
}