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

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

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

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

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

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

  1. GCP Console에 로그인합니다.
  2. GCP 프로젝트를 선택합니다.
  3. 왼쪽 상단에서 메뉴를 클릭합니다.
  4. 빅데이터 섹션으로 이동하고 Dataflow를 클릭합니다.

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

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

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

  • : 모니터링 UI가 아직 Cloud Dataflow 서비스로부터 상태를 받지 못했습니다.
  • 실행 중: 현재 작업이 실행 중입니다.
  • 시작되지 않음: 작업이 생성되었지만 시작하기 전에 시스템에서 준비 시간이 필요합니다.
  • 대기 중: FlexRS 작업이 대기 중입니다.
  • 취소 중... : 작업이 취소 중입니다.
  • 취소됨: 사용자가 취소한 작업입니다.
  • 드레이닝 중...: 작업이 드레이닝 중입니다.
  • 드레이닝됨: 사용자가 작업을 드레이닝했습니다.
  • 업데이트 중...: 작업이 업데이트 중입니다.
  • 업데이트됨: 사용자가 작업을 업데이트했습니다.
  • 성공: 작업이 성공적으로 완료되었습니다.
  • 실패: 작업을 완료하지 못했습니다.

파이프라인에 대한 자세한 내용을 보려면 관련 작업을 선택하세요.

파이프라인 보기

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

Cloud Dataflow 모니터링 인터페이스의 개별 파이프라인 작업
그림 2: Cloud Dataflow 모니터링 인터페이스에 표시되는 개별 파이프라인 작업

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

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

기본 실행 그래프

파이프라인 코드:

자바: SDK 2.x


  // 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()))
         .to(options.getOutput()));

Python


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

자바: SDK 1.x


  // Read the lines of the input text.
  p.apply(TextIO.Read.named("ReadLines").from(options.getInput()))
     // Count the words.
     .apply(new CountWords())
     // Write the formatted word counts to output.
     .apply(TextIO.Write.named("WriteCounts")
         .to(options.getOutput())
         .withNumShards(options.getNumShards()));
실행 그래프:

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

그림 3: Cloud Dataflow 모니터링 인터페이스에 실행 그래프와 나란히 표시되는 WordCount 파이프라인의 파이프라인 코드

복합 변환

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

파이프라인 코드:

자바: SDK 2.x


  // 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.
class CountWords(beam.PTransform):

  def expand(self, 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()))

자바: SDK 1.x


  // 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());

      // Format each word and count into a printable string.
      PCollection<String> results = wordCounts.apply(
        ParDo.of(new FormatCountsFn()));

      return results;
    }
  }
실행 그래프:

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

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

변환 이름

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

자바: SDK 2.x

  • Cloud Dataflow는 변환을 적용할 때 사용자가 지정한 이름을 사용할 수 있습니다. apply 메소드에 제공하는 첫 번째 인수가 변환 이름이 됩니다.
  • Cloud Dataflow는 클래스 이름(커스텀 변환을 빌드한 경우) 또는 DoFn 함수 객체 이름(ParDo와 같은 핵심 변환을 사용하는 경우)에서 변환 이름을 추론할 수 있습니다.

Python

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

자바: SDK 1.x

  • Cloud Dataflow는 변환을 적용할 때 사용자가 지정한 이름을 사용할 수 있습니다. apply 메소드에 제공하는 첫 번째 인수가 변환 이름이 됩니다.
  • Cloud Dataflow는 클래스 이름(커스텀 변환을 빌드한 경우) 또는 DoFn 함수 객체 이름(ParDo와 같은 핵심 변환을 사용하는 경우)에서 변환 이름을 추론할 수 있습니다.

실제 경과 시간

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

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

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

파이프라인의 단계를 실행하는 데 소모된 시간을 확인할 수 있습니다.
그림 5: 실제 경과 시간 측정항목을 통해 파이프라인의 효율적인 실행을 보장할 수 있습니다.

파이프라인 실행에 예상보다 더 많은 시간이 걸리는 원인을 조사하려면 Cloud Dataflow 파이프라인의 시간 소요 이해에서 실제 경과 시간(이전 이름: 총 실행 시간) 측정항목을 사용하는 예를 참조하세요.

부차 입력 측정항목

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

