콘텐츠로 건너뛰기
Telemetry
백그라운드 작업 SQL 레시피

SQL을 사용하여 중단된 백그라운드 작업 찾기

작업 시작 및 종료 이벤트에 참여하여 예상 완료 창을 초과한 작업을 식별합니다.

중급job_events검토됨 2026-07-27테스트됨 아파치 DataFusion 45.2.0

검토자 Telemetry 제품 팀 . SQL 호환성, 이벤트 계약, 합성 출력 및 운영상의 주의사항. 표준 및 소유권 검토

질문에 답변됨

어떤 작업이 시작되었지만 종료 이벤트를 생성하지 않았습니까?

실패 이벤트를 생성하지 않고 작업이 사라질 수 있습니다. 터미널 이벤트에 시작을 조인하면 아직 실행 중이거나 작업자 충돌 후 손실되거나 완료 계측이 누락된 작업이 표시됩니다.

이벤트 계약

쿼리가 예상하는 필드

필드유형그것이 존재하는 이유
timestamp_utcTimestamp이벤트가 발생한 시간입니다.
job_idUtf8하나의 작업에 대한 모든 이벤트에서 공유되는 식별자입니다.
job_nameUtf8안정적인 논리적 작업 이름입니다.
event_nameUtf8job_started, job_completed 또는 job_failed.
queue_nameUtf8작업을 소유하는 대기열입니다.
DataFusion SQL

쿼리 복사

sql
WITH started AS (
  SELECT
    job_id,
    job_name,
    queue_name,
    MIN(timestamp_utc) AS started_at
  FROM job_events
  WHERE event_name = 'job_started'
    AND timestamp_utc >= now() - INTERVAL '24 hours'
  GROUP BY job_id, job_name, queue_name
),
finished AS (
  SELECT
    job_id,
    MAX(timestamp_utc) AS finished_at
  FROM job_events
  WHERE event_name IN ('job_completed', 'job_failed')
    AND timestamp_utc >= now() - INTERVAL '24 hours'
  GROUP BY job_id
)
SELECT
  s.job_id,
  s.job_name,
  s.queue_name,
  s.started_at
FROM started s
LEFT JOIN finished f ON s.job_id = f.job_id
WHERE f.job_id IS NULL
  AND s.started_at < now() - INTERVAL '15 minutes'
ORDER BY s.started_at ASC;

이 읽기 전용 쿼리는 빈 유형의 테이블에 대해 계획되고 실행됩니다. 아파치 DataFusion 45.2.0. 결정론적 샘플 출력은 합성되어 별도로 검토됩니다. 자신의 데이터에 대해 필드 유형, 임계값 및 비즈니스 정의를 검증합니다. 테스트 방법론을 읽어보세요.

쿼리 결과

종료 이벤트가 없는 가장 오래된 작업

테이블은 운영자가 작업을 검사하거나 재생하는 데 필요한 식별자를 유지합니다.

job_idjob_namequeue_namestarted_at
job_7f31import_catalogimports2026-07-27 15:02:11Z
job_801csync_subscriptionbilling2026-07-27 15:19:43Z

합성 예제 출력. 운영 결정에 사용하기 전에 자체 이벤트 스키마 및 임계값에 대해 쿼리를 실행하세요.

Oldest jobs without a terminal event: Find Stalled Background Jobs With SQL 예제 결과의 합성 started_at 값에 대한 정적 차트
결정론적 예제 출력의 색인 생성 가능한 SVG입니다. 기사, 런북 또는 저작자가 포함된 디자인 검토를 위해 다운로드하세요.

예제 재현

공공 픽스처 다운로드

JSON 번들은 타입이 지정된 이벤트 계약을 포함합니다. illustrative 입력 행, 정확한 SQL, 예상 출력, 검토 참고 사항 및 엔진 버전. CSV에는 표시된 결과가 포함됩니다.

SQL 작동 방식

  1. 1첫 번째 CTE는 각 논리적 작업의 가장 빠른 시작을 유지합니다. 두 번째는 최신 터미널 이벤트를 유지합니다.
  2. 2LEFT JOIN은 일치하는 완료 또는 실패가 없는 경우에도 시작된 작업을 보존합니다.
  3. 315분 임계값은 작동 중단의 정의입니다. 맹목적으로 복사하는 것이 아니라 예상되는 작업 기간에서 설정하십시오.

결정해야 할 극단적인 경우

  • 장기 실행 작업에는 작업별 임계값이나 하트비트 이벤트가 필요합니다.
  • 늦은 이벤트는 일시적으로 오탐지를 생성할 수 있습니다. 수집이 지연될 수 있는 경우 최신 버킷을 지연합니다.
  • 재사용된 job_id는 관련되지 않은 실행에 참여하므로 ID는 논리적 실행마다 고유해야 합니다.

추천 대시보드

  • 통계: 현재 중단된 작업 수
  • 표: job_id 및 queue_name에서 가장 오래 중단된 작업
  • 꺾은선형 차트: 일별 중단된 작업 감지

알림 안내

중요한 작업이 예상 기간과 짧은 수집 유예 기간을 초과하면 알림합니다.

알림 설정 읽기

레시피를 활용해 보세요

관련 계측 및 가이드

분석 계속하기

실제 이벤트에서 실행

테이블을 만들고, 필드를 조정하고, 결과를 저장하세요.

무료로 시작하고, 구조화된 이벤트를 보내고, 쿼리 결과를 차트, 공유 대시보드 위젯 또는 알림 입력으로 사용하세요.

API 키 받기