mirror of
https://github.com/luxfi/explore.git
synced 2026-09-24 00:28:18 +00:00
* add schema validation to solidity scan report resource * report invalid API schema event to prometheus
40 lines
1.2 KiB
TypeScript
40 lines
1.2 KiB
TypeScript
import * as promClient from 'prom-client';
|
|
|
|
const metrics = (() => {
|
|
// eslint-disable-next-line no-restricted-properties
|
|
if (process.env.PROMETHEUS_METRICS_ENABLED !== 'true') {
|
|
return;
|
|
}
|
|
|
|
promClient.register.clear();
|
|
|
|
const invalidApiSchema = new promClient.Counter({
|
|
name: 'invalid_api_schema',
|
|
help: 'Number of invalid external API schema events',
|
|
labelNames: [ 'resource', 'url' ] as const,
|
|
});
|
|
|
|
const socialPreviewBotRequests = new promClient.Counter({
|
|
name: 'social_preview_bot_requests_total',
|
|
help: 'Number of incoming requests from social preview bots',
|
|
labelNames: [ 'route', 'bot' ] as const,
|
|
});
|
|
|
|
const searchEngineBotRequests = new promClient.Counter({
|
|
name: 'search_engine_bot_requests_total',
|
|
help: 'Number of incoming requests from search engine bots',
|
|
labelNames: [ 'route', 'bot' ] as const,
|
|
});
|
|
|
|
const apiRequestDuration = new promClient.Histogram({
|
|
name: 'api_request_duration_seconds',
|
|
help: 'Duration of requests to API in seconds',
|
|
labelNames: [ 'route', 'code' ],
|
|
buckets: [ 0.2, 0.5, 1, 3, 10 ],
|
|
});
|
|
|
|
return { invalidApiSchema, socialPreviewBotRequests, searchEngineBotRequests, apiRequestDuration };
|
|
})();
|
|
|
|
export default metrics;
|