Dataflow 모니터링 인터페이스 사용

Dataflow 관리형 서비스를 사용하여 파이프라인을 실행하면 Dataflow의 웹 기반 모니터링 사용자 인터페이스를 사용하여 해당 작업과 기타 작업을 볼 수 있습니다. 모니터링 인터페이스를 사용하면 Dataflow 작업을 확인하고 상호작용할 수 있습니다.

Google Cloud Console을 사용하여 Dataflow 모니터링 인터페이스에 액세스할 수 있습니다. 모니터링 인터페이스에 표시되는 내용은 다음과 같습니다.

  • 현재 실행 중이고 최근 30일 이내에 실행된 모든 Dataflow 작업 목록
  • 각 파이프라인의 그래픽 표현
  • 작업 상태, 유형, SDK 버전에 대한 세부정보
  • Compute EngineCloud Storage와 같이 파이프라인을 실행하는 Google Cloud 서비스 정보에 대한 링크
  • 작업 중 발생하는 모든 오류 또는 경고
  • 작업에 대한 추가 진단

Dataflow 모니터링 인터페이스에서 작업 모니터링 차트를 볼 수 있습니다. 이러한 차트에는 파이프라인 작업 기간 동안의 측정항목이 표시되며 다음 정보를 포함합니다.

  • 파이프라인 지연을 일으킬 수 있는 단계를 식별하는 데 도움이 되는 단계-수준 공개 상태
  • 비정상적인 동작을 나타낼 수 있는 통계 정보
  • 소스 및 싱크의 병목 현상을 식별하는 데 도움이 되는 I/O 측정항목

Dataflow 모니터링 인터페이스 액세스

Dataflow 모니터링 인터페이스에 액세스하려면 다음 단계를 따릅니다.

  1. 콘솔에 로그인합니다.
  2. Google Cloud 프로젝트를 선택합니다.
  3. 탐색 메뉴를 엽니다.
  4. 빅데이터에서 Dataflow를 클릭합니다.

Dataflow 작업 목록이 상태와 함께 표시됩니다. 작업이 표시되지 않으면 새 작업을 실행해야 합니다. 작업을 실행하는 방법은 Dataflow 빠른 시작을 참조하세요.

상태가 실행 중, 실패, 성공인 작업이 있는 Dataflow 작업 목록
그림 1: 실행 중, 실패, 성공 상태인 작업이 있는 콘솔의 Dataflow 작업 목록

작업 상태는 다음과 같습니다.

  • -: 모니터링 인터페이스가 아직 Dataflow 서비스에서 상태 정보를 받지 못했습니다.
  • 실행 중: 작업이 실행 중입니다.
  • 시작하는 중...: 작업이 생성되었지만 시작하기 전에 시스템 준비 시간이 필요합니다.
  • 대기 중: FlexRS 작업이 대기 중이거나 Flex 템플릿 작업이 실행됩니다(실행되는 데 몇 분이 걸릴 수 있음).
  • 취소 중...: 작업을 취소하는 중입니다.
  • 취소됨: 작업이 취소되었습니다.
  • 드레이닝 중: 작업이 드레이닝 중입니다.
  • 드레이닝됨: 작업이 드레이닝되었습니다.
  • 업데이트 중: 작업이 업데이트 중입니다.
  • 업데이트됨: 작업이 업데이트되었습니다.
  • 성공: 작업이 성공적으로 완료되었습니다.
  • 실패: 작업을 완료하지 못했습니다.

파이프라인에 대한 자세한 정보를 보려면 작업의 이름을 클릭하세요.

작업 모니터링 차트 액세스

작업의 모니터링 차트에 액세스하려면 Dataflow 모니터링 인터페이스에서 작업 이름을 클릭하세요. 다음 정보가 포함된 작업 세부정보 페이지가 표시됩니다.

  • 작업 그래프: 파이프라인의 시각적 표현
  • 실행 세부정보: 파이프라인 성능을 최적화하는 도구
  • 작업 측정항목: 작업 실행에 대한 측정항목
  • 작업 정보: 파이프라인에 대해 설명하는 정보
  • 작업 로그: Dataflow 서비스가 생성한 작업 수준 로그
  • 작업자 로그: Dataflow 서비스가 생성한 작업자 수준 로그
  • 진단: 선택한 타임라인에서 오류가 발생한 위치와 파이프라인에 대한 가능한 권장사항을 보여주는 표
  • 시간 선택기: 측정항목의 기간을 조정할 수 있는 도구

작업 세부정보 페이지에서 작업 뷰를 작업 그래프, 실행 세부정보, 작업 측정항목으로 전환할 수 있습니다.

Job graph(작업 그래프) 탭이 선택된 Dataflow 모니터링 인터페이스의 보기 이 모드에서는 파이프라인 그래프, 작업 정보, 작업 로그, 작업자 로그, 진단, 시간 선택기 도구를 볼 수 있습니다.

Job metrics(작업 측정항목) 탭이 선택된 Dataflow 모니터링 인터페이스의 보기
이 모드에서는 작업 측정항목 차트, 작업 정보, 작업 로그, 작업자 로그, 진단, 시간 선택기 도구를 볼 수 있습니다.

Cloud Monitoring 알림 만들기

