AWS IoT Core에서 AWS IoT 로그의 로깅 수준을 가장 잘 관리하려면 어떻게 해야 할까요?

5분 분량
0

AWS IoT Core에서 AWS IoT 로그를 구성하여 비용과 데이터 트래픽을 줄일 때 모범 사례를 따르고 싶습니다.

간략한 설명

참고: 이 문서는 AWS IoT Core 로그의 V2에만 해당됩니다.

모니터링해야 하는 AWS IoT Core 리소스와 그 수준을 파악하는 것이 가장 좋습니다. AWS IoT Core 리소스를 분할하여 각 세그먼트에 모니터링 요구 사항에 적합한 로깅 수준을 할당할 수 있습니다. AWS IoT Core 로그를 사용하면 리소스에 기본 로깅 수준과 특정 로깅 수준을 설정할 수 있습니다.

다음과 같이 구성하는 것이 가장 좋습니다.

  • 기본 로깅은 ERROR 또는 WARN 수준과 같은 낮은 상세도 로깅 수준을 갖도록 설정합니다. 기본 로깅이 구성된 경우, 리소스별 로깅이 구성되어 있지 않은 한 이것이 모든 리소스에 적용됩니다.
  • INFO 또는 DEBUG와 같이 리소스별 로깅(수동 또는 동적)을 좀 더 상세한 수준으로 설정합니다. THING_GROUP, CLIENT_ID, SOURCE_IP 또는 PRINCIPAL_ID와 같은 다양한 대상 유형에 대해 이를 구성할 수 있습니다.

기본 로깅과 리소스별 로깅을 동시에 사용할 수 있습니다. 상세도 수준에는 DISABLED(최저), ERROR, WARN, INFO, DEBUG(최고)가 포함됩니다.

중요: AWS IoT Core 플릿 크기에 따라, 더 상세한 로그 수준을 설정하면 비용이 많이 들고 문제 해결이 더 어려워질 수 있습니다. 더욱 상세한 로깅 수준은 또한 데이터 트래픽을 증가시킵니다. 문제 해결 시 INFO 또는 DEBUG를 임시 조치로만 사용하는 것이 가장 좋습니다. 문제 해결이 완료되면, 로깅 수준을 덜 상세한 설정으로 재설정하는 것이 가장 좋습니다.

해결 방법

전제 조건

IoT 관리자 권한 보안 인증 정보를 사용하여 AWS Command Line Interface(AWS CLI)를 로컬에 설치해야 합니다. AWS CLI용 기본 AWS 리전은 반드시 대상 AWS 리전을 가리켜야 합니다. 등록된 IoT 사물이든 등록되지 않은 IoT 사물이든 AWS IoT Core에 연결된 클라이언트가 있어야 합니다.

참고: AWS CLI 명령을 실행할 때 오류가 발생하는 경우, 최신 버전의 AWS CLI를 사용하고 있는지 확인하세요.

기본 로깅

AWS IoT 로그의 기본 로깅 수준을 ERROR 또는 WARN으로 설정하면 로그 오류 또는 경고를 검토할 수 있습니다. 기본값을 덜 상세한 수준으로 설정하면 비용과 데이터 트래픽을 낮출 수 있습니다. 자세한 내용은 AWS IoT Core의 기본 로깅 설정을 구성하려면 어떻게 해야 할까요?를 참조하세요.

참고: 사례 생성 시 AWS Support에 AWS IoT Core 로그를 제공해야 합니다. 이 정보는 고객 데이터로 간주되므로 AWS Support는 이 정보에 액세스할 수 없습니다.

특정 리소스를 수동으로 로깅

AWS IoT Core 로그를 사용하면 다음 둘 모두에 대한 리소스별 로깅 수준을 설정할 수 있습니다.

  • 사물로 등록된 클라이언트
  • 사물로 등록되지 않은 클라이언트

자세한 내용은 AWS IoT Core에서 특정 리소스의 로깅 수준을 수동으로 구성하려면 어떻게 해야 할까요?를 참조하세요

사물로 등록된 클라이언트의 경우 정의된 로깅 수준에서 여러 사물에 대한 리소스별 로깅을 관리할 수 있습니다. 사물 그룹에서 해당 사물을 수동으로 추가하거나 제거할 수도 있습니다. 클라이언트는 AWS IoT Core에 IoT 사물로 등록되어 있어야 하며 동일한 클라이언트 ID와 연결된 사물 이름을 사용하여 연결해야 합니다. 그런 다음 대상 유형이 THING_GROUP인 정적 사물 그룹을 사용하여 사물 그룹을 관리할 수 있습니다.

