AWS IoT Greengrass 로그를 사용하여 모니터링 - AWS IoT Greengrass

AWS IoT Greengrass Version 1 2023년 6월 30일에 수명 연장 단계에 들어갔습니다. AWS IoT Greengrass V1 관리형 정책에 대한 자세한 정보는 섹션을 참조하세요. 이 날짜 이후에는 기능, 개선 사항, 버그 수정 또는 보안 패치를 제공하는 업데이트가 AWS IoT Greengrass V1 릴리스되지 않습니다. 에서 실행되는 기기는 AWS IoT Greengrass V1 중단되지 않으며 계속 작동하고 클라우드에 연결됩니다. 새로운 기능이 크게 추가되고 추가 플랫폼에 대한 지원이 추가되는 으로 마이그레이션하는 AWS IoT Greengrass Version 2 것이 좋습니다.

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

AWS IoT Greengrass 로그를 사용하여 모니터링

AWS IoT Greengrass은(는) 클라우드 서비스와 AWS IoT Greengrass 코어 소프트웨어로 구성됩니다. AWS IoT GreengrassCore 소프트웨어는 Amazon CloudWatch 및 코어 디바이스의 로컬 파일 시스템에 로그를 기록할 수 있습니다. 코어에서 실행되는 Lambda 함수 및 커넥터는 로그 및 로컬 파일 시스템에 로그를 CloudWatch 기록할 수도 있습니다. 로그를 사용하여 이벤트를 모니터링하고 문제를 해결할 수 있습니다. 모든 AWS IoT Greengrass 로그 항목에는 타임스탬프, 로그 수준 및 이벤트에 대한 정보가 포함됩니다. 로깅 설정에 대한 변경 사항은 그룹을 배포한 후에 적용됩니다.

로깅은 그룹 수준에서 구성됩니다. Greengrass 그룹에 대한 로깅을 구성하는 방법을 보여주는 단계는 AWS IoT Greengrass의 로깅 구성 단원을 참조하십시오.

로그 액세스 CloudWatch

CloudWatch 로깅을 구성하면 Amazon CloudWatch 콘솔의 로그 페이지에서 로그를 볼 수 있습니다. AWS IoT Greengrass 로그의 로그 그룹은 다음과 같은 이름 지정 규칙을 사용합니다.

/aws/greengrass/GreengrassSystem/greengrass-system-component-name /aws/greengrass/Lambda/aws-region/account-id/lambda-function-name

각 로그 그룹에는 다음 명명 규칙을 사용하는 로그 스트림이 포함되어 있습니다.

date/account-id/greengrass-group-id/name-of-core-that-generated-log

CloudWatch 로그를 사용할 때는 다음 고려 사항이 적용됩니다.

  • 인터넷에 연결할 수 없는 경우 제한된 횟수의 재시도 횟수로 CloudWatch 로그가 Logs로 전송됩니다. 재시도 횟수가 모두 사용된 후에는 이벤트가 삭제됩니다.

  • 트랜잭션, 메모리 및 기타 제한이 적용됩니다. 자세한 설명은 로깅 제한 섹션을 참조하세요.

  • Greengrass 그룹 역할은 AWS IoT Greengrass 로그에 쓸 수 있도록 허용해야 합니다. CloudWatch 권한을 부여하려면 그룹 역할에 다음 인라인 정책을 포함시킵니다.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:*:*:*" ] } ] }
    참고

    로그 리소스에보다 세분화된 액세스 권한을 부여할 수 있습니다. 자세한 내용은 Amazon CloudWatch 사용 설명서의 CloudWatch 로그에 대한 ID 기반 정책 (IAM 정책) 사용을 참조하십시오.

    그룹 역할은 사용자가 생성하고 Greengrass 그룹에 연결하는 IAM 역할입니다. 콘솔이나 AWS IoT Greengrass API를 사용하여 그룹 역할을 관리할 수 있습니다.

     

    콘솔 사용
    1. AWS IoT 콘솔 탐색 창의 관리에서 Greengrass 디바이스를 확장한 다음 그룹(V1)을 선택합니다.

    2. 대상 그룹을 선택합니다.

    3. 보기 설정을 선택합니다. 그룹 역할에서 그룹 역할을 보거나, 연결하거나, 연결을 끊을 수 있습니다.

      그룹 역할을 연결하는 방법을 보여주는 단계는 그룹 역할을 참조하십시오.

     

    CLI 사용

     

    이러한 명령과 함께 사용할 그룹 ID를 가져오는 방법은 그룹 ID 가져오기 단원을 참조하십시오.

파일 시스템 로그 액세스