Dataflow는 Cloud Monitoring과 완전하게 통합되어 있으므로 작업이 사용자 정의 임계값을 초과하면 받을 알림을 만들 수 있습니다. 측정항목 차트에서 Cloud Monitoring 알림을 만들려면 알림 정책 만들기를 클릭합니다.

**알림 정책 만들기** 링크를 사용하여 측정항목 차트에서 알림을 만들 수 있습니다.

이러한 알림을 만드는 방법은 Dataflow 파이프라인용 Cloud Monitoring 사용 페이지를 참조하세요. 모니터링 그래프를 보거나 알림을 만들 수 없는 경우 추가 모니터링 권한이 필요할 수 있습니다.

전체 화면 모드

측정항목 차트를 전체 화면으로 보려면 을 클릭하세요.

시간 선택 도구 사용하기

시간 선택 도구를 사용하여 측정항목의 기간을 조정할 수 있습니다. 사전 정의된 기간을 선택하거나 커스텀 시간 간격을 선택하여 작업을 분석할 수 있습니다.

시간 선택 도구를 사용하면 시간 및 요일 증분 또는 맞춤 범위를 사용하여 시간 범위를 선택할 수 있습니다.

스트리밍 또는 진행 중인 일괄 작업은 기본 차트 디스플레이에 이전 6시간의 작업 측정항목이 표시됩니다. 중지되거나 완료된 스트리밍 작업은 기본 차트 디스플레이에 작업 기간의 전체 런타임이 표시됩니다.

단계 및 작업자 측정항목

Dataflow UI의 Job metrics 탭에서 차트를 볼 수 있습니다. 각 측정항목은 다음 대시보드로 구성됩니다.

개요 측정항목

스트리밍 측정항목(스트리밍 파이프라인만 해당)

리소스 측정항목

입력 측정항목

출력 측정항목

이러한 차트의 추가 정보에 액세스하려면 범례 토글을 클릭하여 '차트 범례 펼치기'로 이동합니다.

범례 토글 버튼은 알림 정책 만들기 버튼 근처에 있습니다.

이러한 차트 중 일부는 스트리밍 파이프라인에만 지정됩니다. 이러한 측정항목이 디버깅에 유용할 수 있는 시나리오 목록은 스트리밍 Dataflow 모니터링 측정항목 사용 섹션을 참조하세요.

자동 확장

Dataflow 서비스는 자동 확장 작업을 실행하는 데 필요한 작업자 인스턴스 수를 자동으로 선택합니다. 작업자 인스턴스 수는 시간이 경과하면서 작업 요구사항에 따라 변경될 수 있습니다.

파이프라인의 작업자 수를 보여주는 데이터 시각화

자동 확장 변경 기록을 확인하려면 기록 더보기 버튼을 클릭합니다. 파이프라인의 작업자 기록에 대한 정보가 있는 테이블이 표시됩니다.

파이프라인의 작업자 기록을 보여주는 표

처리량

처리량은 특정 시점에서 처리되는 데이터의 양입니다. 이 단계별 측정항목은 초당 요소 수로 표시됩니다. 이 측정항목을 초당 바이트 수로 보려면 처리량(바이트/초) 차트까지 아래로 스크롤합니다.

파이프라인에서 네 단계의 처리량을 보여주는 데이터 시각화

작업자 오류 로그 수

작업자 오류 로그 수에 특정 시점의 모든 작업자에서 관찰된 오류 비율이 표시됩니다.

로깅된 각 오류 및 오류 발생 횟수에 대한 요약

데이터 최신 상태(Streaming Engine 유무에 관계없음)

데이터 최신 상태 측정항목은 데이터 요소의 타임스탬프와 파이프라인에서 이벤트가 처리되는 시간 간의 차이(초)를 보여줍니다. 데이터 요소는 요소에서 이벤트가 발생할 때(예: 웹사이트 클릭 또는 Pub/Sub 수집) 타임스탬프를 수신합니다. 데이터가 처리되는 시간은 출력 워터마크입니다.

Dataflow 작업은 언제든지 여러 요소를 처리합니다. 데이터 최신 상태 차트의 데이터 포인트는 이벤트 시간을 기준으로 지연 시간이 가장 긴 요소를 보여줍니다. 따라서 차트의 동일한 행은 여러 요소의 데이터를 표시하며, 행의 각 데이터 포인트는 파이프라인의 해당 단계에서 가장 느린 요소의 데이터를 표시합니다.

입력 데이터가 완전히 처리되지 않으면 출력 워터마크가 지연되어 데이터 최신 상태에 영향을 줄 수 있습니다. 워터마크 시간과 이벤트 시간의 큰 차이는 작업 속도가 느리다는 것을 나타냅니다.

자세한 내용은 Apache Beam 문서의 워터마크 및 지연 데이터를 참조하세요.

대시보드에는 다음 두 가지 차트가 있습니다.

  • 단계별 데이터 최신 상태
  • 데이터 최신 상태

스트리밍 파이프라인의 데이터 최신 상태를 보여주는 데이터 시각화

앞의 이미지에서 강조표시된 영역은 이벤트 시간과 출력 워터마크 시간 간의 상당한 차이를 표시하여 느린 작업을 나타냅니다.

시스템 지연 시간(Streaming Engine 유무에 관계없음)

