Google Cloud 콘솔의 Dataflow 페이지에 있는 작업 측정항목 탭에서 차트를 볼 수 있습니다. 각 측정항목은 다음 대시보드로 구성됩니다.
개요 측정항목
스트리밍 측정항목(스트리밍 파이프라인만 해당)
- 데이터 최신 상태(Streaming Engine 유무에 관계없음)
- 시스템 지연 시간(Streaming Engine 유무에 관계없음)
- 백로그
- 처리(Streaming Engine만 해당)
- 동시 로드(Streaming Engine만 해당)
- 지속성(Streaming Engine만 해당)
- 중복(Streaming Engine만 해당)
- 타이머(Streaming Engine만 해당)
리소스 측정항목
입력 측정항목
출력 측정항목
디버깅에 이러한 측정항목을 사용할 수 있는 시나리오에 대한 자세한 내용은 '느리거나 중단된 작업 문제 해결'의 디버깅 도구를 참조하세요.
지원 및 제한 사항
Dataflow 측정항목을 사용할 때는 다음 세부정보에 유의하세요.
작업 데이터를 간헐적으로 사용할 수 없는 경우가 있습니다. 데이터가 누락되면 작업 모니터링 차트에 공백이 표시됩니다.
이러한 차트 중 일부는 스트리밍 파이프라인에 지정됩니다.
측정항목 데이터를 작성하려면 사용자 관리 서비스 계정에 IAM API 권한
monitoring.timeSeries.create
가 있어야 합니다. 이 권한은 Dataflow 작업자 역할에 포함되어 있습니다.Dataflow 서비스는 작업이 완료된 후에 예약된 CPU 시간을 보고합니다. 제한되지 않은(스트리밍) 작업의 경우 예약된 CPU 시간은 작업이 취소되거나 실패한 후에만 보고됩니다. 따라서 작업 측정항목에는 스트리밍 작업에 예약된 CPU 시간이 포함되지 않습니다.
작업 측정항목 액세스
- Google Cloud 콘솔에 로그인합니다.
- Google Cloud 프로젝트를 선택합니다.
- 탐색 메뉴를 열고 Dataflow를 선택합니다.
- 작업 목록에서 작업 이름을 클릭합니다. 작업 세부정보 페이지가 열립니다.
- 작업 측정항목 탭을 클릭합니다.
작업 측정항목 차트의 추가 정보에 액세스하려면
데이터 탐색을 클릭합니다.Cloud Monitoring 사용
Dataflow는 Cloud Monitoring과 완벽하게 통합됩니다. 다음 태스크에 Cloud Monitoring을 사용합니다.
- 작업이 사용자 정의 임곗값을 초과하면 알림을 만듭니다.
- 측정항목 탐색기를 사용하여 쿼리를 빌드하고 측정항목 기간을 조정합니다.
알림을 만들고 측정항목 탐색기를 사용하는 방법에 대한 자세한 내용은 Dataflow 파이프라인에 Cloud Monitoring 사용을 참조하세요.
Cloud Monitoring 알림 만들기
Cloud Monitoring을 사용하면 Dataflow 작업이 사용자 정의 임곗값을 초과할 때 알림을 만들 수 있습니다. 측정항목 차트에서 Cloud Monitoring 알림을 만들려면 알림 정책 만들기를 클릭합니다.
모니터링 그래프를 보거나 알림을 만들 수 없는 경우 추가 모니터링 권한이 필요할 수 있습니다.
측정항목 탐색기에서 보기
측정항목 탐색기에서 Dataflow 측정항목 차트를 볼 수 있습니다. 여기에서 쿼리를 빌드하고 측정항목 기간을 조정할 수 있습니다.
측정항목 탐색기에서 Dataflow 차트를 보려면 작업 측정항목 뷰에서
차트 옵션 더보기를 열고 측정항목 탐색기에서 보기를 클릭합니다.측정항목 기간을 조정할 때 사전 정의된 기간을 선택하거나 커스텀 시간 간격을 선택하여 작업을 분석할 수 있습니다.
기본적으로 스트리밍 작업과 진행 중인 일괄 작업의 경우 디스플레이에 해당 작업의 6시간 전 측정항목이 표시됩니다. 중지되거나 완료된 스트리밍 작업의 경우 기본 디스플레이에 작업 기간의 전체 런타임이 표시됩니다.
Dataflow I/O 측정항목
측정항목 탐색기에서 다음 Dataflow I/O 측정항목을 볼 수 있습니다.
job/pubsub/write_count
: Dataflow 작업에서 PubsubIO.Write의 Pub/Sub 게시 요청입니다.job/pubsub/read_count
: Dataflow 작업에서 PubsubIO.Read의 Pub/Sub pull 요청입니다.job/bigquery/write_count
: Dataflow 작업에서 BigQueryIO.Write의 BigQuery 게시 요청입니다. Apache Beam v2.28.0 이상에서method='STREAMING_INSERTS'
를 사용 설정한 WriteToBigQuery 변환을 사용하면 Python 파이프라인에서job/bigquery/write_count
측정항목을 사용할 수 있습니다. 이 측정항목은 일괄 파이프라인과 스트리밍 파이프라인 모두에서 사용할 수 있습니다.- 파이프라인에서 BigQuery 소스나 싱크를 사용하는 경우 할당량 문제를 해결하려면 BigQuery Storage API 측정항목을 사용합니다.
Dataflow 측정항목의 전체 목록은 Google Cloud 측정항목 문서를 참조하세요.
단계 및 작업자 측정항목
다음 섹션에서는 모니터링 인터페이스에서 사용할 수 있는 단계와 작업자 측정항목을 자세히 설명합니다.
자동 확장
Dataflow 서비스는 자동 확장 작업을 실행하는 데 필요한 작업자 인스턴스 수를 자동으로 선택합니다. 작업자 인스턴스 수는 시간이 경과하면서 작업 요구사항에 따라 변경될 수 있습니다.
자동 확장 변경 기록을 확인하려면 기록 더보기를 클릭합니다. 작업의 작업자 기록에 관한 정보가 포함된 표가 표시됩니다.
처리량
처리량은 특정 시점에서 처리되는 데이터의 양입니다. 이 단계별 측정항목은 초당 요소 수로 표시됩니다. 이 측정항목을 초당 바이트 수로 보려면 페이지 아래쪽에서 처리량(바이트/초) 차트를 확인합니다.
작업자 오류 로그 수
작업자 오류 로그 수에 특정 시점의 모든 작업자에서 관찰된 오류 비율이 표시됩니다.
데이터 최신 상태(Streaming Engine 유무에 관계없음)
데이터 최신 상태 측정항목은 데이터 요소의 타임스탬프와 파이프라인에서 이벤트가 처리되는 시간 간의 차이(초)를 보여줍니다. 데이터 요소는 요소에서 이벤트가 발생할 때(예: 웹사이트 클릭 이벤트 또는 Pub/Sub 수집) 타임스탬프를 수신합니다. 출력 워터마크는 데이터가 처리되는 시간입니다.
Dataflow 작업은 언제든지 여러 요소를 처리합니다. 데이터 최신 상태 차트의 데이터 포인트는 이벤트 시간을 기준으로 지연 시간이 가장 긴 요소를 보여줍니다. 따라서 차트의 동일한 행은 여러 요소의 데이터를 표시합니다. 행의 각 데이터 포인트는 파이프라인의 해당 단계에서 가장 느린 요소의 데이터를 표시합니다.
입력 데이터가 완전히 처리되지 않으면 출력 워터마크가 지연되어 데이터 최신 상태에 영향을 줄 수 있습니다. 워터마크 시간과 이벤트 시간의 큰 차이는 작업 속도가 느리거나 중단된 작업을 나타낼 수 있습니다.
최근에 업데이트된 스트리밍 작업의 경우 작업 상태 및 워터마크 정보를 사용하지 못할 수 있습니다. 업데이트 작업은 일부 내용을 변경하며, 이러한 변경 사항이 Dataflow 모니터링 인터페이스로 전파되는 데 몇 분 정도 걸립니다. 작업을 업데이트하고 5분 후에 모니터링 인터페이스를 새로 고쳐보세요.
자세한 내용은 Apache Beam 문서의 워터마크 및 지연 데이터를 참조하세요.
대시보드에는 다음 두 가지 차트가 있습니다.
- 단계별 데이터 최신 상태
- 데이터 최신 상태
앞의 이미지에서 강조표시된 영역은 이벤트 시간과 출력 워터마크 시간 간의 상당한 차이를 표시하여 느린 작업을 나타냅니다.
데이터 새로고침 값이 높은 측정항목(예: 데이터가 최신이 아님을 나타내는 측정항목)은 다음으로 인해 발생할 수 있습니다.
- 성능 병목 현상: 파이프라인에 시스템 지연 시간이 높거나 중단된 변환을 나타내는 로그가 포함된 단계가 있는 경우 이 파이프라인은 데이터 최신 상태를 향상시킬 수 있는 성능 문제를 나타냅니다. 자세히 알아보려면 느리거나 중단된 작업 문제 해결을 참고하세요.
- 데이터 소스 병목 현상: 데이터 소스의 백로그가 증가하면 요소의 이벤트 타임스탬프가 처리를 기다리는 동안 워터마크에서 분기될 수 있습니다. 대규모 백로그는 종종 성능 병목 현상 또는 파이프라인에서 사용하는 소스를 모니터링하여 가장 잘 감지되는 데이터 소스 문제로 인해 발생합니다.
- Pub/Sub와 같이 정렬되지 않은 소스는 높은 속도로 출력하는 경우에도 중단된 워터마크를 생성할 수 있습니다. 이러한 상황은 요소가 타임스탬프 순서로 출력되지 않고 워터마크가 처리되지 않은 최소 타임스탬프를 기반으로 하기 때문에 발생합니다.
- 빈번한 재시도: 요소가 처리 실패 및 재시도됨을 나타내는 오류가 표시되면 재시도된 요소의 이전 타임스탬프로 인해 데이터 새로고침 값이 높아질 수 있습니다. 일반적인 Dataflow 오류 목록은 문제 해결에 도움이 될 수 있습니다.
시스템 지연 시간(Streaming Engine 유무에 관계없음)
시스템 지연 시간은 데이터 항목이 처리 중이거나 처리 대기 중인 현재 최대 시간(초)입니다. 이 측정항목은 특정 요소가 파이프라인의 한 소스 내에서 대기하는 시간을 나타냅니다. 최대 기간은 처리 후 조정됩니다. 다음은 추가로 고려해야 할 사항입니다.
- 소스와 싱크가 여러 개 있는 경우 시스템 지연 시간은 특정 요소가 모든 싱크에 기록되기 전 소스 내에서 대기하는 최대 시간입니다.
- 소스 내에서 요소가 대기하는 시간 동안 소스에서 값을 제공하지 않는 경우도 있습니다. 또한 요소에는 이벤트 시간을 정의하는 메타데이터가 없을 수 있습니다. 이 시나리오에서 시스템 지연 시간은 파이프라인이 요소를 처음 받은 시간부터 계산됩니다.
대시보드에는 다음 두 가지 차트가 있습니다.
- 단계별 시스템 지연 시간
- 시스템 지연 시간
백로그
백로그 대시보드는 처리 대기 중인 요소에 대한 정보를 제공합니다. 대시보드에는 다음 두 가지 차트가 있습니다.
- 백로그(초)(Streaming Engine만 해당)
- 백로그 바이트(Streaming Engine 유무에 관계없음)
백로그 초 차트에서는 새 데이터가 도착하지 않고 처리량이 변경되지 않는 경우 현재 백로그를 사용하는 데 필요한 시간(초)을 예측하여 보여줍니다. 예상 백로그 시간은 아직 처리해야 하는 입력 소스의 처리량과 백로그 바이트로부터 계산됩니다. 이 측정항목은 스트리밍 자동 확장 기능에서 수직 확장이나 축소 시기를 결정하는 데 사용됩니다.
백로그 바이트 차트에는 스테이지에서 알려진 처리되지 않은 입력 양(바이트 단위)이 표시됩니다. 이 측정항목은 각 단계에서 소비할 잔여 바이트와 업스트림 단계를 비교합니다. 이 측정항목을 정확하게 보고하려면 파이프라인에서 수집된 각 소스를 올바르게 구성해야 합니다. Pub/Sub 및 BigQuery와 같은 기본 제공 소스는 이미 즉시 지원되지만 커스텀 소스에는 추가 구현이 필요합니다. 자세한 내용은 제한 없는 커스텀 소스 자동 확장을 참조하세요.
처리(Streaming Engine만 해당)
Dataflow 서비스에서 Apache Beam 파이프라인을 실행하면 파이프라인 태스크가 작업자 VM에서 실행됩니다 처리 대시보드에서는 태스크가 작업자 VM에서 처리된 시간에 대한 정보를 제공합니다. 대시보드에는 다음 두 가지 차트가 있습니다.
- 사용자 처리 지연 시간 히트맵
- 단계별 사용자 처리 지연 시간
사용자 처리 지연 시간 히트맵에서는 50번째, 95번째, 99번째 백분위수 분포에서 최대 작업 지연 시간을 보여줍니다. 히트맵을 사용하여 롱테일 작업이 높은 전체 시스템 지연 시간을 유발하거나 전반적인 데이터 최신 상태에 부정적인 영향을 미치는지 확인할 수 있습니다.
다운스트림 문제가 되기 전에 업스트림 문제를 해결하려면 50번째 백분위수의 높은 지연 시간에 대한 알림 정책을 설정합니다.
단계별 사용자 처리 지연 시간 차트에서는 작업자가 처리하는 모든 작업의 99번째 백분위수를 단계별로 보여줍니다. 사용자 코드로 인해 병목 현상이 발생하는 경우 이 차트에는 병목 현상이 포함된 단계가 표시됩니다. 파이프라인을 디버깅하려면 다음 단계를 수행하면 됩니다.
차트를 사용하여 지연 시간이 비정상적으로 높은 단계를 찾습니다.
작업 세부정보 페이지의 실행 세부정보 탭에 있는 그래프 뷰에 단계 워크플로를 선택합니다. 단계 워크플로 그래프에서 지연 시간이 비정상적으로 높은 단계를 찾습니다.
연결된 사용자 작업을 찾으려면 그래프에서 해당 단계의 노드를 클릭합니다.
추가 세부정보를 찾으려면 Cloud Profiler로 이동한 후 Cloud Profiler를 사용하여 올바른 시간 범위에서 스택 트레이스를 디버깅합니다. 이전 단계에서 확인한 사용자 작업을 찾습니다.
동시 로드(Streaming Engine만 해당)
병렬 처리 차트에는 각 단계에서 데이터 처리에 사용되는 대략적인 키 수가 표시됩니다. Dataflow는 파이프라인의 동시 처리에 따라 확장됩니다.
Dataflow가 파이프라인을 실행할 때 작업자라고 하는 여러 Compute Engine 가상 머신(VM)에 처리가 분산됩니다. Dataflow 서비스는 파이프라인의 처리 논리를 자동으로 동시 처리하고 작업자들로 분산합니다. 지정된 키 처리는 직렬화되므로 단계의 총 키 수는 해당 단계에서 사용할 수 있는 최대 동시 로드를 나타냅니다.
동시 로드 측정항목은 느리거나 중단된 파이프라인의 핫 키나 병목 현상을 찾는 데 유용할 수 있습니다.
지속성(Streaming Engine만 해당)
지속성 대시보드는 특정 파이프라인 단계에서 영구 스토리지를 쓰고 읽은 속도(초당 바이트 단위)에 대한 정보를 제공합니다. 읽기 및 쓰기 바이트에는 사용자 상태 작업과 영구 셔플 상태, 중복 삭제, 부차 입력, 워터마크 추적이 포함됩니다. 파이프라인 코더 및 캐싱은 읽고 쓰는 바이트에 영향을 줍니다. 스토리지 바이트는 내부 스토리지 사용량과 캐싱으로 인해 처리된 바이트와 다를 수 있습니다.
대시보드에는 다음 두 가지 차트가 있습니다.
- 스토리지 쓰기
- 스토리지 읽기
중복(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 작업에서 가장 많은 메모리를 사용하는 작업자에 대한 정보를 제공합니다. 작업의 여러 지점에서 최대 메모리 양을 사용하는 작업자가 변경되는 경우 차트의 동일한 행에 여러 작업자의 데이터가 표시됩니다. 행의 각 데이터 포인트에는 그 시점에 최대 메모리 양을 사용하는 작업자의 데이터가 표시됩니다. 차트는 작업자가 사용한 메모리의 추정치와 메모리 한도를 비교합니다(바이트 단위).
이 차트를 사용하여 메모리 부족(OOM) 문제를 해결할 수 있습니다. 작업자의 메모리 부족 비정상 종료는 이 차트에 표시되지 않습니다.
메모리 사용률 차트는 Dataflow 작업의 모든 작업자가 사용한 메모리의 추정치와 메모리 한도를 비교하여 보여줍니다(바이트 단위).
입력 및 출력 측정항목
스트리밍 Dataflow 작업이 Pub/Sub를 사용하여 레코드를 읽거나 쓰면 입력 측정항목 및 출력 측정항목이 표시됩니다.
동일한 유형의 모든 입력 측정항목이 결합되며 모든 출력 측정항목도 결합됩니다. 예를 들어 모든 Pub/Sub 측정항목이 한 섹션에서 그룹화됩니다. 각 측정항목 유형은 별도의 섹션으로 구성됩니다. 표시되는 측정항목을 변경하려면 왼쪽에서 원하는 측정항목을 가장 잘 나타내는 섹션을 선택합니다. 다음 이미지에서는 사용 가능한 모든 섹션을 보여줍니다.
다음 2개 차트는 입력 측정항목 및 출력 측정항목 섹션에 모두 표시됩니다.
초당 요청
초당 요청은 시간에 따라 소스 또는 싱크에서 데이터 읽기 또는 쓰기를 수행하기 위한 API 요청 속도입니다. 이 속도가 0으로 저하되거나 연장 기간 동안 예상 동작에 비해 크게 감소하면 파이프라인이 특정 작업을 수행하지 못하도록 차단될 수 있습니다. 또한 읽을 데이터가 없을 수 있습니다. 이 경우 시스템 워터마크가 높은 작업 단계를 검토합니다. 또한 작업자 로그에서 처리 속도를 저하시키는 오류나 표시를 검사합니다.
오류 유형별 초당 응답 오류
오류 유형별 초당 응답 오류 수는 시간 경과에 따라 소스나 싱크에서 데이터 읽기나 쓰기에 실패한 API 요청의 속도입니다. 이러한 오류가 자주 발생하면 이러한 API 요청으로 인해 처리 속도가 느려질 수 있습니다. 실패한 API 요청을 조사해야 합니다. 이러한 문제를 해결하려면 일반 입력 및 출력 오류 코드를 검토하세요. 또한 Pub/Sub 오류 코드와 같은 소스 또는 싱크에 사용되는 특정 오류 코드 문서를 검토하세요.