将指标转发到Datadog
将你的超级图性能指标与Datadog集成
此功能仅适用于具有 GraphOS企业版计划.
您可以免费试用以测试它 企业试用版.
Apollo Datadog集成使您可以将您的企业图的性能指标到您的Datadog账户。Datadog支持高级功能API,允许您创建复杂的可视化警报来监控GraphQL指标。
ⓘ 注意
GraphOS仅转发命名GraphQL操作的性能指标。它不会转发匿名操作的性能指标。请确保您的图形客户端命名所有操作:
❌query {hello}✅query HelloQuery {hello}
设置
要将Apollo与Datadog集成,请向GraphOS Studio提供您的Datadog API密钥和区域。需要拥有管理权限的Datadog账户才能获取API密钥。
请访问您的Datadog集成页面并从列表中选择Apollo集成:
然后转到配置选项卡,点击下方的安装集成:
请访问您的Datadog API页面并选择创建API密钥。
通过查看您浏览器地址栏确定您的Datadog API区域
- 如果域名是
app.datadoghq.com
,则您的API区域是US
。 - 如果域名是
app.datadoghq.eu
,则您的 API 区域是EU
。
- 如果域名是
在 GraphOS Studio 中,转到您的图设置页面,然后进入 This Graph > 报告。
ⓘ 注意
如果您在此页面上看不到 Datadog 转发 部分,则该功能不是您组织计划的一部分。Datadog 转发需要 企业计划。
在 Datadog 转发 部分,点击 配置。提供您的 API 密钥和区域,然后点击 启用。
- 您可以使用相同的 Datadog API 密钥来配置所有 图,因为所有转发指标都标记了相应图的 ID(
graph:<graph-id>
)。
这样就完成了!大约五分钟后,您的 Datadog 指标资源管理器将开始显示从 GraphOS Studio 转发的指标。
转发指标
GraphOS Studio 将以下指标转发到 Datadog:
名称 | 描述 |
---|---|
apollo.operations.count | 执行过的 GraphQL 查询的数量。这包括查询、变更和错误操作的查询。 |
apollo.operations.error_count | 导致错误的 GraphQL 操作数量。这包括从图形用户界面中执行的错误和如果客户端服务失败与您的服务器建立连接时出现的 HTTP 错误。 |
apollo.operations.cache_hit_count | 从 Apollo 服务器完整查询缓存中提供的 GraphQL 查询的数量。 |
apollo.operations.latency.min apollo.operations.latency.median apollo.operations.latency.95percentile apollo.operations.latency.99percentile apollo.operations.latency.max apollo.operations.latency.avg | 这是 GraphQL 操作响应时间直方图,以毫秒为单位。由于 Studio 的聚合方法(对数分箱),这些值是准确的,误差在 +/- 5%。 |
这些指标以每 60 秒间隔聚合,并带有 GraphQL 操作名称(作为 operation:<query-name>
)。具有相同操作名称的独特 查询 签名合并,而没有操作名称的查询将被忽略。
这些指标还标记了相关的 Apollo graph ID(作为 graph:<graph-id>
)和相关 变体 名称(作为 variant:<variant-name>
)。如果您未设置变体名称,则使用 current
。
ⓘ 注意
如果您在2020年10月之前设置了您的集成,则度量名称以 apollo.engine.operations
开头,而不是以 apollo.operations
开头,并使用 service:<graph-id>
标签而不是 graph:<graph-id>
。这被称为“旧模式”。您可以通过点击您的图集集成页上的“切换到现代化模式”按钮将您的图集切换到现代化模式。这是一个单向更改;当您点击按钮时,您应准备更新任何仪表板和度量,以便使用新的度量名称和标记。
探索度量
在 Datadog Metrics Explorer中,所有 GraphOS Studio 的度量都是带有 标记的的图集ID(graph:<graph-id>
)、变种名称(variant:<variant-name>
)和操作名称(operation:<query-name>
)。这些值根据Datadog命名要求进行了标准化(所有字母均为小写,且非法符号被转换为下划线)。
标记可以帮助您在任何粒度级别上查看数据,无论您是想跨所有 operations 进行聚合还是放大某个特定操作。您可以通过选择一组相关的操作标记来进行过滤以及适当的 时间聚合和 空间聚合。类似地,如果您想比较预生产和生产环境中的度量,可以使用适当的 variant 标签进行过滤。
Datadog Metrics Explorer 示例
假设您想查看所有 operations 在预生产和生产 graph 中请求延迟的第95个百分点。
- 在 Graph 字段中,选择
apollo.operations.latency.95percentile
。 - 在 超过 字段 中,选择要显示的 图 的名称。
- 在 每个字段一个图 中,选择
变种
。选择您生产和预演环境中的 变种。 - 在 在每个图上,与 字段 聚合,选择
报告值的平均值
。
在 Apollo,我们使用 GraphOS Studio 来监控 GraphOS Studio 本身。对我们来说,这个图看起来就像以下这样:
要生成更高级的报告,请打开一个 Datadog 笔记本。
使用 Datadog 发送警报
您可以使用 Datadog 监控器 配置复杂的警报。
Datadog 指标警报示例
GraphOS Studio's 通知功能 支持在最后五分钟内具有错误的请求数量百分比超过对于特定 操作 的某些阈值时触发警报。假设您不仅想对最后五分钟内的特定操作进行警报,而是想对在某个 图 中最后十分钟内所有操作的错误百分比进行警报,比如当某个 mygraph
变种 为 变种 staging
的图的百分比超过 1% 时,发出警报。
这里需要的 Datadog 指标警报查询 是:
sum(last_10m):sum:apollo.operations.error_count{graph:mygraph,variant:staging}.as_count().rollup(sum).fill(null) / sum:apollo.operations.count{graph:mygraph,variant:staging}.as_count().rollup(sum).fill(null) > 0.01
The .rollup(sum).fill(null)
是必要的,因为 apollo.operations.count
是一个 Datadog 仪表,这意味着它 默认使用 avg
对时间进行聚合和 在空间聚合和查询算术中默认使用线性插值。使用 .as_count()
是必要的,以确保操作计数在除法之前而不是之后求和。
Datadog 复合监视器示例
考虑上一个示例中的错误百分比监视器。当操作数量较少时,几个错误可能会使错误百分比超过阈值,导致在低流量期间监视器产生噪声。我们只想在操作数量不是少的情况下发出警报,例如,在过去的十分钟内超过十个。
您可以使用 Datadog 复合监视器 来支持这种类型的警报。首先,创建一个具有以下指标警报 查询的监视器:
sum(last_10m):sum:apollo.operations.count{graph:mygraph,variant:staging}.rollup(sum).fill(null) > 10
然后,创建一个复合监视器,为这两个监视器的形式创建一个 a && b
,这将具有所需的行为。