시스템 지연 시간은 데이터 항목이 처리 중이거나 처리 대기 중인 현재 최대 시간(초)입니다. 이 측정항목은 특정 요소가 파이프라인의 한 소스 내에서 대기하는 시간을 나타냅니다. 최대 기간은 처리 후 조정됩니다. 다음은 추가로 고려해야 할 사항입니다.

  • 소스와 싱크가 여러 개 있는 경우 시스템 지연 시간은 특정 요소가 모든 싱크에 기록되기 전 소스 내에서 대기하는 최대 시간입니다.
  • 소스 내에서 요소가 대기하는 시간 동안 소스에서 값을 제공하지 않는 경우도 있습니다. 또한 요소에는 이벤트 시간을 정의하는 메타데이터가 없을 수 있습니다. 이 시나리오에서 시스템 지연 시간은 파이프라인이 요소를 처음 받은 시간부터 계산됩니다.

대시보드에는 다음 두 가지 차트가 있습니다.

  • 단계별 시스템 지연 시간
  • 시스템 지연 시간

스트리밍 파이프라인의 시스템 지연 시간을 보여주는 데이터 시각화

백로그

백로그 대시보드는 처리 대기 중인 요소에 대한 정보를 제공합니다. 대시보드에는 다음 두 가지 차트가 있습니다.

  • 백로그(초)(Streaming Engine만 해당)
  • 백로그 바이트(Streaming Engine 유무에 관계없음)

백로그(초) 차트에서는 새 데이터가 도착하지 않고 처리량이 변경되지 않은 경우 현재 백로그를 사용하는 데 필요한 예상 시간(초)을 보여줍니다. 예상 백로그 시간은 아직 처리해야 하는 입력 소스의 처리량과 백로그 바이트를 통해 계산됩니다. 이 측정항목은 스트리밍 자동 확장 기능에서 확장 또는 축소 시기를 결정하는 데 사용됩니다.

스트리밍 파이프라인의 백로그(초) 차트를 보여주는 데이터 시각화

백로그 바이트 차트에는 스테이지에서 알려진 처리되지 않은 입력 양(바이트 단위)이 표시됩니다. 이 측정항목은 각 단계에서 소비할 잔여 바이트와 업스트림 단계를 비교합니다. 이 측정항목을 정확하게 보고하려면 파이프라인에서 수집된 각 소스를 올바르게 구성해야 합니다. Pub/Sub 및 BigQuery와 같은 네이티브 소스는 이미 즉시 지원되지만 커스텀 소스에는 추가 구현이 필요합니다. 자세한 내용은 제한 없는 커스텀 소스 자동 확장을 참조하세요.

스트리밍 파이프라인의 백로그 바이트 차트를 보여주는 데이터 시각화

처리(Streaming Engine만 해당)

처리 대시보드는 활성 사용자 작업에 대한 정보를 제공합니다. 대시보드에는 다음 두 가지 차트가 있습니다.

  • 사용자 처리 지연 시간 히트맵
  • 단계별 사용자 처리 지연 시간

사용자 처리 지연 시간 히트맵에서는 50번째, 95번째, 99번째 백분위수 분포에서의 최대 사용자 작업 지연 시간을 보여줍니다. 히트맵을 사용하여 롱테일 작업이 긴 시스템 지연 시간을 유발하거나 전반적인 데이터 최신 상태에 부정적인 영향을 미치는지 확인할 수 있습니다.

99번째 백분위수에서 높은 지연 시간이 발생하면 일반적으로 50번째 백분위수에서 높은 지연 시간이 발생할 때보다 작업에 미치는 영향이 적습니다. 다운스트림 문제가 되기 전에 업스트림 문제를 해결하려면 50번째 백분위수의 높은 지연 시간에 대한 알림 정책을 설정합니다.

스트리밍 파이프라인의 사용자 처리 지연 시간 히트맵 차트를 보여주는 데이터 시각화

단계별 사용자 처리 지연 시간 차트는 모든 활성 사용자 작업의 99번째 백분위수를 단계별로 나누어 보여줍니다. 사용자 코드가 병목 현상을 일으키는 경우 이 차트에 병목 현상이 포함된 단계가 표시됩니다. 파이프라인을 디버깅하려면 다음 단계를 따르세요.

  1. 차트를 사용하여 지연 시간이 비정상적으로 높은 단계를 찾습니다.

  2. 작업 세부정보 페이지의 실행 세부정보 탭에 있는 그래프 뷰단계 워크플로를 선택합니다. 단계 워크플로 그래프에서 지연 시간이 비정상적으로 높은 단계를 찾습니다.

  3. 연결된 사용자 작업을 찾으려면 그래프에서 해당 단계의 노드를 클릭합니다.

  4. 추가 세부정보를 찾으려면 Cloud Profiler로 이동한 후 Cloud Profiler를 사용하여 올바른 시간 범위의 스택 트레이스를 디버깅합니다. 이전 단계에서 확인한 사용자 작업을 찾습니다.

스트리밍 파이프라인의 단계별 사용자 처리 지연 시간 차트를 보여주는 데이터 시각화

동시 로드(Streaming Engine만 해당)

병렬 처리 차트에는 각 단계에서 데이터 처리에 사용되는 대략적인 키 수가 표시됩니다. Dataflow는 파이프라인 동시 로드에 따라 확장됩니다. Dataflow에서 파이프라인 병렬 로드는 지정된 시간에 데이터를 가장 효율적으로 처리하는 데 필요한 대략적인 스레드 수입니다. 지정된 키 처리는 직렬화되므로 단계의 총 키 수는 해당 단계에서 사용할 수 있는 최대 동시 로드를 나타냅니다. 동시 로드 측정항목은 느리거나 중단된 파이프라인의 핫 키나 병목 현상을 찾는 데 유용할 수 있습니다.

