

# AWS Glue 작업의 로깅
<a name="monitor-continuous-logging"></a>

 AWS Glue 5.0에서는 모든 작업에 실시간 로깅 기능이 제공됩니다. 또한 사용자 지정 구성 옵션을 지정하여 로깅 동작을 조정할 수 있습니다. 이러한 옵션으로는 Amazon CloudWatch 로그 그룹 이름, Amazon CloudWatch 로그 스트림 접두사(AWS Glue 작업 실행 ID 및 드라이버/실행기 ID 앞에 있음), 로그 메시지의 로그 변환 패턴 설정이 있습니다. 이러한 구성을 사용하면 만료 정책이 서로 다른 사용자 지정 Amazon CloudWatch 로그 그룹의 로그를 집계할 수 있습니다. 여기에 더해 사용자 지정 로그 스트림 접두사와 변환 패턴을 사용하여 로그를 보다 효과적으로 분석할 수 있습니다. 이러한 수준의 사용자 지정을 통해 특정 요구 사항에 따라 로그 관리 및 분석을 최적화할 수 있습니다.

## AWS Glue 5.0의 로깅 동작
<a name="monitor-logging-behavior-glue-50"></a>

 기본적으로 시스템 로그, Spark 대몬 로그 및 사용자 AWS Glue Logger 로그는 Amazon CloudWatch의 `/aws-glue/jobs/error` 로그 그룹에 기록됩니다. 반면 사용자 stdout(표준 출력) 및 stderr(표준 오류) 로그는 기본적으로 `/aws-glue/jobs/output` 로그 그룹에 기록됩니다.

## 사용자 지정 로깅
<a name="monitor-logging-custom"></a>

 다음 작업 인수를 사용하여 기본 로그 그룹 및 로그 스트림 접두사를 사용자 지정할 수 있습니다.
+  `--custom-logGroup-prefix`: `/aws-glue/jobs/error` 및 `/aws-glue/jobs/output` 로그 그룹에 대한 사용자 지정 접두사를 지정할 수 있습니다. 사용자 지정 접두사를 입력하는 경우 로그 그룹 이름의 형식은 다음과 같습니다.
  +  `/aws-glue/jobs/error`은 `{{<customer prefix>}}/error`이 됩니다.
  +  `/aws-glue/jobs/output `은 `{{<customer prefix>}}/output`이 됩니다.
+  `--custom-logStream-prefix`: 로그 그룹 내에 있는 로그 스트림 이름의 사용자 지정 접두사를 지정할 수 있습니다. 사용자 지정 접두사를 입력하는 경우 로그 스트림 이름의 형식은 다음과 같습니다.
  +  `jobrunid-driver`은 `{{<customer log stream>}}-driver`이 됩니다.
  +  `jobrunid-executorNum`은 `{{<customer log stream>}}-executorNum`이 됩니다.

 사용자 지정 접두사의 검증 규칙 및 제한 사항: 
+  전체 로그 스트림 이름은 1\~512자여야 합니다.
+  사용자 지정 접두사 자체는 400자로 제한됩니다.
+  사용자 지정 접두사는 정규식 패턴 `[^:\*]\*`(허용되는 특수 문자는 '\_', '-' 및 '/')과 일치해야 합니다.

## 사용자 지정 스크립트 로거를 사용하여 애플리케이션별 메시지 로깅
<a name="monitor-logging-script"></a>

AWS Glue 로거를 사용하면 드라이버 로그 스트림에 실시간으로 전송되는 모든 애플리케이션별 메시지를 스크립트에서 로깅할 수 있습니다.

다음 예제에서는 Python 스크립트를 보여줍니다.

```
from awsglue.context import GlueContext
from pyspark.context import SparkContext

sc = SparkContext()
glueContext = GlueContext(sc)
logger = glueContext.get_logger()
logger.info("info message")
logger.warn("warn message")
logger.error("error message")
```

다음 예제에서는 Scala 스크립트를 보여줍니다.

