import { BaseResource } from '@gitbeaker/requester-utils'; import { RequestHelper } from '../infrastructure'; import type { GitlabAPIResponse } from '../infrastructure'; export interface ProcessMetricSchema { hostname: string; pid: number; tag: string; started_at: string; queues?: string[]; labels?: string[]; concurrency: number; busy: number; } export interface SidekickProcessMetricsSchema extends Record { processes?: ProcessMetricSchema[]; } export interface SidekickQueueMetricsSchema extends Record { queues: { default: { backlog: number; latency: number; }; }; } export interface SidekickJobStatsSchema extends Record { jobs: { processed: number; failed: number; enqueued: number; dead: number; }; } export type SidekickCompoundMetricsSchema = SidekickJobStatsSchema & SidekickQueueMetricsSchema & SidekickProcessMetricsSchema; export class SidekiqMetrics extends BaseResource { queueMetrics(): Promise< GitlabAPIResponse > { return RequestHelper.get()(this, 'sidekiq/queue_metrics'); } processMetrics(): Promise< GitlabAPIResponse > { return RequestHelper.get()(this, 'sidekiq/process_metrics'); } jobStats(): Promise< GitlabAPIResponse > { return RequestHelper.get()(this, 'sidekiq/job_stats'); } compoundMetrics(): Promise< GitlabAPIResponse > { return RequestHelper.get()(this, 'sidekiq/compound_metrics'); } }