mirror of
https://github.com/yu-i-i/overleaf-cep.git
synced 2026-06-02 21:59:00 +02:00
9aa22ad54a
[web] add metrics for recurly API usage GitOrigin-RevId: 89840829f86ce1ff750d57f3445f279f4b151d6f
39 lines
1.1 KiB
JavaScript
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,
|
|
}
|