파일 시스템 로깅을 구성하면 로그 파일이 코어 디바이스에 greengrass-root/ggc/var/log 아래 저장됩니다. 다음은 상위 디렉터리 구조입니다.

greengrass-root/ggc/var/log - crash.log - system - log files for each Greengrass system component - user - region - account-id - log files generated by each user-defined Lambda function - aws - log files generated by each connector
참고

기본적으로 greengrass-root/greengrass 디렉터리입니다. 쓰기 디렉터리가 구성되어 있는 경우에는 로그가 이 디렉터리 아래 있습니다.

파일 시스템 로그 사용 시 다음 사항을 고려하십시오.

  • 파일 시스템에서 AWS IoT Greengrass 로그를 읽으려면 루트 권한이 필요합니다.

  • AWS IoT Greengrass은(는) 로그 데이터의 양이 구성 한도에 근접할 때 크기 기반의 교체 및 자동 정리를 지원합니다.

  • crash.log 파일은 파일 시스템 로그에서만 사용할 수 있습니다. 이 로그는 CloudWatch 로그에 기록되지 않습니다.

  • 디스크 사용 제한이 적용됩니다. 자세한 설명은 로깅 제한 섹션을 참조하세요.

참고

AWS IoT Greengrass 코어 소프트웨어 v1.0에 대한 로그는 greengrass-root/var/log 디렉터리 아래에 저장됩니다.

기본 로깅 구성

로깅 설정이 명시적으로 구성되어 있지 않으면 AWS IoT Greengrass은(는) 첫 번째 그룹 배포 후 다음과 같은 기본 로깅 구성을 사용합니다.

AWS IoT Greengrass 시스템 구성 요소
  • Type - FileSystem

  • 구성 요소 - GreengrassSystem

  • Level - INFO

  • 공간 - 128 KB

사용자 정의 Lambda 함수
  • Type - FileSystem

  • 구성 요소 - Lambda

  • Level - INFO

  • 공간 - 128 KB

참고

첫 번째 배포 전에는 배포된 사용자 정의 Lambda 함수가 없기 때문에 시스템 구성 요소 쓰기만 파일 시스템에 로깅됩니다.

AWS IoT Greengrass의 로깅 구성

AWS IoT 또는 AWS IoT Greengrass API를 사용하여 AWS IoT Greengrass 로깅을 구성할 수 있습니다.

참고

AWS IoT Greengrass로그에 로그를 쓸 수 CloudWatch 있으려면 그룹 역할이 필요한 CloudWatch 로그 작업을 허용해야 합니다.

로깅 구성(콘솔)

그룹의 설정 페이지에서 로깅을 구성할 수 있습니다.

  1. AWS IoT 콘솔 탐색 창의 관리에서 Greengrass 디바이스를 확장한 다음 그룹(V1)을 선택합니다.

  2. 로깅을 구성하려는 그룹을 선택합니다.

  3. 그룹 구성 페이지에서 로그를 선택합니다.

  4. 다음과 같이 로깅 위치를 선택합니다.

    • CloudWatch 로깅을 구성하려면 CloudWatch 로그 구성에서 편집을 선택합니다.

    • 파일 시스템 로깅을 구성하려면 로컬 로그 구성에서 편집을 선택합니다.

    한 위치 또는 두 위치 모두에 대한 로깅을 구성할 수 있습니다.

  5. 로그 편집 구성 모달에서 Greengrass 시스템 로그 수준 또는 사용자 Lambda 함수 로그 수준을 선택합니다. 한 구성 요소 또는 두 구성 요소를 모두 선택할 수 있습니다.

  6. 로깅하려는 최저 수준의 이벤트를 선택합니다. 이 임계값보다 낮은 이벤트는 필터링되어 저장되지 않습니다.

  7. 저장을 선택합니다. 변경 사항은 그룹을 배포한 후에 적용됩니다.

로깅 구성(API)

AWS IoT Greengrass 로거 API를 사용하여 프로그래밍 방식으로 로깅을 구성할 수 있습니다. 예를 들어, CreateLoggerDefinition 작업을 사용하여 다음 구문을 사용하는 LoggerDefinitionVersion 페이로드를 기반으로 로거 정의를 생성합니다.

{ "Loggers": [ { "Id": "string", "Type": "FileSystem|AWSCloudWatch", "Component": "GreengrassSystem|Lambda", "Level": "DEBUG|INFO|WARN|ERROR|FATAL", "Space": "integer" }, { "Id": "string", ... } ] }

LoggerDefinitionVersion은 다음 속성이 있는 하나 이상의 Logger 객체 배열입니다.

Id

로거의 식별자입니다.

Type

