실행 가능 항목을 설명하도록 커스텀 상태 이벤트 구성

이 문서에서는 Batch 작업을 만들고 실행할 때 작업의 실행 가능 항목을 설명하는 커스텀 상태 이벤트를 구성하는 방법을 설명합니다. 상태 이벤트에 대한 자세한 내용은 상태 이벤트를 통해 작업 기록 보기를 참조하세요.

커스텀 상태 이벤트를 사용하면 실행 가능 항목의 진행 상황에 대한 추가 세부정보를 태스크 기록에 제공할 수 있으므로 작업을 더 쉽게 분석하고 문제를 해결할 수 있습니다. 예를 들어 실행 가능한 항목이 시작되거나, 실행 가능 항목이 종료되거나, 실행 가능한 장벽에 도달하거나, 코드 진행 중에 중요한 이벤트가 발생하는 시점을 설명하는 커스텀 상태 이벤트를 구성할 수 있습니다.

시작하기 전에

커스텀 상태 이벤트 구성

작업을 만들 때 다음 옵션 중 하나 이상을 사용하여 커스텀 상태 이벤트를 구성합니다.

  • 표시 이름을 정의하여 실행 가능 항목의 상태를 설명합니다. gcloud CLI 또는 Batch API를 사용하여 작업을 만들 때 이 작업을 수행할 수 있습니다.

  • 이벤트마다 batch/custom/event 필드로 구조화된 태스크 로그를 작성하여 중요한 런타임 이벤트를 표시합니다. 스크립트 및 컨테이너 실행 가능 항목의 정의의 일부로 작업을 만드는 메서드를 사용할 때 이 작업을 수행할 수 있습니다.

실행 가능 항목 상태 설명

실행 가능 항목의 표시 이름(displayName 필드)을 정의하여 실행 가능 항목의 상태를 설명하는 커스텀 상태 이벤트를 구성할 수 있습니다. 결과로 나타나는 커스텀 상태 이벤트는 실행 가능 항목 유형에 따라 약간 다릅니다.

  • 컨테이너 실행 가능 항목 또는 스크립트 실행 가능 항목의 표시 이름을 정의하면 Batch가 자동으로 두 가지 유형의 커스텀 상태 이벤트를 추가합니다. 첫 번째 커스텀 상태 이벤트는 태스크가 이 실행 가능 항목을 시작할 때마다 나타냅니다. 두 번째 커스텀 상태 이벤트는 태스크가 이 실행 가능한 항목과 해당 종료 코드를 완료할 때마다 나타냅니다.

  • 실행 가능한 장벽의 표시 이름을 정의하면 Batch는 태스크가 이 장벽에 도달할 때마다 이를 나타내는 커스텀 상태 이벤트를 자동으로 추가합니다.

실행 가능 항목의 상태를 설명하는 커스텀 상태 이벤트로 작업을 만들고 실행하려면 gcloud CLI 또는 Batch API를 사용하여 하나 이상의 실행 가능 항목에 displayName 필드를 정의합니다.

...
"runnables": [
  {
    "displayName":DISPLAY_NAME,
    ...
  }
]
...

예를 들어 각 실행 가능 항목의 상태를 설명하는 커스텀 상태 이벤트가 있는 작업에는 다음과 비슷한 JSON 구성 파일이 있을 수 있습니다.

{
  "taskGroups": [
    {
      "taskSpec": {
        "runnables": [
          {
            "displayName":"DISPLAY_NAME1",
            "script": {
              "text": "echo Hello world from script 1 for task ${BATCH_TASK_INDEX}"
            }
          },
          {
            "displayName":"DISPLAY_NAME2",
            "barrier": {}
          },
          {
            "displayName":"DISPLAY_NAME3",
            "script": {
              "text": "echo Hello world from script 2 for task ${BATCH_TASK_INDEX}"
            }
          }
        ]
      },
      "taskCount": 3
    }
  ],
  "logsPolicy": {
    "destination": "CLOUD_LOGGING"
  }
}

DISPLAY_NAME1, DISPLAY_NAME2, DISPLAY_NAME3를 작업 내에서 고유해야 하는 실행 가능 항목의 이름으로 바꿉니다(예: script 1, barrier 1, script 2).

예시 작업의 실행이 완료되면 각 태스크의 결과로 나타나는 커스텀 상태 이벤트가 다음과 비슷하게 표시됩니다.

statusEvents:
  ...
  - description: 'script at index #0 with display name [DISPLAY_NAME1] started.'
    eventTime: '...'
    type: RUNNABLE_EVENT
  - description: 'script at index #0 with display name [DISPLAY_NAME1] finished with exit
      code 0.'
    eventTime: '...'
    type: RUNNABLE_EVENT
  - description: 'barrier at index #2 with display name [DISPLAY_NAME2] reached.'
    eventTime: '...'
    type: BARRIER_REACHED_EVENT
  - description: 'script at index #2 with display name [DISPLAY_NAME3] started.'
    eventTime: '...'
    type: RUNNABLE_EVENT
  - description: 'script at index #2 with display name [DISPLAY_NAME3] finished with exit
      code 0.'
    eventTime: '...'
    type: RUNNABLE_EVENT
  ...

중요한 런타임 이벤트 표시

Batch 커스텀 상태 이벤트(batch/custom/event) 필드의 문자열을 정의하는 구조화된 태스크 로그를 작성하도록 실행 가능 항목을 구성하여 실행 가능 항목을 실행하는 동안 중요한 이벤트가 발생하는 시점을 나타내는 커스텀 상태 이벤트를 구성할 수 있습니다.

컨테이너 실행 가능 항목 또는 스크립트 실행 가능 항목이 batch/custom/event JSON 필드를 정의하는 구조화된 태스크 로그를 작성하는 경우 해당 시점에 커스텀 상태 이벤트가 생성됩니다. 추가 필드를 포함하도록 구조화된 태스크 로그를 구성할 수 있지만 커스텀 상태 이벤트에는 batch/custom/event 필드의 문자열만 포함됩니다.

중요한 이벤트가 발생하는 시점을 나타내는 커스텀 상태 이벤트로 작업을 만들고 실행하려면 JSON을 인쇄하여 구조화된 로그를 작성하도록 실행 가능 항목을 하나 이상 구성하고 batch/custom/event 필드를 로그의 일부로 정의합니다.

...
"runnables": [
  {
    ...
    "echo '{\"batch/custom/event\":\"EVENT_DESCRIPTION\"}'"
    ...
  }
]
...
"logsPolicy": {
  "destination": "CLOUD_LOGGING"
}
...

예를 들어 중요 이벤트가 발생하는 시점을 나타내는 커스텀 상태 이벤트가 있는 작업에는 다음과 유사한 JSON 구성 파일이 있을 수 있습니다.

{
  "taskGroups": [
    {
      "taskSpec": {
        "runnables": [
          {
            "script": {
              "text": "sleep 30; echo '{\"batch/custom/event\": \"EVENT_DESCRIPTION\"}'; sleep 30"
            }
          }
        ]
      },
      "taskCount": 3
    }
  ],
  "logsPolicy": {
    "destination": "CLOUD_LOGGING"
  }
}

EVENT_DESCRIPTION을 커스텀 상태 이벤트에 대한 설명(예: halfway done)으로 바꿉니다.

예시 작업 실행이 완료되면 각 태스크의 결과로 나타나는 커스텀 상태 이벤트가 다음과 비슷하게 표시됩니다.

statusEvents:
  ...
  - description: EVENT_DESCRIPTION
    eventTime: '...'
    type: RUNNABLE_CUSTOM_EVENT
  ...

다음 단계