mirror of
https://github.com/yu-i-i/overleaf-cep.git
synced 2026-05-31 04:41:32 +02:00
* [clsi] initial implementation of compile from history * [clsi] copy changes * [saas-e2e] extend test case with nested folder * [saas-e2e] add test case for tracked changes * [web] fix accumulating changes from multiple chunks * [web] optimize size check for compile request payload * [clsi] deduplicate globalBlobs * [clsi] add validation for request body details * [clsi] add metrics for compile from history * [clsi] download binary files concurrently * [clsi] skip download of empty file blob * [clsi] break down e2e compile time metric by compileFromHistory GitOrigin-RevId: 0dadef93e89d8a172c35cb130a1042d9d1bec42a
104 lines
3.1 KiB
JavaScript
104 lines
3.1 KiB
JavaScript
import { prom } from '@overleaf/metrics'
|
|
|
|
const COMPILE_TIME_BUCKETS = [
|
|
0.5, 1, 1.5, 2, 3, 4, 5, 6, 8, 10, 15, 20, 25, 30, 45, 60, 75, 90, 120, 150,
|
|
180, 210, 240,
|
|
]
|
|
|
|
const compilesTotal = new prom.Counter({
|
|
name: 'clsi_compiles_total',
|
|
help: 'Number of compiles',
|
|
labelNames: [
|
|
'status',
|
|
'engine',
|
|
'compile',
|
|
'group',
|
|
'image',
|
|
'draft',
|
|
'stop_on_first_error',
|
|
'passes',
|
|
],
|
|
})
|
|
|
|
const compileDurationSeconds = new prom.Histogram({
|
|
name: 'clsi_compile_duration_seconds',
|
|
help: 'Duration of the latexmkrc invocation',
|
|
buckets: COMPILE_TIME_BUCKETS,
|
|
labelNames: ['status', 'engine', 'compile', 'group', 'passes'],
|
|
})
|
|
|
|
const e2eCompileDurationSeconds = new prom.Histogram({
|
|
name: 'clsi_e2e_compile_duration_seconds',
|
|
help: 'Duration of the entire compile request in clsi (sync, latexmk, output)',
|
|
buckets: COMPILE_TIME_BUCKETS,
|
|
labelNames: ['compile', 'group', 'compileFromHistory'],
|
|
})
|
|
|
|
const e2eCompileDurationClsiPerfSeconds = new prom.Gauge({
|
|
name: 'clsi_e2e_compile_duration_clsi_perf_seconds',
|
|
help: 'Duration of the entire compile request in clsi (sync, latexmk, output) for clsi-perf',
|
|
labelNames: ['compile', 'variant'],
|
|
})
|
|
|
|
const syncResourcesDurationSeconds = new prom.Histogram({
|
|
name: 'clsi_sync_resources_duration_seconds',
|
|
help: 'Time it takes to prepare files for a compile',
|
|
buckets: [0.1, 0.25, 0.5, 0.75, 1, 2, 3, 5, 10, 15, 30, 45, 60],
|
|
labelNames: ['type', 'compile', 'group'],
|
|
})
|
|
|
|
const processOutputFilesDurationSeconds = new prom.Histogram({
|
|
name: 'clsi_process_output_files_duration_seconds',
|
|
help: 'Time it takes to process output files of a compile',
|
|
buckets: [0.1, 0.25, 0.5, 0.75, 1, 2, 3, 5, 7.5, 10],
|
|
labelNames: ['compile', 'group'],
|
|
})
|
|
|
|
const latexmkRuleDurationSeconds = new prom.Histogram({
|
|
name: 'clsi_latexmk_rule_duration_seconds',
|
|
help: 'Duration of a latexmk rule execution',
|
|
buckets: COMPILE_TIME_BUCKETS,
|
|
labelNames: ['group', 'rule'],
|
|
})
|
|
|
|
const imageProcessingDurationSeconds = new prom.Histogram({
|
|
name: 'clsi_image_processing_duration_seconds',
|
|
help: 'Time spent processing images',
|
|
buckets: COMPILE_TIME_BUCKETS,
|
|
labelNames: ['group', 'type'],
|
|
})
|
|
|
|
const snapshotApplyAllDurationSeconds = new prom.Histogram({
|
|
name: 'clsi_snapshot_applyAll_duration_seconds',
|
|
help: 'Time spent applying snapshot changes',
|
|
buckets: [0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1, 2, 5, 10],
|
|
labelNames: ['group', 'source'],
|
|
})
|
|
|
|
const snapshotLoadEagerDurationSeconds = new prom.Histogram({
|
|
name: 'clsi_snapshot_load_eager_duration_seconds',
|
|
help: 'Time spent loading string blobs for snapshot',
|
|
buckets: [0.01, 0.1, 0.2, 0.5, 1, 2, 5, 10, 20, 50],
|
|
labelNames: ['group', 'source'],
|
|
})
|
|
|
|
function shouldSkipMetrics(request) {
|
|
return ['clsi-perf', 'health-check', 'clsi-cache-template'].includes(
|
|
request.metricsOpts.path
|
|
)
|
|
}
|
|
|
|
export default {
|
|
compilesTotal,
|
|
compileDurationSeconds,
|
|
e2eCompileDurationSeconds,
|
|
e2eCompileDurationClsiPerfSeconds,
|
|
syncResourcesDurationSeconds,
|
|
processOutputFilesDurationSeconds,
|
|
latexmkRuleDurationSeconds,
|
|
imageProcessingDurationSeconds,
|
|
snapshotApplyAllDurationSeconds,
|
|
snapshotLoadEagerDurationSeconds,
|
|
shouldSkipMetrics,
|
|
}
|