```
import com.amazonaws.services.glue.log.GlueLogger

object GlueApp {
  def main(sysArgs: Array[String]) {
    val logger = new GlueLogger
    logger.info("info message")
    logger.warn("warn message")
    logger.error("error message")
  }
}
```

## 작업 진행률을 보여주는 진행률 표시줄 사용 설정
<a name="monitor-logging-progress"></a>

AWS Glue는 AWS Glue 작업 실행 상태를 확인하기 위해 `JOB_RUN_ID-progress-bar` 로그 스트림 아래에 실시간 진행률 표시줄을 제공합니다. 현재 `glueContext`를 초기화하는 작업만 지원합니다. `glueContext`를 초기화하지 않고 기본 Spark 작업을 실행하는 경우에는 AWS Glue 진행률 표시줄이 나타나지 않습니다.

이 진행률 표시줄에서는 5초마다 다음 진행률 업데이트를 표시합니다.

```
Stage Number (Stage Name): > (numCompletedTasks + numActiveTasks) / totalNumOfTasksInThisStage]
```

## Amazon CloudWatch 로깅을 사용한 보안 구성
<a name="monitor-security-config-logging"></a>

 Amazon CloudWatch 로그에 대한 보안 구성이 활성화되면 AWS Glue는 보안 구성 이름을 포함하는 특정 명명 패턴이 있는 로그 그룹을 생성합니다.

### 보안 구성을 사용한 로그 그룹 이름 지정
<a name="monitor-log-group-naming"></a>

 기본 및 사용자 정의 로그 그룹은 다음과 같습니다.
+  **기본 오류 로그 그룹:** `/aws-glue/jobs/{{Security-Configuration-Name}}-role/{{glue-job-role}}/error` 
+  **기본 출력 로그 그룹:** `/aws-glue/jobs/{{Security-Configuration-Name}}-role/{{glue-job-role}}/output` 
+  **사용자 지정 오류 로그 그룹(AWS Glue 5.0):** `{{custom-log-group-prefix}}/{{Security-Configuration-Name}}-role/{{glue-job-role}}/error` 
+  **사용자 지정 출력 로그 그룹(AWS Glue 5.0):** `{{custom-log-group-prefix}}/{{Security-Configuration-Name}}-role/{{glue-job-role}}/output` 

### 필수 IAM 권한
<a name="monitor-logging-iam-permissions"></a>

 Amazon CloudWatch Logs로 보안 구성을 사용하는 경우 IAM 역할 권한에 `logs:AssociateKmsKey` 권한을 추가해야 합니다. 해당 권한이 포함되지 않으면 연속 로깅이 사용 중지됩니다.

 또한 Amazon CloudWatch Logs에 대한 암호화를 구성하려면 Amazon Amazon CloudWatch Logs 사용 설명서의 [AWS Key Management Service를 사용하여 Amazon CloudWatch 로그에서 로그 데이터 암호화](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/encrypt-log-data-kms.html)를 참조하세요.

### 추가 정보
<a name="additional-info"></a>

 보안 구성 생성에 대한 자세한 내용은 [AWS Glue 콘솔에서 보안 구성 관리](https://docs.aws.amazon.com/glue/latest/dg/console-security-configurations.html)를 참조하세요.

**Topics**
+ [AWS Glue 5.0의 로깅 동작](#monitor-logging-behavior-glue-50)
+ [사용자 지정 로깅](#monitor-logging-custom)
+ [사용자 지정 스크립트 로거를 사용하여 애플리케이션별 메시지 로깅](#monitor-logging-script)
+ [작업 진행률을 보여주는 진행률 표시줄 사용 설정](#monitor-logging-progress)
+ [Amazon CloudWatch 로깅을 사용한 보안 구성](#monitor-security-config-logging)
+ [AWS Glue 4.0 이하 작업에 대한 지속 로깅 활성화](monitor-continuous-logging-enable.md)
+ [AWS Glue 작업 로그 보기](monitor-continuous-logging-view.md)