스트리밍 파이프라인의 동시 로드 처리 차트를 보여주는 데이터 시각화

지속성(Streaming Engine만 해당)

지속성 대시보드는 특정 파이프라인 단계에서 Persistent Disk 스토리지를 쓰고 읽은 속도(초당 바이트 단위)에 대한 정보를 제공합니다. 대시보드에는 다음 두 가지 차트가 있습니다.

  • 스토리지 쓰기
  • 스토리지 읽기

쓰기 및 읽기 작업 속도는 선택한 디스크의 최대 IOPS (초당 입출력 작업 수)로 제한됩니다. 현재 디스크가 병목 현상을 일으키는지 확인하려면 작업자가 사용 중인 디스크의 IOPS를 검토합니다. 영구 디스크의 성능 한도에 대한 자세한 내용은 성능 한도를 참조하세요.

스트리밍 파이프라인의 스토리지 쓰기 차트를 보여주는 데이터 시각화

중복(Streaming Engine만 해당)

중복 차트에는 중복으로 필터링된 특정 단계에서 처리 중인 메시지 수가 표시됩니다. Dataflow에서는 at least once 전송을 보장하는 다양한 소스와 싱크를 지원합니다. at least once 전송의 단점은 중복이 발생할 수 있다는 점입니다. Dataflow는 exactly once 전송을 보장하므로 중복이 자동으로 필터링됩니다. 다운스트림 단계는 동일한 요소 재처리로부터 저장되므로 상태와 출력이 영향을 받지 않습니다. 파이프라인은 각 단계에서 생성된 중복 수를 줄여 리소스와 성능을 최적화할 수 있습니다.

스트리밍 파이프라인의 중복 차트를 보여주는 데이터 시각화

타이머(Streaming Engine만 해당)

타이머 대시보드는 특정 파이프라인 단계에서 대기 중인 타이머 수와 이미 처리된 타이머 수에 대한 정보를 제공합니다. 창에서는 타이머를 사용하므로 이 측정항목을 통해 창의 진행 상태를 추적할 수 있습니다.

대시보드에는 다음 두 가지 차트가 있습니다.

  • 단계별 대기 중인 타이머
  • 단계별 처리 중인 타이머

이 차트는 특정 시점에서 창이 대기 중이거나 처리 중인 속도를 보여줍니다. 단계별 대기 중인 타이머 차트는 병목 현상으로 인해 지연된 창 수를 나타냅니다. 단계별 처리 중인 타이머 차트는 현재 요소를 수집하는 창 수를 나타냅니다.

이 차트에는 모든 작업 타이머가 표시되므로 코드에서 다른 곳에 타이머를 사용하면 이 타이머도 이 차트에 표시됩니다.

특정 단계에서 대기 중인 타이머 수를 보여주는 데이터 시각화

특정 단계에서 이미 처리된 타이머 수를 보여주는 데이터 시각화

CPU 사용률

CPU 사용량은 사용 중인 CPU의 양을 처리에 사용할 수 있는 CPU의 양으로 나눈 값입니다. 이 작업자당 측정항목은 백분율로 표시됩니다. 대시보드에는 다음 4가지 차트가 있습니다.

  • CPU 사용률(모든 작업자)
  • CPU 사용률(통계)
  • CPU 사용률(상위 4개)
  • CPU 사용률(하위 4개)

Dataflow 작업자 하나의 CPU 사용률을 보여주는 애니메이션 데이터 시각화입니다.

메모리 사용률

메모리 사용률은 작업자가 사용한 메모리 추정치(초당 바이트 단위)입니다. 대시보드에는 다음 두 가지 차트가 있습니다.

  • 최대 작업자 메모리 사용률(초당 바이트 추정치)
  • 메모리 사용률(초당 바이트 추정치)

최대 작업자 메모리 사용률 차트는 각 시점의 Dataflow 작업에서 가장 많은 메모리를 사용하는 작업자에 대한 정보를 제공합니다. 작업의 여러 지점에서 최대 메모리 양을 사용하는 작업자가 변경되는 경우 차트의 동일한 행에 여러 작업자의 데이터가 표시되며 행의 각 데이터 포인트에는 그 시점에 최대 메모리 양을 사용하는 작업자의 데이터가 표시됩니다. 차트는 작업자가 사용한 메모리의 추정치와 메모리 한도를 비교합니다(바이트 단위).

이 차트를 사용하여 메모리 부족(OOM) 문제를 해결할 수 있습니다. 작업자의 메모리 부족 비정상 종료는 이 차트에 표시되지 않습니다.

메모리 사용률 차트는 Dataflow 작업의 모든 작업자가 사용한 메모리의 추정치와 메모리 한도를 비교하여 보여줍니다(바이트 단위).

입력 및 출력 측정항목

스트리밍 Dataflow 작업이 Pub/Sub를 사용하여 레코드를 읽거나 쓰면 입력 측정항목 및 출력 측정항목이 표시됩니다.

