더 읽어보기:
원본 URL: https://docs.bullmq.io/guide/metrics
메트릭
섹션 제목: “메트릭”BullMQ는 큐 성능을 추적할 수 있도록 간단한 메트릭 수집 기능을 제공합니다. 워커는 분당 처리한 작업 수를 집계하고, 이 데이터를 나중에 조회할 수 있도록 Redis 내부의 리스트에 저장할 수 있습니다.
워커 설정에서 유지할 데이터 포인트 수를 지정해 이 기능을 활성화할 수 있습니다. 이 데이터 포인트는 기본적으로 1분 간격 동안 완료되거나 실패한 작업 수를 세는 카운터입니다.
메트릭은 1분 간격으로 집계되므로, 권장 보관 기간인 2주 분량의 데이터를 사용해도 전체 사용 공간은 매우 작으며 큐당 RAM 약 120Kb 정도만 필요합니다. 메트릭은 오래된 데이터 포인트를 자동으로 폐기하므로, 최대 데이터 포인트 수에 도달한 이후에는 RAM 사용량이 더 이상 증가하지 않습니다.
다음 예시에서 워커에 메트릭을 활성화하는 방법을 확인해 보세요:
import { Worker, MetricsTime } from 'bullmq';
const myWorker = new Worker('Paint', { connection, metrics: { maxDataPoints: MetricsTime.ONE_WEEK * 2, },});{% hint style=“warning” %} 일관된 메트릭을 얻으려면 모든 워커에서 동일한 설정을 사용해야 합니다. {% endhint %}
메트릭을 조회하려면 Queue 클래스의 getMetrics 메서드를 사용하세요. completed 또는 failed 작업에 대한 메트릭을 선택해서 가져올 수 있습니다:
import { Queue } from 'bullmq';const myQueue = new Queue('Paint', { connection,});
const metrics = await queue.getMetrics('completed', 0, MetricsTime.ONE_WEEK * 2);
/* Returns a Metrics object:{ data: number[]; count: number; meta: { count: number; prevTS: number; prevCount: number; }; }*/반환되는 데이터를 살펴보겠습니다. 먼저 meta 필드가 있습니다. prevTS와 prevCount 하위 필드는 메트릭 시스템 내부적으로 사용되므로 사용하지 않아야 합니다. 하지만 count 하위 필드는 완료 또는 실패한 전체 작업 수를 확인하는 데 사용할 수 있습니다. 이 카운터는 주어진 구간에서 완료된 작업 수만 의미하는 것이 아니라, 큐가 작업 처리를 시작한 시점부터의 누적 값입니다.
쿼리는 data 필드도 반환하며, 이는 배열입니다. 배열의 각 위치는 1분을 나타내고, 해당 1분 동안 완료(또는 실패)된 작업의 총 개수를 담고 있습니다.
getMetrics 메서드는 start와 end 인자도 받습니다(기본값은 각각 0, -1). 페이지네이션을 구현하려면 이를 활용할 수 있습니다.