0

我们有一个在 .Net Core 上运行的 GraphQL api。由于所有查询都是对 /graphql 端点进行的,因此我们在 Azure Application Insights 的性能页面上只能获得一个操作“POST /graphql”,而 REST API 将允许 Aplication Insights 自动为我们提供每个端点的性能(例如 GET /用户,POST /事件等...)。

为了仍然获得性能指标,我在代码中添加了自定义遥测。当调用检索用户的代码时,我会这样做:

RequestTelemetry requestTelemetry = new RequestTelemetry
{
    Name = "UsersRequest"
};
var operation = _telemetryClient.StartOperation(requestTelemetry);

当一切都完成后,我会这样做:

operation.Telemetry.Success = true;
_telemetryClient.StopOperation(operation);
return result;

然后,当我像下面的屏幕截图一样打开“POST /graphql”操作时,我可以看到包含在“UsersRequest”中的依赖项调用(想象“CustomMiddleware”说“UsersRequest”): 在此处输入图像描述

这已经是一个很大的帮助,它比在没有结构的情况下将所有数据库请求放在一起要清楚得多。

唯一缺少的是我在性能页面上看不到“UsersRequest”或“CustomMiddleware”作为操作本身。这将是一个巨大的帮助,性能页面提供了惊人的见解。如果能够看到“UsersRequest”在过去 24 小时内被调用了 500 次,性能在过去 7 天内一直在下降,或者平均持续时间为 50 毫秒,这将非常有帮助。

在此处输入图像描述

谢谢!

4

0 回答 0