동일한 유형의 모든 입력 측정항목이 결합되며 모든 출력 측정항목도 결합됩니다. 예를 들어 모든 Pub/Sub 측정항목이 한 섹션에서 그룹화됩니다. 각 측정항목 유형은 별도의 섹션으로 구성됩니다. 표시되는 측정항목을 변경하려면 왼쪽에서 원하는 측정항목을 가장 잘 나타내는 섹션을 선택합니다. 다음 이미지에서는 사용 가능한 모든 섹션을 보여줍니다.

Dataflow 작업에 대한 별도의 입력 섹션과 출력 섹션을 보여주는 예시 이미지

다음 2개 차트는 입력 측정항목출력 측정항목 섹션에 모두 표시됩니다.

Dataflow 작업에 대한 입력 및 출력 측정항목을 보여주는 일련의 차트입니다.

초당 요청

초당 요청은 시간에 따라 소스 또는 싱크에서 데이터 읽기 또는 쓰기를 수행하기 위한 API 요청 속도입니다. 이 속도가 0으로 저하되거나 연장 기간 동안 예상 동작에 비해 크게 감소하면 파이프라인이 특정 작업을 수행하지 못하도록 차단될 수 있습니다. 또한 읽을 데이터가 없을 수 있습니다. 이 경우 시스템 워터마크가 높은 작업 단계를 검토합니다. 또한 작업자 로그에서 처리 속도를 저하시키는 오류나 표시를 검사합니다.

시간에 따라 소스 또는 싱크에서 데이터 읽기 또는 쓰기를 수행하기 위한 API 요청 수를 보여주는 차트입니다.

오류 유형별 초당 응답 오류

오류 유형별 초당 응답 오류 수는 시간 경과에 따라 소스나 싱크에서 데이터 읽기나 쓰기에 실패한 API 요청의 속도입니다. 이러한 오류가 자주 발생하면 이러한 API 요청으로 인해 처리 속도가 느려질 수 있습니다. 실패한 API 요청을 조사해야 합니다. 이러한 문제를 해결하기 위해서는 일반 I/O 오류 코드 문서 및 소스 또는 싱크에서 사용되는 특정 오류 코드 문서(예: Pub/Sub 오류 코드)를 검토하세요.

시간에 따라 소스 또는 싱크에서 데이터 읽기 또는 쓰기를 수행하는 실패한 API 요청 속도를 보여주는 차트입니다.

측정항목 탐색기 사용

다음 Dataflow I/O 측정항목은 측정항목 탐색기에서 볼 수 있습니다.

Dataflow 측정항목의 전체 목록은 Google Cloud 측정항목 문서를 참조하세요.

Pub/Sub 측정항목에 예정된 변경사항(Streaming Engine만 해당)

Streaming Engine은 현재 동기식 가져오기를 사용하여 Pub/Sub의 데이터를 사용하지만 2022년 2월부터 성능 향상을 위해 스트리밍 가져오기로 마이그레이션합니다. 기존의 초당 요청 수초당 응답 오류 수 그래프와 측정항목은 동기식 가져오기에만 적합합니다. Google에서는 스트리밍 가져오기 연결 상태와 이러한 연결을 종료하는 오류에 대한 측정항목을 추가합니다.

사용자는 마이그레이션에 관여할 필요가 없습니다. 마이그레이션 중에 작업은 일정 시간 동안 동기식 가져오기를 사용하고 다른 기간에 스트리밍 가져오기를 사용할 수 있습니다. 따라서 동일한 작업에 일정 기간 동안 동기식 가져오기 측정항목과 다른 기간 동안 스트리밍 가져오기 측정항목이 표시될 수 있습니다. 마이그레이션이 완료되면 동기식 가져오기 측정항목이 UI에서 삭제됩니다.

마이그레이션은 Cloud Monitoring의 job/pubsub/read_countjob/pubsub/read_latencies 측정항목에도 영향을 줍니다. 작업에서 스트리밍 가져오기를 사용하는 동안에는 이러한 카운터가 증가되지 않습니다.

Streaming Engine을 사용하지 않는 스트리밍 작업은 Streaming Pull로 마이그레이션되지 않으며, 이 변경의 영향을 받지 않습니다. 동기식 가져오기 측정항목이 계속 표시됩니다.

스트리밍 가져오기 마이그레이션에 대한 자세한 내용은 Pub/Sub로 스트리밍 페이지를 참조하세요.

이 변경사항에 대해 궁금한 점이 있으면 계정팀에 문의하세요.

파이프라인 보기

특정 Dataflow 작업을 선택하면 모니터링 인터페이스에 작업의 파이프라인에 대한 정보가 표시됩니다. 이 정보에는 Dataflow 서비스에서 실행되는 파이프라인과 작업 요약, 작업 로그, 파이프라인의 각 단계에 대한 정보가 그래픽으로 표시됩니다.

Dataflow 모니터링 인터페이스는 실행 그래프와 같이 파이프라인을 그래픽으로 표시합니다. 파이프라인의 실행 그래프는 파이프라인의 각 변환을 상자로 나타냅니다. 각 상자에는 변환 이름과 작업 상태 정보가 있으며 여기에는 다음이 포함됩니다.

  • 실행 중: 단계가 실행 중입니다.
  • 대기 중: FlexRS 작업 단계가 대기 중입니다.
  • 성공: 단계가 성공적으로 완료되었습니다.
  • 중지됨: 작업이 중단되어 단계가 중지되었습니다.
  • 알 수 없음: 상태를 보고하지 못했습니다.
  • 실패: 단계를 완료하지 못했습니다.

