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

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

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

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

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

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

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

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

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

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

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

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

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

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

작업 모니터링 차트 액세스

작업의 모니터링 차트에 액세스하려면 Dataflow 모니터링 인터페이스에서 작업 이름을 클릭하세요. 이렇게 하면 다음 항목이 포함된 작업 세부정보 페이지로 이동합니다.

  • 작업 그래프: 파이프라인의 시각적 표현
  • 작업 측정항목: 작업 실행에 대한 측정항목
  • 작업 정보: 파이프라인에 대해 설명하는 정보
  • 작업 로그: Dataflow 서비스가 생성한 작업 수준 로그
  • 작업자 로그: Dataflow 서비스가 생성한 작업자 수준 로그
  • 작업 오류 보고: 선택한 타임라인에서 오류가 발생한 위치 및 로깅된 모든 오류의 수를 보여주는 차트
  • 시간 선택기: 측정항목의 기간을 조정할 수 있는 도구

작업 세부정보 페이지에서 작업 그래프작업 측정항목 탭을 사용하여 작업 보기를 전환할 수 있습니다.

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

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

기존 Job details(작업 세부정보) 페이지로 되돌리려면 페이지 상단의 Back to old job page(이전 작업 페이지로 돌아가기)를 클릭하세요.

전체 화면 모드

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

시간 선택 도구 사용

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

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

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

단계 및 작업자 측정항목

차트에서 볼 수 있는 측정항목은 다음과 같습니다.

  • 데이터 최신 상태(스트리밍 파이프라인만 해당)
  • 시스템 지연 시간(스트리밍 파이프라인만 해당)
  • 자동 확장
  • 처리량
  • CPU 사용률
  • 작업자 오류 로그 수

차트에 액세스하려면 범례 토글을 클릭하여 차트 범례 펼치기로 이동합니다.

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

처리량

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

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

CPU 사용률

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

Dataflow 작업자 하나의 CPU 사용률을 보여주는 데이터 시각화

Cloud Monitoring 알림 만들기

Dataflow는 Cloud Monitoring과 완전하게 통합되어 있으므로 작업이 사용자 정의 임계값을 초과하면 받을 알림을 만들 수 있습니다.

이러한 알림을 만드는 방법에 대한 자세한 내용은 Dataflow 파이프라인용 Cloud Monitoring 사용 페이지를 참조하세요.

파이프라인 보기

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

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

실행 그래프:

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

그림 2: 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

실행 그래프:

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

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

변환 이름

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

자바: SDK 2.x

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

Python

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

자바: SDK 1.x

측정항목 이해하기

실제 경과 시간

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

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

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

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

파이프라인이 예상보다 많은 실행 시간을 필요로 하는 원인을 조사하기 위한 실제 경과 시간(이전에는총 실행 시간이라고 함) 측정항목을 사용하는 예를 보려면 Dataflow 파이프라인의 타이밍 이해하기를 참조하세요.

부차 입력 측정항목

부차 입력 측정항목부차 입력 액세스 패턴과 알고리즘이 파이프라인 성능에 어떻게 영향을 미치는지 보여줍니다. 파이프라인에서 부차 입력을 사용하면 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를 사용하세요.

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

작업 요약 패널에는 최근 6시간 동안의 시스템 지연 시간 측정항목과 데이터 최신 상태 측정 항목을 보여주는 그래프가 표시됩니다. 데이터는 60초마다 샘플링됩니다. 샘플링되면 데이터는 최대 180초 동안 표시되지 않습니다.

시스템 지연 시간

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

  • 소스와 싱크가 여러 개 있는 경우 시스템 지연 시간은 특정 요소가 모든 싱크에 기록되기 전 소스 내에서 대기하는 가장 긴 시간입니다.
  • 소스 내에서 요소가 대기하는 시간 값을 소스가 제공하지 않고 요소에 이 이벤트 시간을 정의할 수 있는 메타데이터도 없는 경우, 시스템 지연 시간은 파이프라인에 요소가 처음 제공된 시간부터 계산됩니다.

데이터 최신 상태

데이터 최신 상태는 실시간과 출력 워터마크 사이의 시간입니다. 파이프라인의 각 단계에는 출력 데이터 워터마크가 있습니다. 출력 데이터 워터마크 TT 이전의 이벤트 시간으로 모든 요소 계산이 처리되었음을 의미합니다. 출력 데이터 워터마크는 전체 업스트림 계산 중 가장 빠른 입력 데이터 워터마크에 의해 제한됩니다. 입력 데이터가 완전히 처리되지 않으면 출력 워터마크가 보류되어 결과적으로 데이터 최신 상태에 영향을 줄 수 있습니다.

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

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

자동 확장

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

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

자동 확장 변경 기록을 확인하려면 기록 더보기 링크를 클릭합니다. 파이프라인의 작업자 기록에 대한 정보가 표시된 창이 나타납니다.

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

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

오류 보고

오류 보고 인터페이스는 파이프라인에서 생성된 오류를 집계하고 표시합니다.

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

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

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

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

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

오류에 대한 자세한 내용을 확인하려면 오류 요약을 클릭합니다. Error Reporting 인터페이스가 표시됩니다.

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

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