시스템 작업
n8n v2.42요약
시스템 작업은 n8n이 스스로 실행하는 반복 유지 관리 작업입니다. 이 페이지에서는 시스템 작업이 실행되는 방식과 시스템 작업이 노출하는 Prometheus 메트릭을 설명합니다. 이 섹션의 상세 내용은 n8n 공식 문서를 참조하세요.
시스템 작업은 n8n이 스스로 실행하는 반복 유지 관리 작업입니다. 오래된 실행 데이터 정리, 인사이트 데이터 압축, 오래된 레코드 정리, 라이선스 갱신 등이 해당합니다. 시스템 작업은 워크플로가 아니며 프로젝트에 속하지 않고 에디터 어디에도 표시되지 않습니다. 이러한 작업이 중단되어도 오류가 발생하지 않습니다. 데이터베이스가 계속 커지거나 인사이트 데이터가 갱신되지 않을 뿐입니다.
이 페이지에서는 시스템 작업이 실행되는 방식과 시스템 작업이 노출하는 Prometheus 메트릭을 설명합니다. 이를 통해 작업이 계속 실행되는지, 얼마나 잘 실행되는지 확인할 수 있습니다.
이 섹션의 상세 내용은 n8n 공식 문서를 참조하세요.
시스템 작업 실행 방식#
각 시스템 작업은 고정 간격 또는 cron 스케줄로 자체 실행 주기를 선언하며, 두 가지 모드 중 하나로 실행됩니다. 아래 실행 및 스케줄 시리즈의 mode 레이블로 작업이 어느 모드를 사용하는지 알 수 있습니다.
- 인메모리 모드(
in_memory): 작업이 리더 메인 인스턴스 프로세스의 타이머로 실행됩니다. 기본 모드입니다. 이 타이머는 리더만 실행하며, 인스턴스가 리더 역할에서 물러나면 중지되고 역할을 넘겨받은 인스턴스에서 다시 시작됩니다. 인스턴스가 중단된 동안 실행 시각이 지나간 실행은 수행되지 않습니다. 프로세스는 실행 중이지만 일시 정지된 경우(예: 일시 중단된 컨테이너) 타이머는 건너뛴 실행을 하나씩 재현하지 않고 건너뛴 모든 실행 시점에 대해 한 번만 동작합니다. - durable 모드(
durable): 작업이 durable scheduler의 데이터베이스 기반 큐에서 실행되므로 어떤 메인 인스턴스든 실행을 가져갈 수 있으며 재시작해도 실행이 누락되지 않습니다. 이 모드를 사용하려면N8N_SCHEDULER_ENABLED와N8N_SCHEDULER_SYSTEM_TASKS_ENABLED를 모두true로 설정하고, 구성의 모든 인스턴스에 같은 값을 지정하세요. durable 모드를 지원하는 작업만 이 모드로 전환되며 나머지는 인메모리 타이머로 유지됩니다. n8n 2.41.0 기준으로 durable 모드를 지원하는 시스템 작업은 없으므로 모든 작업이 인메모리 타이머로 실행됩니다.
durable 시스템 작업은 스케줄러 작업이기도 하므로 durable scheduler 메트릭이 system:<task-name> 형식의 task_type 레이블(예: system:insights-compaction)로 해당 작업을 다룹니다. 이 페이지의 시스템 작업 메트릭은 두 모드를 같은 이름으로 모두 다루는데, 스케줄러 메트릭은 인메모리 실행을 전혀 확인하지 못하므로 이렇게 할 수 없습니다.
관측 가능성#
기능 제공 여부
시스템 작업 메트릭은 n8n 2.41.0부터 사용할 수 있습니다.
두 개의 환경 변수로 메트릭을 켭니다.
export N8N_METRICS=true
export N8N_METRICS_INCLUDE_SYSTEM_TASK_METRICS=true
두 모드 모두 메인 인스턴스만 메트릭을 내보냅니다. 엔드포인트 자체를 설정하려면 Prometheus 메트릭 활성화를 참조하세요. 메트릭을 차트로 만들려면 Grafana로 메트릭 시각화를 참조하세요. n8n은 각 패널별 권장 조치가 포함된 시스템 작업 대시보드를 제공합니다.
아래 모든 이름은 기본 n8n_ 메트릭 접두사를 기준으로 합니다. N8N_METRICS_PREFIX를 설정했다면 해당 접두사로 바꿔서 읽으세요.
레이블#
모든 시리즈에는 소수의 고정 레이블이 붙습니다.
| 레이블 | 값 | 의미 |
|---|---|---|
task |
작업 이름(예: execution-pruning-soft-delete, insights-compaction, license-renewal) |
시리즈가 설명하는 시스템 작업입니다. 어떤 작업이 존재하는지는 버전, 라이선스, 설정에 따라 다르므로 목록을 직접 코드에 넣지 말고 n8n_system_task_info에서 읽으세요. |
mode |
in_memory, durable |
작업이 실행되는 위치입니다. 시스템 작업 실행 방식을 참조하세요. |
result |
success, failure, aborted |
실행이 끝난 방식입니다. aborted는 인스턴스가 리더 역할에서 물러나거나 종료될 때 실행이 아직 진행 중이어서 작업을 끝내지 못하고 중지되었음을 뜻합니다. |
reason |
overlap, provisioned_elsewhere, aborted, coalesced |
실행 시점이 실행되지 않은 이유입니다. 인메모리 스케줄링을 참조하세요. |
인스턴스 레이블은 없습니다. Prometheus가 스크레이프 대상마다 instance와 job을 추가하므로, 작업을 설명하는 게이지는 max by (task)로, 카운터·히스토그램·진행 중 게이지는 sum by (task)로 집계하세요.
실행 상태#
이 세 시리즈는 두 모드 모두에서 실행 자체를 다룹니다.
| 메트릭 | 유형 | 알 수 있는 내용 |
|---|---|---|
n8n_system_task_run_duration_seconds |
Histogram | task, mode, result별로 각 실행에 걸리는 시간입니다. _count 시리즈가 실행 횟수이자 실패 횟수 역할을 하므로 별도 카운터가 필요하지 않습니다. 실행 시간이 작업의 실행 주기에 가까워지면 n8n이 겹침 때문에 다음 실행을 건너뛰기 직전이라는 뜻입니다. |
n8n_system_task_last_success_timestamp_seconds |
Gauge | 이 인스턴스에서 작업이 마지막으로 성공한 실행의 Unix 타임스탬프입니다. 한 번도 실행되지 않은 작업까지 알려 주므로(카운터에 대한 rate로는 알 수 없습니다) "이 작업이 멈췄는가"를 가장 명확하게 보여 주는 신호입니다. |
n8n_system_task_runs_in_flight |
Gauge | 이 인스턴스에서 현재 진행 중인 작업 실행 수이며, 정상적인 경우 0 또는 1입니다. 값이 1에 머물러 있으면 실행이 멈춘 것이며, 이 경우 인스턴스가 리더 역할에서 물러나거나 종료되는 것도 막습니다. |
스케줄 상태#
이 시리즈는 실행이 아니라 스케줄을 설명하므로 첫 실행이 일어나기 전에도 존재합니다.
| 메트릭 | 유형 | 알 수 있는 내용 |
|---|---|---|
n8n_system_task_info |
Gauge | 항상 1이며, 이 인스턴스가 실행할 수 있는 작업마다 mode와 함께 시리즈가 하나씩 있습니다. 시스템 작업 목록 역할을 하므로 이 시리즈와 조인하면 실행이 보고되지 않는 작업을 찾을 수 있습니다. |
n8n_system_task_interval_seconds |
Gauge | 고정 간격 작업에 대해 선언된 실행 주기입니다. 이를 통해 직접 관리해야 하는 임곗값 목록 대신 쿼리로 "지연"을 판단할 수 있습니다. cron 스케줄 작업은 이 값을 보고하지 않습니다. |
n8n_system_task_next_run_timestamp_seconds |
Gauge | 작업이 대기 중인 다음 실행 시점의 Unix 타임스탬프입니다. 인메모리 작업에만 해당하지만, 실행 주기와 달리 cron 스케줄 작업도 포함합니다. 타이머가 다음 실행을 설정할 때마다 앞으로 이동하므로, 타임스탬프가 과거에 머물러 있으면 타이머가 계획을 멈췄다는 뜻입니다. |
n8n_system_task_scheduled |
Gauge | n8n이 작업을 스케줄한 동안은 1이고, n8n이 인메모리 실행 주기를 계획하지 못했거나 durable 작업을 프로비저닝하지 못해 작업이 스케줄을 영구히 잃으면 0이 됩니다. 여기서 0은 작업이 늦게 실행되는 것이 아니라 완전히 중지되었다는 뜻이며, 다시 스케줄되려면 인스턴스 재시작이나(인메모리 작업의 경우) 리더 변경이 필요합니다. 이 값에 대해 알림을 설정하세요. |
n8n_system_task_provision_check_failures_total |
Counter | n8n이 작업의 durable 작업 존재 여부를 확인하지 못해 작업을 인메모리로 실행한 횟수입니다. 이 값이 증가하면 데이터베이스에 문제가 있다는 뜻이며, 두 경로가 모두 활성인 동안 같은 작업이 두 번 실행될 위험이 약간 있습니다. |
durable 작업의 시리즈는 n8n이 시작 시 작업을 라우팅하는 즉시 나타나므로, 재시작은 공백이 아니라 초기화로 보입니다. 인메모리 작업의 info, scheduled, runs_in_flight, last_success, next_run_timestamp_seconds 시리즈는 이 인스턴스가 리더인 동안에만 존재하며, 인스턴스가 리더 역할에서 물러나면 n8n이 이를 제거합니다. 이전 리더가 더 이상 수행하지 않는 실행에 대해 고정된 값을 계속 내보내지 않도록 하기 위해서입니다. 실행 주기는 누가 리더인지와 무관하므로 interval_seconds만 유지됩니다.
인메모리 스케줄링#
이 시리즈는 인메모리 실행만 다룹니다. durable 경로에는 durable scheduler 메트릭에 대응하는 항목이 있습니다. 재시도는 n8n_scheduler_task_retries_total, 지연은 n8n_scheduler_dispatch_lag_seconds입니다.
| 메트릭 | 유형 | 알 수 있는 내용 |
|---|---|---|
n8n_system_task_runs_skipped_total |
Counter | reason별로 실행되지 않은 실행 시점의 수입니다. overlap은 이전 실행이 아직 진행 중이었다는 뜻입니다. provisioned_elsewhere는 작업에 durable 작업이 있어 인메모리 타이머가 물러났다는 뜻입니다. aborted는 인스턴스가 이미 리더 역할에서 물러나기 시작한 뒤에 실행 시점이 도래했다는 뜻입니다. coalesced는 프로세스가 여러 실행 시점을 건너뛰어 타이머가 전체에 대해 한 번만 동작했다는 뜻이며, 이 경우 카운터는 해당 동작이 대신한 실행 시점의 수만큼 증가합니다. |
n8n_system_task_retries_total |
Counter | 실행 실패 후 n8n이 스케줄한 재시도 횟수입니다. 재시도 지연을 선언한 작업만 재시도하므로, 실패하는 작업의 이 값이 변하지 않는다고 해서 버그는 아닙니다. |
n8n_system_task_fire_lag_seconds |
Histogram | 각 타이머가 얼마나 늦게 동작하는지를 초 단위로 나타냅니다. 값이 작으면 이벤트 루프가 바쁜 것입니다. 값이 크면 프로세스가 멈췄거나 잠들었다는 뜻이며, 병합된(coalesced) 동작은 최소 한 주기 전체만큼 늦으므로 버킷 범위는 하루까지 이릅니다. |