기본 실행 그래프

파이프라인 코드:

자바


  // Read the lines of the input text.
  p.apply("ReadLines", TextIO.read().from(options.getInputFile()))
     // Count the words.
     .apply(new CountWords())
     // Write the formatted word counts to output.
     .apply("WriteCounts", TextIO.write().to(options.getOutput()));

Python


(
    pipeline
    # Read the lines of the input text.
    | 'ReadLines' >> beam.io.ReadFromText(args.input_file)
    # Count the words.
    | CountWords()
    # Write the formatted word counts to output.
    | 'WriteCounts' >> beam.io.WriteToText(args.output_path))

Go


  // Create the pipeline.
  p := beam.NewPipeline()
    s := p.Root()
  // Read the lines of the input text.
  lines := textio.Read(s, *input)
  // Count the words.
  counted := beam.ParDo(s, CountWords, lines)
  // Write the formatted word counts to output.
  textio.Write(s, *output, formatted)

참고: 오른쪽 이미지에 있는 일부 이름은 이 SDK의 변환 이름과 일치하지 않습니다.

실행 그래프:

Dataflow 모니터링 인터페이스에 표시된 그래프와 동일한 WordCount 파이프라인
              실행 그래프

그림 2: Dataflow 모니터링 인터페이스에 실행 그래프와 함께 표시되는 WordCount 파이프라인의 파이프라인 코드

복합 변환

실행 그래프에서 복합 변환(중첩된 하위 변환 여러 개가 포함되어 있는 변환)을 확장할 수 있습니다. 확장 가능한 복합 변환은 그래프에서 화살표로 표시됩니다. 화살표를 클릭하여 변환을 확장하고 안에 있는 하위 변환을 확인할 수 있습니다.

파이프라인 코드:

자바


  // The CountWords Composite Transform
  // inside the WordCount pipeline.

  public static class CountWords
    extends PTransform<PCollection<String>, PCollection<String>> {

    @Override
    public PCollection<String> apply(PCollection<String> lines) {

      // Convert lines of text into individual words.
      PCollection<String> words = lines.apply(
        ParDo.of(new ExtractWordsFn()));

      // Count the number of times each word occurs.
      PCollection<KV<String, Long>> wordCounts =
        words.apply(Count.<String>perElement());

      return wordCounts;
    }
  }

참고: 오른쪽 이미지에 있는 FormatCounts는 이 SDK와 관련 없습니다.

Python


# The CountWords Composite Transform inside the WordCount pipeline.
@beam.ptransform_fn
def CountWords(pcoll):
  return (
      pcoll
      # Convert lines of text into individual words.
      | 'ExtractWords' >> beam.ParDo(ExtractWordsFn())
      # Count the number of times each word occurs.
      | beam.combiners.Count.PerElement()
      # Format each word and count into a printable string.
      | 'FormatCounts' >> beam.ParDo(FormatCountsFn()))

Go


  // The CountWords Composite Transform inside the WordCount pipeline.
  func CountWords(s beam.Scope, lines beam.PCollection) beam.PCollection {
    s = s.Scope("CountWords")

    // Convert lines of text into individual words.
    col := beam.ParDo(s, &extractFn{SmallWordLength: *smallWordLength}, lines)

    // Count the number of times each word occurs.
    return stats.Count(s, col)
  }

참고: 오른쪽 이미지에 있는 FormatCounts는 이 SDK와 관련 없으며 오른쪽 이미지에 있는 일부 이름은 이 SDK에 있는 변환 이름과 일치하지 않습니다.

실행 그래프:

구성요소 변환을 표시하도록 확장된 CountWords 변환이 있는 WordCount 파이프라인의 실행 그래프

그림 3: 전체 파이프라인의 확장된 실행 그래프와 함께 표시되는 CountWords 변환의 하위 단계에 대한 파이프라인 코드

변환 이름

Dataflow에는 모니터링 실행 그래프에 표시되는 변환 이름을 가져오는 몇 가지 방법이 있습니다.

자바

  • 사용자가 변환을 적용할 때 Dataflow는 할당 받은 이름을 사용할 수 있습니다. apply 메서드에 제공하는 첫 번째 인수가 변환 이름이 됩니다.
  • Dataflow는 클래스 이름(커스텀 변환을 구축한 경우) 또는 DoFn 함수 객체 이름(ParDo와 같은 코어 변환을 사용하는 경우)에서 변환 이름을 유추할 수 있습니다.

Python

  • Dataflow는 사용자가 변환을 적용할 때 할당한 이름을 사용할 수 있습니다. 변환의 label 인수를 지정하여 변환 이름을 설정할 수 있습니다.
  • Dataflow는 클래스 이름(커스텀 변환을 구축한 경우) 또는 DoFn 함수 객체 이름(ParDo와 같은 코어 변환을 사용하는 경우)에서 변환 이름을 유추할 수 있습니다.

Go

  • 사용자가 변환을 적용할 때 Dataflow는 할당 받은 이름을 사용할 수 있습니다. Scope를 지정하여 변환 이름을 설정하세요.
  • DoFn 구조를 사용하는 경우 구조체 이름에서, 또는 함수 이름 DoFn을 사용하는 경우 함수 이름으로부터 Dataflow가 변환 이름을 유추할 수 있습니다.