부차 입력 컬렉션을 만들거나 소비하는 변환을 선택하면 Cloud Dataflow 모니터링 인터페이스에 부차 입력 측정항목이 표시됩니다. 단계 탭의 부차 입력 측정항목 섹션에서 측정항목을 확인할 수 있습니다.

부차 입력을 만드는 변환

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

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

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

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

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

그림 6에는 부차 입력 컬렉션을 만드는 변환의 부차 입력 측정항목이 표시되어 있습니다.

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

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

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

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

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

그림 7에는 부차 입력 컬렉션에서 읽는 변환의 부차 입력 측정항목이 표시되어 있습니다.

변환을 선택할 수 있으며 해당 부차 입력 측정항목은 단계 탭에 표시됩니다.
그림 7: JoinBothCollections 변환은 부차 입력 컬렉션에서 읽어옵니다. JoinBothCollections가 실행 그래프에서 선택되며 부차 입력 측정항목은 단계 탭에 표시됩니다.

부차 입력 성능 문제 식별

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

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

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

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

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

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

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

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

시스템 지연 시간과 데이터 최신 상태

작업 요약 패널에는 최근 6시간 동안의 시스템 지연 시간 측정항목과 데이터 최신 상태 측정 항목을 보여주는 그래프가 표시됩니다.

  • 시스템 지연 시간은 데이터 항목이 처리를 기다리고 있는 현재 최대 기간(초)입니다. 데이터는 60초마다 샘플링됩니다. 샘플링되면 데이터는 최대 180초 동안 표시되지 않습니다.

  • 데이터 최신 상태는 파이프라인에서 완전히 처리된 가장 최근 데이터 항목의 기간(이벤트 타임스탬프로부터 경과된 시간)입니다. 데이터는 60초마다 샘플링됩니다. 샘플링되면 데이터는 최대 180초 동안 표시되지 않습니다.

그래프 아래에 있는 알림 만들기 링크를 클릭하면 Stackdriver Monitoring 대시보드의 새 알림 정책 만들기 페이지가 열립니다.

시스템 지연 시간 측정항목과 데이터 최신 상태 측정항목의 그래프 보기
그림 10: 시스템 지연 시간 측정항목과 데이터 최신 상태 측정항목의 그래프 보기

자동 확장

작업 요약 패널에는 자동 확장 작업 정보가 표시됩니다. Cloud Dataflow 서비스는 자동 확장 작업을 실행하는 데 필요한 작업자 인스턴스 수를 자동으로 선택합니다. 작업자 인스턴스 수는 작업 요구사항에 따라 시간별로 변경될 수 있습니다.

'요약' 탭에서 자동 확장 파이프라인에서 사용하는 작업자 인스턴스의 수와 기타 정보를 확인할 수 있습니다.

자동 확장 변경 기록을 확인하려면 기록 더보기 링크를 클릭합니다. 파이프라인의 작업자 기록에 대한 정보가 있는 창이 팝업됩니다.

자동 확장 변경 기록을 확인하려면 '기록 더보기' 링크를 클릭합니다.

참고: 2016년 12월 12일 이후에 실행되었거나 업데이트된 스트리밍 파이프라인에 대한 자동 확장 세부정보를 확인할 수 있습니다. 파이프라인이 12월 12일 이전에 실행되었거나 최종 업데이트된 경우 파이프라인을 업데이트한 이후에 자동 확장 세부정보를 확인할 수 있습니다.

Error Reporting

Stackdriver Error Reporting 인터페이스는 파이프라인에서 생성된 오류를 집계 및 표시합니다.

오류 보고서에는 다음 내용이 포함됩니다.

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

파이프라인의 오류 보고서를 보려면 파이프라인 그래프 위에 있는 로그 메뉴를 클릭한 후 파이프라인 그래프 아래에 있는 스택 추적 탭을 클릭합니다. Cloud Dataflow 모니터링 인터페이스에 로깅된 각 오류 및 오류가 발생한 횟수에 대한 요약이 표시됩니다.

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

오류에 대한 자세한 내용을 확인하려면 오류 요약을 클릭합니다. 그러면 Stackdriver Error Reporting 인터페이스로 이동합니다.

Stackdriver Error Reporting 인터페이스에 표시된 오류에 대한 자세한 내용

Stackdriver Error Reporting 인터페이스는 추가 기능을 제공합니다. 파이프라인에서 생성되는 오류에 대한 자세한 내용은 오류 보기를 참조하세요.

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

도움이 필요하시나요? 지원 페이지를 방문하세요.