Artifacts 公开了分析数据,使您能够检查账户中的仓库活动、错误和操作持续时间。
Artifacts 指标可通过 Cloudflare 的 GraphQL 分析 API 获取。您可以使用它们来回答类似哪些仓库最繁忙、错误聚集在哪里以及操作耗时多久等问题。
Artifacts 目前导出 artifactsEventsAdaptiveGroups GraphQL 数据集。
| 指标 | GraphQL 字段 | 描述 |
|---|---|---|
| Operations | count |
匹配查询筛选器的 Artifacts 事件总数。这包括成功操作和错误。 |
| 总持续时间 | sum.durationMs |
处理匹配的 Artifacts 操作所花费的总时间,以毫秒为单位。 |
| 平均持续时间 | avg.durationMs |
每次匹配操作的平均时间,以毫秒为单位。 |
| 持续时间 p25 | quantiles.durationMsP25 |
第 25 百分位操作持续时间,以毫秒为单位。 |
| 持续时间 p50 | quantiles.durationMsP50 |
中位数操作持续时间,以毫秒为单位。 |
| 持续时间 p75 | quantiles.durationMsP75 |
第 75 百分位操作持续时间,以毫秒为单位。 |
| 持续时间 p90 | quantiles.durationMsP90 |
第 90 百分位操作持续时间,以毫秒为单位。 |
| 持续时间 p95 | quantiles.durationMsP95 |
第 95 百分位操作持续时间,以毫秒为单位。 |
| 持续时间 p99 | quantiles.durationMsP99 |
第 99 百分位操作持续时间,以毫秒为单位。 |
| 持续时间 p999 | quantiles.durationMsP999 |
第 99.9 百分位操作持续时间,以毫秒为单位。 |
可以查询过去 31 天的指标。查询需要使用包含您 Cloudflare 账户 ID 的 accountTag 筛选器。
使用这些维度来过滤或分组结果:
| 维度 | 描述 |
|---|---|
repository |
格式为 namespace/name 的完全限定仓库路径。 |
repositoryNamespace |
包含该仓库的命名空间。 |
repositoryName |
命名空间内的仓库名称。 |
eventKind |
顶级事件类别。对于成功的操作使用 action,对于失败使用 error。 |
eventType |
特定操作或错误类型。 |
errorMessage |
失败操作的错误消息。 |
date |
事件的日历日期。 |
datetime |
精确的事件时间戳。 |
datetimeMinute |
截断到分钟的事件时间。 |
datetimeFiveMinutes |
截断到 5 分钟窗口的事件时间。 |
datetimeFifteenMinutes |
截断到 15 分钟窗口的事件时间。 |
datetimeHour |
截断到小时的事件时间。 |
datetimeSixHours |
截断到 6 小时窗口的事件时间。 |
Artifacts 目前在 eventType 中发出以下值:
| 事件类型 | 类别 | 描述 |
|---|---|---|
create |
action |
仓库已被创建。 |
fork |
action |
仓库已被派生(fork)。 |
push |
action |
客户端向仓库推送了数据。 |
pull |
action |
客户端从仓库拉取(fetch)或克隆了数据。 |
delete |
action |
仓库已被删除。 |
storageLimitReached |
error |
操作达到了存储限制条件。 |
serverError |
error |
服务在处理请求时失败。 |
clientError |
error |
客户端发送了无效或不受支持的请求。 |
rateLimited |
error |
请求被限速器拒绝。 |
您可以使用 GraphQL 分析 API 查询 Artifacts 分析数据。本页上的所有示例均使用 artifactsEventsAdaptiveGroups 数据集。
使用此查询可查找在一定时间范围内一个命名空间中最繁忙的仓库。它还会返回平均操作持续时间,以便您可以将活动与延迟组合进行比较。
query ArtifactsOperationsByRepo(
$accountTag: String!
$datetimeStart: Time
$datetimeEnd: Time
$repositoryNamespace: String!
) {
viewer {
accounts(filter: { accountTag: $accountTag }) {
artifactsEventsAdaptiveGroups(
limit: 100
filter: {
datetime_geq: $datetimeStart
datetime_leq: $datetimeEnd
repositoryNamespace: $repositoryNamespace
eventKind: "action"
}
orderBy: [count_DESC]
) {
count
avg {
durationMs
}
dimensions {
repositoryName
}
}
}
}
}使用此查询可按错误量对仓库进行排名。这有助于您发现哪些仓库最常失败,以及哪些错误类型导致了这些失败。
query ArtifactsErrorsByRepo(
$accountTag: String!
$datetimeStart: Time
$datetimeEnd: Time
) {
viewer {
accounts(filter: { accountTag: $accountTag }) {
artifactsEventsAdaptiveGroups(
limit: 100
filter: {
datetime_geq: $datetimeStart
datetime_leq: $datetimeEnd
eventKind: "error"
}
orderBy: [count_DESC]
) {
count
dimensions {
repository
eventType
}
}
}
}
}使用此查询可查看在特定时间窗口内接收推送次数最多的仓库。这对于识别整个账户中处于活动状态的写密集型仓库非常有用。
query ArtifactsPushesByRepo(
$accountTag: String!
$datetimeStart: Time
$datetimeEnd: Time
) {
viewer {
accounts(filter: { accountTag: $accountTag }) {
artifactsEventsAdaptiveGroups(
limit: 100
filter: {
datetime_geq: $datetimeStart
datetime_leq: $datetimeEnd
eventKind: "action"
eventType: "push"
}
orderBy: [count_DESC]
) {
count
dimensions {
repository
}
}
}
}
}