Cloud Logging에 로그 전송

Workflows는 Cloud Logging에 워크플로 실행에 대한 실행 로그를 자동으로 생성합니다.

호출 로깅을 사용 설정할 수도 있습니다. 또는 소스에서 sys.log 함수를 사용하는 커스텀 로그를 만들 수 있습니다. 호출 로깅 및 커스텀 로그를 사용하면 워크플로 실행 중 로그가 Logging으로 전송되는 시기를 제어할 수 있으며, 워크플로를 디버깅할 때 특히 유용합니다.

engine_callexecutions_system 로깅 proto 파일을 포함한 자세한 내용은 이 GitHub 저장소를 참조하세요.

실행 로그

각 워크플로 실행마다 실행이 시작될 때와 끝날 때 각각 하나씩 최소 2개의 실행 로그가 자동으로 트리거됩니다.

Logging에서 제공되는 Workflows 플랫폼 로그에 대한 자세한 내용은 Google Cloud Platform 로그를 참조하세요.

호출 로깅

워크플로 실행 중에 각 호출 단계가 로깅되고 단계 이름, 함수 이름, 함수 인수, 호출 응답이 반환되도록 플래그를 설정할 수 있습니다. 또는 호출을 중지하는 모든 예외를 로깅할 수 있습니다.

명시적인 호출 단계만 로깅됩니다. 예를 들어, 하위 워크플로 또는 라이브러리 함수 호출 등이 있습니다. 표현식 내에서 또는 표준 라이브러리 함수 내에서의 호출(예: sys.log에서 http.post)과 커넥터 내에서의 호출은 로깅되지 않습니다.

Google Cloud Console 또는 gcloud 명령줄 도구를 사용하여 호출 로깅을 적용할 수 있습니다.

콘솔

  1. Google Cloud Console의 워크플로 페이지로 이동합니다.
    워크플로로 이동

  2. Workflows 페이지에서 워크플로를 선택하여 세부정보 페이지로 이동합니다.

  3. 워크플로 세부정보 페이지에서 실행을 클릭합니다.

  4. 필요한 경우 워크플로 실행 페이지에서 워크플로 실행 중에 적용할 호출 로깅 수준을 지정할 수 있습니다.

    호출 로깅 드롭다운 목록에서 다음 중 하나를 선택합니다.

    • none: 호출 로깅이 없습니다. 기본 수준입니다.
    • log-all-calls: 하위 워크플로 또는 라이브러리 함수와 해당 결과에 대한 모든 호출을 로깅합니다.
    • log-errors-only: 예외로 인해 호출이 중지된 경우에만 로깅합니다.
  5. 실행을 클릭합니다.

gcloud

워크플로를 실행하고 실행이 완료될 때까지 기다리려면 다음 명령어를 입력합니다.

gcloud workflows run WORKFLOW_NAME \
    --call-log-level=CALL_LOGGING_LEVEL \
    --data=DATA

또는 실행 시도가 완료될 때까지 기다리지 않고 워크플로를 실행하려면 다음 명령어를 입력합니다.

gcloud workflows execute WORKFLOW_NAME \
    --call-log-level=CALL_LOGGING_LEVEL \
    --data=DATA

다음을 바꿉니다.

  • WORKFLOW_NAME: 워크플로의 이름입니다.
  • CALL_LOGGING_LEVEL: 선택사항입니다. 실행 중에 적용할 호출 로깅 수준입니다. 다음 중 하나일 수 있습니다.
    • none: 호출 로깅이 없습니다. 기본 수준입니다.
    • log-all-calls: 하위 워크플로 또는 라이브러리 함수와 해당 결과에 대한 모든 호출을 로깅합니다.
    • log-errors-only: 예외로 인해 호출이 중지된 경우에만 로깅합니다.
  • DATA: 선택사항입니다. JSON 형식의 워크플로 런타임 인수입니다.

커스텀 로그

워크플로를 실행하는 동안 Logging에 로그 항목을 만들려면 표준 라이브러리 sys.log 함수를 호출하는 워크플로에서 단계를 정의합니다.

YAML

  - step1:
      assign:
          - varA: "Hello"
          - varB: "World"
  - logStep:
      call: sys.log
      args:
          text: TEXT
          severity: SEVERITY 
  - step2:
      return: ${varA + " " + varB}
    

JSON

    [
      {
        "step1": {
          "assign": [
            {
              "varA": "Hello"
            },
            {
              "varB": "World"
            }
          ]
        }
      },
      {
        "logStep": {
          "call": "sys.log",
          "args": {
            "text": "TEXT",
            "severity": "SEVERITY"
          }
        }
      },
      {
        "step2": {
          "return": "${varA + " " + varB}"
        }
      }
    ]
      

로그 항목을 만들 때 다음을 정의합니다.

  • TEXT: 필수 항목입니다. 로깅할 텍스트입니다. 지도의 값을 로깅해야 하면 ${json.encode_to_string(myMap)}을 사용합니다.
  • SEVERITY: 선택사항입니다. 로그 항목의 심각도 수준입니다. 예를 들면 INFO, WARNING, CRITICAL입니다.

자세한 내용은 sys.log 함수 참조를 확인하세요.

필수 권한

호출 로깅을 적용하거나 Logging에 커스텀 로그를 전송하려면 logging.logEntries.create 권한이 포함된 서비스 계정(예: roles/logging.logWriter 역할)에 워크플로를 연결해야 합니다. 워크플로로 업데이트된 서비스 계정을 변경해야 하면 워크플로 업데이트를 참조하세요. 서비스 계정 만들기 및 역할 할당에 대한 자세한 내용은 프로젝트, 폴더, 조직 액세스 관리를 참조하세요.

워크플로 로그 보기

Workflows 또는 Logging에서 로그를 볼 수 있습니다. 단일 워크플로의 로그를 보려면 Workflows에서 로그 탭을 사용합니다. 모든 워크플로의 로그에 대한 집계 뷰를 가져오려면 Logging에서 로그 탐색기 페이지를 사용합니다.

Workflows에서 로그 보기

Workflows에서 워크플로의 로그를 보려면 다음 안내를 따르세요.

  1. Cloud Console의 워크플로 페이지로 이동합니다.
    워크플로로 이동

  2. 워크플로 로그에 액세스하려면 워크플로 이름을 클릭하여 세부정보 페이지로 이동합니다.

  3. 로그를 보려면 로그를 클릭합니다.

  4. 심각도별로 로그를 필터링하려면 기본값 목록에서 표시할 로그 유형을 선택합니다. 기본적으로 모든 심각도 수준의 로그가 표시됩니다.

워크플로 세부정보 페이지의 로그 탭에는 다음 유형의 로그가 표시됩니다.

  • Logging으로 전송되는 로그

  • 워크플로 정의 업데이트와 같이 워크플로에서 수행되는 모든 작업의 감사 로그

Logging에서 로그 보기

Logging에서 로그를 보려면 다음 안내를 따르세요.

  1. Cloud Console에서 로그 탐색기 페이지로 이동합니다.
    로그 탐색기로 이동

  2. 쿼리 빌더에서 리소스를 클릭하고 workflow를 입력합니다. 목록에서 Cloud Workflow를 선택하고 추가를 클릭합니다.

    워크플로 로깅

  3. 쿼리 실행을 클릭합니다.

Logging에서 로그 보기에 대해 자세히 알아보려면 로그 탐색기 사용을 참조하세요.

다음 단계