측정항목 이해하기

실제 경과 시간

단계를 클릭하면 단계 정보 패널에 실제 경과 시간 측정항목이 표시됩니다. 실제 경과 시간은 모든 작업자의 모든 스레드에서 다음 작업에 소요된 대략적인 총 시간을 나타냅니다.

  • 단계 초기화
  • 데이터 처리
  • 데이터 무작위 섞기
  • 단계 종료

복합 단계의 경우 실제 경과 시간은 각 구성 단계에서 소요된 시간의 합계를 나타냅니다. 이 추정값을 통해 속도가 느린 단계를 식별하고 파이프라인의 어떤 부분에서 필요한 것보다 더 많은 시간이 소요되는지 진단할 수 있습니다.

파이프라인에서 단계를 실행하는 데 걸리는 시간을 볼 수 있습니다.
그림 4: 실제 경과 시간 측정항목을 통해 파이프라인을 최대한 효율적으로 실행할 수 있습니다.

부차 입력 측정항목

부차 입력 측정항목부차 입력 액세스 패턴과 알고리즘이 파이프라인 성능에 어떻게 영향을 미치는지 보여줍니다. 파이프라인에서 부차 입력을 사용하면 Dataflow가 컬렉션을 디스크와 같은 영구 계층에 기록하고 변환을 이 영구 컬렉션에서 읽습니다. 이러한 읽기와 쓰기는 작업 실행 시간에 영향을 미칩니다.

Dataflow 모니터링 인터페이스는 부차 입력 컬렉션을 생성하거나 사용하는 변환을 선택할 때 부차 입력 측정항목을 표시합니다. 단계 정보 패널의 부차 입력 측정항목 섹션에서 측정항목을 볼 수 있습니다.

부차 입력을 만드는 변환

선택한 변환이 부차 입력 컬렉션을 만드는 경우 부차 입력 측정항목 섹션에는 다음 측정항목과 함께 컬렉션 이름이 표시됩니다.

  • 작성 소요 시간: 부차 입력 컬렉션을 작성하는 데 소요된 시간입니다.
  • 작성한 바이트: 부차 입력 컬렉션에 작성한 총 바이트 수입니다.
  • 부차 입력의 읽기 소요 시간 및 바이트: 부차 입력 컬렉션을 소비하는 모든 변환(부차 입력 소비자라고도 함)에 대한 추가 측정항목이 포함되어 있는 테이블입니다.

부차 입력의 읽기 소요 시간 및 바이트 테이블에는 다음과 같은 각 부차 입력 소비자에 대한 정보가 포함됩니다.

  • 부차 입력 소비자: 부차 입력 소비자의 변환 이름입니다.
  • 읽기 소요 시간: 이 소비자가 부차 입력 컬렉션 읽기에 소요한 시간입니다.
  • 읽은 바이트: 이 소비자가 부차 입력 컬렉션에서 읽은 바이트 수입니다.

파이프라인에 부차 입력을 만드는 복합 변환이 있는 경우, 부차 입력을 만드는 특정 하위 변환이 표시될 때까지 복합 변환을 확장합니다. 그런 다음 해당 하위 변환을 선택하여 부차 입력 측정항목 섹션을 확인합니다.

그림 5에는 부차 입력 컬렉션을 만드는 변환의 부차 입력 측정항목이 나와 있습니다.

하위 변환을 선택할 수 있으며 해당 부차 입력 측정항목은 단계 정보 측면 패널에 표시됩니다.
그림 5: 확장된 복합 변환(MakeMapView)이 있는 실행 그래프. 부차 입력을 만드는 하위 변환(CreateDataflowView)이 선택되었고 부차 입력 측정항목은 단계 정보 측면 패널에 표시됩니다.

부차 입력을 하나 이상 소비하는 변환

선택한 변환이 부차 입력을 하나 이상 소비하는 경우, 부차 입력 측정항목 섹션에 부차 입력의 읽기 소요 시간 및 바이트 테이블이 표시됩니다. 이 테이블에는 다음과 같은 각 부차 입력 컬렉션에 대한 정보가 포함됩니다.

  • 부차 입력 컬렉션: 부차 입력 컬렉션 이름입니다.
  • 읽기 소요 시간: 변환이 이 부차 입력 컬렉션을 읽는 데 소요한 시간입니다.
  • 읽은 바이트: 변환이 이 부차 입력 컬렉션에서 읽은 바이트 수입니다.

파이프라인에 부차 입력을 읽는 복합 변환이 있는 경우, 부차 입력을 읽는 특정 하위 변환이 표시될 때까지 복합 변환을 확장합니다. 그런 다음 해당 하위 변환을 선택하여 부차 입력 측정항목 섹션을 확인합니다.

그림 6에는 부차 입력 컬렉션에서 읽는 변환의 부차 입력 측정항목이 나와 있습니다.

변환을 선택할 수 있으며 해당 부차 입력 측정항목은 단계 정보 측면 패널에 표시됩니다.
그림 6: 부차 입력 컬렉션에서 읽는 JoinBothCollections 변환 실행 그래프에 JoinBothCollections가 선택되었고 부차 입력 측정항목은 단계 정보 측면 패널에 표시됩니다.

