

# 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\$1512자여야 합니다.
+  사용자 지정 접두사 자체는 400자로 제한됩니다.
+  사용자 지정 접두사는 정규식 패턴 `[^:\$1]\$1`(허용되는 특수 문자는 '\$1', '-' 및 '/')과 일치해야 합니다.

## 사용자 지정 스크립트 로거를 사용하여 애플리케이션별 메시지 로깅
<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)

# AWS Glue 4.0 이하 작업에 대한 지속 로깅 활성화
<a name="monitor-continuous-logging-enable"></a>

**참고**  
 AWS Glue 4.0 이하 버전에서는 지속 로깅이 사용 가능한 기능이었습니다. 하지만 AWS Glue 5.0이 도입됨에 따라 모든 작업에는 실시간 로깅 기능이 제공됩니다. AWS Glue 5.0의 로깅 기능 및 구성 옵션에 대한 자세한 내용은 [AWS Glue 작업의 로깅](https://docs.aws.amazon.com/glue/latest/dg/monitor-continuous-logging.html)을 참조하세요.

AWS Glue 콘솔을 사용하거나 AWS Command Line Interface(AWS CLI)를 통해 지속 로깅을 활성화할 수 있습니다.

새 작업을 만들거나 기존 작업을 편집할 때 또는 AWS CLI를 통해 연속 로깅을 사용 설정할 수 있습니다.

Amazon CloudWatch 로그 그룹 이름, AWS Glue 작업 실행 ID 드라이버/실행기 ID 앞의 CloudWatch 로그 스트림 접두사 및 로그 메시지에 대한 로그 변환 패턴 등의 사용자 정의 구성 옵션을 지정할 수도 있습니다. 이러한 구성을 사용하면 만료 정책이 서로 다른 사용자 지정 CloudWatch 로그 그룹에 집계 로그를 설정하고 사용자 지정 로그 스트림 접두사 및 변환 패턴을 사용하여 더 자세히 분석할 수 있습니다.

**Topics**
+ [AWS Management Console 사용](#monitor-continuous-logging-enable-console)
+ [사용자 지정 스크립트 로거를 사용하여 애플리케이션별 메시지 로깅](#monitor-continuous-logging-script)
+ [작업 진행률을 보여주는 진행률 표시줄 사용 설정](#monitor-continuous-logging-progress)
+ [지속 로깅을 사용한 보안 구성](#monitor-logging-encrypt-log-data)

## AWS Management Console 사용
<a name="monitor-continuous-logging-enable-console"></a>

AWS Glue 작업을 생성하거나 편집할 때 콘솔에서 지속 로깅을 활성화하려면 다음 절차를 수행합니다.

**지속 로깅으로 새 AWS Glue 작업을 생성하려면**

1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/)에서 AWS Glue 콘솔을 엽니다.

1. 탐색 창에서 **ETL 작업**을 선택합니다.

1. **시각적 ETL**을 선택합니다.

1. **작업 세부 정보** 탭에서 **고급 속성** 섹션을 확장합니다.

1. **연속 로깅**에서 **CloudWatch에서 로그 활성화**를 선택합니다.

**기존 AWS Glue 작업에 대한 지속 로깅을 활성화하려면**

1. [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/)에서 AWS Glue 콘솔을 엽니다.

1. 탐색 창에서, **작업**을 선택합니다.

1. **작업** 목록에서 기존 작업을 선택합니다.

1. **작업**, **작업 편집**을 선택합니다.

1. **작업 세부 정보** 탭에서 **고급 속성** 섹션을 확장합니다.

1. **연속 로깅**에서 **CloudWatch에서 로그 활성화**를 선택합니다.

### AWS CLI 사용
<a name="monitor-continuous-logging-cli"></a>

지속 로깅을 활성화하려면 작업 파라미터를 AWS Glue 작업에 전달합니다. 다른 AWS Glue 작업 파라미터와 유사한 다음 특수 작업 파라미터를 전달합니다. 자세한 내용은 [AWS Glue 작업에서 작업 파라미터 사용](aws-glue-programming-etl-glue-arguments.md) 섹션을 참조하세요.

```
'--enable-continuous-cloudwatch-log': 'true'
```

사용자 정의 Amazon CloudWatch 로그 그룹 이름을 지정할 수 있습니다. 지정하지 않으면 기본 로그 그룹 이름은 `/aws-glue/jobs/logs-v2`입니다.

```
'--continuous-log-logGroup': 'custom_log_group_name'
```

사용자 정의 Amazon CloudWatch 로그 스트림 접두사를 지정할 수 있습니다. 지정하지 않으면 기본 로그 스트림 접두사는 작업 실행 ID입니다.

```
'--continuous-log-logStreamPrefix': 'custom_log_stream_prefix'
```

사용자 지정 지속적 로깅 변환 규칙을 지정할 수 있습니다. 지정하지 않으면 기본 변환 패턴은 `%d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n`입니다. 변환 패턴은 드라이버 로그 및 실행기 로그에만 적용되며 AWS Glue 진행률 표시줄에는 영향을 주지 않습니다.

```
'--continuous-log-conversionPattern': 'custom_log_conversion_pattern'
```

## 사용자 지정 스크립트 로거를 사용하여 애플리케이션별 메시지 로깅
<a name="monitor-continuous-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-continuous-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]
```

## 지속 로깅을 사용한 보안 구성
<a name="monitor-logging-encrypt-log-data"></a>

CloudWatch 로그에 보안 구성이 사용되는 경우 AWS Glue는 연속 로그에 대해 다음과 같은 이름의 로그 그룹을 생성합니다.

```
<Log-Group-Name>-<Security-Configuration-Name>
```

기본 및 사용자 정의 로그 그룹은 다음과 같습니다.
+ 기본 연속 로그 그룹은 `/aws-glue/jobs/error-<Security-Configuration-Name>`입니다.
+ 사용자 정의 연속 로그 그룹은 `<custom-log-group-name>-<Security-Configuration-Name>`입니다.

CloudWatch Logs로 보안 구성을 사용하는 경우 IAM 역할 권한에 `logs:AssociateKmsKey`를 추가해야 합니다. 해당 권한이 포함되지 않으면 연속 로깅이 사용 중지됩니다. 또한 CloudWatch Logs에 대한 암호화를 구성하려면 *Amazon CloudWatch Logs User Guide*의 [Encrypt Log Data in CloudWatch Logs Using AWS Key Management Service](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/encrypt-log-data-kms.html)를 참조하세요.

보안 구성 생성에 대한 자세한 내용은 [AWS Glue 콘솔에서 보안 구성 관리](console-security-configurations.md) 섹션을 참조하세요.

**참고**  
 로깅을 활성화하고 추가 CloudWatch 로그 이벤트가 생성되면 추가 요금이 발생할 수 있습니다. 자세한 내용은 [Amazon CloudWatch 요금](https://aws.amazon.com/cloudwatch/pricing/)을 참조하세요.

# AWS Glue 작업 로그 보기
<a name="monitor-continuous-logging-view"></a>

AWS Glue 콘솔 또는 Amazon CloudWatch 콘솔을 사용하여 실시간 로그를 볼 수 있습니다.

**AWS Glue 콘솔 대시보드를 사용하여 실시간 로그를 보려면**

1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/)에서 AWS Glue 콘솔을 엽니다.

1. 탐색 창에서, **작업**을 선택합니다.

1. 기존 작업을 추가하거나 시작합니다. **작업**, **작업 실행**을 선택합니다.

   작업 실행을 시작할 때 실행 중인 작업에 대한 정보가 포함된 페이지로 이동합니다.
   + **로그** 탭에 이전에 집계된 애플리케이션 로그가 표시됩니다.
   + **로그** 탭에는 `glueContext`가 초기화된 작업이 실행 중일 때 실시간 진행률 표시줄이 표시됩니다.
   + **로그** 탭에는 실시간 Apache Spark 드라이버 로그를 캡처하는 **드라이버 로그** 및 작업이 실행 중일 때 AWS Glue 애플리케이션 로거를 사용하여 로깅한 스크립트의 애플리케이션 로그도 포함됩니다.

1. 이전 작업의 경우 [**로그(Logs)**]를 선택하여 [**작업 기록(Job History)**] 보기에서 실시간 로그를 볼 수도 있습니다. 이러한 작업을 수행하면 해당 작업 실행에 대한 모든 Spark 드라이버, 실행기 및 진행률 표시줄 로그 스트림을 표시하는 CloudWatch 콘솔로 이동합니다.

**CloudWatch 콘솔 대시보드를 사용하여 실시간 로그를 보려면**

1. [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)에서 CloudWatch 콘솔을 엽니다.

1. 탐색 창에서 **로그**를 선택합니다.

1. **/aws-glue/jobs/error/** 로그 그룹을 선택합니다.

1. **필터** 상자에 작업 실행 ID를 붙여넣습니다.

   드라이버 로그, 실행기 로그 및 진행률 표시줄을 볼 수 있습니다(**Standard filter(표준 필터)**를 사용하는 경우).