참고: 정적 사물 그룹을 사용할 때는 할당량 제한을 고려해야 합니다. 자세한 내용은 AWS IoT Core 사물 그룹 리소스 제한 및 할당량을 참조하세요.

사물로 등록되지 않은 클라이언트의 경우 클라이언트 속성을 대상 유형으로 사용하여 리소스를 관리할 수 있습니다. 이러한 속성에는 CLIENT_ID, SOURCE_IP 또는 PRINCIPAL_ID가 포함됩니다.

특정 리소스를 자동으로 로깅

동적 사물 그룹을 사용하여 사물에 대한 리소스별 로깅 수준을 자동으로 설정할 수 있습니다. 클라이언트는 반드시 IoT 사물로 등록되고 사물 이름과 동일한 클라이언트 ID로 연결되어야 합니다. 동적 사물 그룹은 플릿 인덱싱 쿼리를 사용하여 쿼리 조건에 맞는 사물을 지속적으로 찾아서 그룹에 자동으로 추가합니다. 자세한 내용은 AWS IoT Core에서 특정 리소스의 로깅 수준을 동적으로 구성하려면 어떻게 해야 할까요?를 참조하세요.

참고: 동적 사물 그룹을 생성하거나 업데이트할 때 사물이 동적 사물 그룹에 포함될 수 있지만 해당 그룹에 자동으로 추가되지 않을 수 있습니다. 자세한 내용은 성공적인 명령으로 오류 로그 가능을 참조하세요.

로그 항목 모니터링

Amazon CloudWatch 콘솔 또는 AWS CLI를 사용하여 다음과 같이 AWS IoT 로그 항목을 모니터링할 수 있습니다.

CloudWatch 콘솔

1.    CloudWatch 콘솔을 엽니다.

2.    탐색 창의 로그에서 로그 그룹을 선택합니다.

3.    필터 텍스트 상자에 AWSIoTLogsV2를 입력한 다음 Enter 키를 누릅니다.
참고: AWS IoT Core에서 로깅을 성공적으로 활성화하기 전까지는 AWSIoTLogsV2 로그 그룹이 CloudWatch 콘솔에 표시되지 않습니다. 또한 로그 그룹이 표시되려면 AWS IoT 운영에서 로그 항목을 작성해야 합니다.

4.    AWSIoTLogsV2를 선택합니다.

5.    모두 검색을 선택합니다. 귀하의 계정에 대해 생성된 AWS IoT 로그의 전체 목록이 표시됩니다.

AWS CLI

다음 명령을 실행하여 AWS CLI에서 AWS IoT 로그를 가져옵니다.

aws logs filter-log-events --log-group-name AWSIotLogsV2 \
 --start-time YourStartTimeInMilliseconds

참고: --filter-pattern을 사용하여 특정 로그 속성을 검색할 수 있습니다. 자세한 내용은 필터 및 패턴 구문을 참조하세요.

‘logLevel’ 필드의 값은 이 대상에 대해 구성된 로깅 수준을 반영합니다. 다음 예에서는 대상에 대한 로깅 수준이 INFO로 구성되어 있습니다.

{
 "timestamp": "2017-08-10 15:37:23.476",
 "logLevel": "INFO",
 "traceId": "20b23f3f-d7f1-feae-169f-82263394fbdb",
 "accountId": "123456789012",
 "status": "Success",
 "eventType": "Connect",
 "protocol": "MQTT",
 "clientId": "abf27092886e49a8a5c1922749736453",
 "principalId": "145179c40e2219e18a909d896a5340b74cf97a39641beec2fc3eeafc5a123456",
 "sourceIp": "123.123.123.123",
 "sourcePort": 13490
}

참고: CLIENT_ID는 MQTT 또는 MQTT over WSS 프로토콜을 사용하여 AWS IoT Core에 연결할 때만 사용할 수 있습니다. HTTPS 프로토콜은 클라이언트 ID를 지원하지 않습니다. SOURCE_IP or PRINCIPAL_ID 대상 유형을 대신 사용하십시오.

로깅 수준 편집 또는 삭제

언제든지 기본 수준과 특정 리소스 모두에 대한 로깅 수준을 변경할 수 있습니다. 변경 사항이 반영되려면 최대 십 분이 소요될 수 있습니다.

AWS CLI에서, --target-type--target-name을 다음과 같이 편집하여 delete-v2-logging-level 명령을 실행하세요.

aws iot delete-v2-logging-level \
 --target-type "THING_GROUP | CLIENT_ID | SOURCE_IP | PRINCIPAL_ID" \
 --target-name YourTargetName

관련 정보

AWS IoT Device Management 엔드포인트 및 할당량

AWS IoT 모니터링

AWS IoT Device Management 요금

AWS 공식
AWS 공식업데이트됨 일 년 전