부차 입력 성능 문제 식별

반복은 일반적인 부차 입력 성능 문제입니다. 부차 입력 PCollection이 너무 크면 작업자가 전체 컬렉션을 메모리에 캐시할 수 없습니다. 그 결과 작업자는 영구 부차 입력 컬렉션에서 반복적으로 읽어야 합니다.

그림 7에서 부차 입력 측정항목은 부차 입력 컬렉션에서 읽은 총 바이트 수가 컬렉션 크기(작성된 총 바이트 수)보다 훨씬 큼을 보여줍니다.

변환을 선택할 수 있으며 해당 부차 입력 측정항목은 단계 정보 측면 패널에 표시됩니다.
그림 7: 반복 예시. 부차 입력 컬렉션은 563MB이고 변환을 소비하여 읽은 바이트의 합계는 거의 12GB입니다.

이 파이프라인의 성능을 개선하려면 부차 입력 데이터의 반복이나 다시 가져오는 것을 방지하도록 알고리즘을 다시 설계합니다. 이 예시에서 파이프라인은 컬렉션 2개의 카티전 프로덕트을 만듭니다. 이 알고리즘은 기본 컬렉션의 각 요소에 대한 전체 부차 입력 컬렉션을 반복합니다. 기본 컬렉션의 여러 요소를 함께 일괄 처리하여 파이프라인의 액세스 패턴을 개선할 수 있습니다. 이 변경으로 작업자가 부차 입력 컬렉션을 다시 읽어야 하는 횟수가 줄어듭니다.

파이프라인이 큰 부차 입력이 하나 이상 있는 ParDo를 적용하여 조인을 수행하면 다른 일반적인 성능 문제가 발생할 수 있습니다. 이 경우 작업자는 부차 입력 컬렉션에서 읽는 데 동시 실행 시간의 많은 부분을 소비할 수 있습니다.

그림 8은 이 문제의 부차 입력 측정항목 예시를 보여줍니다.

변환을 선택할 수 있으며 해당 부차 입력 측정항목은 단계 정보 측면 패널에 표시됩니다.
그림 8: JoinBothCollections 변환의 총 처리 시간은 18분 31초입니다. 작업자는 10GB 부차 입력 컬렉션에서 읽는 데 이 처리 시간 대부분(10분 3초)을 소비합니다.

이 파이프라인 성능을 개선하려면 부차 입력 대신 CoGroupByKey를 사용합니다.

권장사항 및 진단

Dataflow에서는 작업 성능 향상, 비용 절감, 오류 문제 해결을 위한 권장사항을 제공합니다. 이 섹션에서는 권장사항을 검토하고 해석하는 방법을 설명합니다. 일부 권장사항은 사용 사례와 관련이 없을 수 있습니다.

진단

로그 아래의 진단 탭은 파이프라인에서 생성된 특정 로그 항목을 수집하고 표시합니다. 여기에는 파이프라인 문제일 가능성을 나타내는 메시지 및 스택 추적이 있는 오류 메시지가 포함됩니다. 수집된 로그 항목은 중복 삭제되고 오류 그룹으로 결합됩니다.

서비스 오류 그룹이 있는 Dataflow 작업의 진단 탭

오류 보고서에는 다음 정보가 포함됩니다.

  • 오류 메시지가 있는 오류 목록
  • 각 오류가 발생한 횟수
  • 각 오류가 발생한 시기를 나타내는 히스토그램
  • 오류가 가장 최근에 발생한 시간
  • 오류가 처음 발생한 시간
  • 오류 상태

특정 오류의 오류 보고서를 보려면 오류 열 아래에 있는 설명을 클릭합니다. 오류 보고 페이지가 표시됩니다. 오류가 서비스 오류인 경우 추가 단계가 포함된 문서('문제 해결 가이드')가 포함된 추가 링크가 표시됩니다.

Dataflow 서비스 오류의 오류 그룹 세부정보 페이지

페이지에 대한 자세한 내용은 오류 보기를 참조하세요.

오류 숨기기

오류 메시지를 숨기려면 진단 탭을 열고 숨김 처리하려는 오류를 클릭하고, 해결 상태 메뉴(열기 | 확인됨 | 해결됨 | 숨김 중 하나로 라벨이 지정됨)를 열어 숨김을 선택합니다.

권장사항

권장사항 탭에는 파이프라인과 관련된 Dataflow의 통계가 표시됩니다. 이러한 통계의 목표는 비용 및 성능이 개선될 수 있는 상황을 파악하는 것입니다.

샘플 권장사항이 있는 Dataflow 작업의 권장사항 탭

업데이트 날짜 열에는 통계가 마지막으로 관찰된 시간이 표시됩니다. 권장사항은 업데이트 날짜로부터 30일 동안 저장됩니다.

프로그래매틱 방식으로 권장사항에 액세스

프로그래매틱 방식으로 권장사항에 대한 액세스의 경우 Recommender API를 사용합니다.

권장사항 닫기

프로젝트의 권장사항 허브에서 권장사항을 닫을 수 있습니다.

권장사항을 닫으려면 콘솔 왼쪽 상단에 있는 탐색 메뉴를 클릭하고 > 권장사항을 선택합니다. Dataflow 진단 카드에서 모두 보기를 클릭하고 닫을 권장사항을 선택한 후 닫기를 클릭합니다.

다음 단계