Files
overleaf-cep/services/web/app/src/Features/Subscription/RecurlyMetrics.js
T
Kristina 9aa22ad54a Merge pull request #26198 from overleaf/jpa-recurly-metrics
[web] add metrics for recurly API usage

GitOrigin-RevId: 89840829f86ce1ff750d57f3445f279f4b151d6f
2025-06-09 08:05:24 +00:00

39 lines
1.1 KiB
JavaScript

const Metrics = require('@overleaf/metrics')
/**
* @param {number} status
* @param {number} rateLimit
* @param {number} rateLimitRemaining
* @param {number} rateLimitReset
*/
function recordMetrics(status, rateLimit, rateLimitRemaining, rateLimitReset) {
Metrics.inc('recurly_request', 1, { status })
const metrics = { rateLimit, rateLimitRemaining, rateLimitReset }
for (const [method, v] of Object.entries(metrics)) {
if (Number.isNaN(v)) continue
Metrics.gauge('recurly_request_rate_limiting', v, 1, { method })
}
}
/**
* @param {Response} response
*/
function recordMetricsFromResponse(response) {
const rateLimit = parseInt(
response.headers.get('X-RateLimit-Limit') || '',
10
)
const rateLimitRemaining = parseInt(
response.headers.get('X-RateLimit-Remaining') || '',
10
)
const rateLimitReset =
parseInt(response.headers.get('X-RateLimit-Reset') || '', 10) * 1000
recordMetrics(response.status, rateLimit, rateLimitRemaining, rateLimitReset)
}
module.exports = {
recordMetrics,
recordMetricsFromResponse,
}