Metrics.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. const { prom } = require('@overleaf/metrics')
  2. const COMPILE_TIME_BUCKETS = [
  3. 0.5, 1, 1.5, 2, 3, 4, 5, 6, 8, 10, 15, 20, 25, 30, 45, 60, 75, 90, 120, 150,
  4. 180, 210, 240,
  5. ]
  6. const compilesTotal = new prom.Counter({
  7. name: 'clsi_compiles_total',
  8. help: 'Number of compiles',
  9. labelNames: [
  10. 'status',
  11. 'engine',
  12. 'compile',
  13. 'group',
  14. 'image',
  15. 'draft',
  16. 'stop_on_first_error',
  17. ],
  18. })
  19. const compileDurationSeconds = new prom.Histogram({
  20. name: 'clsi_compile_duration_seconds',
  21. help: 'Duration of the latexmkrc invocation',
  22. buckets: COMPILE_TIME_BUCKETS,
  23. labelNames: ['status', 'engine', 'compile', 'group'],
  24. })
  25. const e2eCompileDurationSeconds = new prom.Histogram({
  26. name: 'clsi_e2e_compile_duration_seconds',
  27. help: 'Duration of the entire compile request in clsi (sync, latexmk, output)',
  28. buckets: COMPILE_TIME_BUCKETS,
  29. })
  30. const syncResourcesDurationSeconds = new prom.Histogram({
  31. name: 'clsi_sync_resources_duration_seconds',
  32. help: 'Time it takes to prepare files for a compile',
  33. buckets: [0.1, 0.25, 0.5, 0.75, 1, 2, 3, 5, 10, 15, 30, 45, 60],
  34. labelNames: ['type', 'compile', 'group'],
  35. })
  36. const processOutputFilesDurationSeconds = new prom.Histogram({
  37. name: 'clsi_process_output_files_duration_seconds',
  38. help: 'Time it takes to process output files of a compile',
  39. buckets: [0.1, 0.25, 0.5, 0.75, 1, 2, 3, 5, 7.5, 10],
  40. labelNames: ['compile', 'group'],
  41. })
  42. const latexmkRuleDurationSeconds = new prom.Histogram({
  43. name: 'clsi_latexmk_rule_duration_seconds',
  44. help: 'Duration of a latexmk rule execution',
  45. buckets: COMPILE_TIME_BUCKETS,
  46. labelNames: ['group', 'rule'],
  47. })
  48. module.exports = {
  49. compilesTotal,
  50. compileDurationSeconds,
  51. e2eCompileDurationSeconds,
  52. syncResourcesDurationSeconds,
  53. processOutputFilesDurationSeconds,
  54. latexmkRuleDurationSeconds,
  55. }