로그 이벤트의 스토리지 메커니즘입니다. 를 사용하면 로그 이벤트가 CloudWatch Logs로 전송됩니다. AWSCloudWatch FileSystem이 사용되면 로그 이벤트는 로컬 파일 시스템에 저장됩니다.

유효값: AWSCloudWatch, FileSystem

Component

로그 이벤트의 원본입니다. GreengrassSystem이 사용되면 Greengrass 시스템 구성 요소의 이벤트가 로깅됩니다. Lambda가 사용되면 사용자 정의 Lambda 함수의 이벤트가 로깅됩니다.

유효값: GreengrassSystem, Lambda

Level

로그 수준 임계값입니다. 이 임계값보다 낮은 로그 이벤트는 필터링되어 저장되지 않습니다.

유효한 값: DEBUG, INFO(권장), WARN, ERROR, FATAL

Space

로그를 저장하는 데 사용할 로컬 스토리지의 최대 용량(단위: KB)입니다. 이 필드는 TypeFileSystem으로 설정된 경우에만 적용됩니다.

구성 예

다음 LoggerDefinitionVersion 예제는 다음과 같은 작업을 수행하는 로깅 구성을 지정합니다.

  • AWS IoT Greengrass 시스템 구성 요소에 대한 파일 시스템 ERROR 및 그 이상 로깅을 켭니다.

  • 사용자 정의 Lambda 함수에 대한 파일 시스템 INFO 및 그 이상 로깅을 켭니다.

  • 사용자 정의 Lambda 함수에 대한 CloudWatch INFO (또는 그 이상) 로깅을 활성화합니다.

{ "Name": "LoggingExample", "InitialVersion": { "Loggers": [ { "Id": "1", "Component": "GreengrassSystem", "Level": "ERROR", "Space": 10240, "Type": "FileSystem" }, { "Id": "2", "Component": "Lambda", "Level": "INFO", "Space": 10240, "Type": "FileSystem" }, { "Id": "3", "Component": "Lambda", "Level": "INFO", "Type": "AWSCloudWatch" } ] } }

로거 정의 버전을 생성한 후에는 그룹을 배포하기 전에 해당 버전 ARN을 사용하여 그룹 버전을 생성할 수 있습니다.

로깅 제한

AWS IoT Greengrass에는 다음과 같은 로깅 제한이 있습니다.

초당 트랜잭션 수

CloudWatch 로깅이 활성화되면 로깅 구성 요소가 이벤트를 전송하기 전에 로컬로 이벤트를 일괄 처리하므로 로그 스트림당 초당 5개 이상의 요청 속도로 로깅할 수 있습니다. CloudWatch

메모리

Lambda 함수가 로그를 전송하도록 구성되어 CloudWatch 있고 Lambda 함수가 초당 5MB를 초과하여 장기간 로깅하는 경우 AWS IoT Greengrass 내부 처리 파이프라인이 결국 꽉 차게 됩니다. 이론상 최악의 경우는 Lambda 함수 1개당 6MB입니다.

클록 스큐

CloudWatch 로깅이 활성화되면 로깅 구성 요소는 일반 서명 버전 4 서명 프로세스를 CloudWatch 사용하여 요청에 서명합니다. AWS IoT Greengrass 코어 디바이스에서 시스템 시간이 15분 이상 동기화되지 않을 경우, 해당 요청은 거부됩니다.

디스크 사용량

다음 공식을 사용하면 로깅 시 총 디스크 사용량의 최대값을 계산할 수 있습니다.

greengrass-system-component-space * 8 // 7 if automatic IP detection is disabled + 128KB // the internal log for the local logging component + lambda-space * lambda-count // different versions of a Lambda function are treated as one

위치:

greengrass-system-component-space

AWS IoT Greengrass 시스템 구성 요소 로그를 저장할 로컬 스토리지의 최대 용량입니다.

lambda-space

Lambda 함수 로그를 저장할 로컬 스토리지의 최대 용량입니다.

lambda-count

배포된 Lambda 함수의 수입니다.

로그 손실

AWS IoT Greengrass코어 디바이스가 로그인만 하도록 CloudWatch 구성되어 있고 인터넷에 연결되어 있지 않으면 현재 메모리에 있는 로그를 검색할 방법이 없습니다.

Lambda 함수가 종료되면 (예: 배포 중) 몇 초 분량의 로그가 기록되지 않습니다. CloudWatch

CloudTrail 로그

AWS IoT Greengrass는 AWS IoT Greengrass에서 사용자, 역할, 또는 AWS 서비스가 수행한 작업에 대한 레코드를 제공하는 서비스인 AWS CloudTrail와 함께 실행됩니다. 자세한 내용은 AWS CloudTrail을 사용하여 AWS IoT Greengrass API 직접 호출 로깅을(를) 참조하세요.