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 코어 장치에서 시스템 상태 원격 측정 데이터 수집

시스템 상태 원격 측정 데이터는 Greengrass 코어 장치의 중요 작업 성능을 모니터링하는 데 도움이 되는 진단 데이터입니다. Greengrass 코어의 원격 측정 에이전트는 로컬 원격 측정 데이터를 수집하여 고객 상호 작용 없이 Amazon EventBridge에 게시합니다. 코어 장치는 최선의 노력으로 EventBridge에 원격 측정 데이터를 게시합니다. 예를 들어, 코어 장치는 오프라인 상태에서 원격 측정 데이터를 제공하지 못할 수 있습니다.

참고

Amazon EventBridge는 애플리케이션을 Greengrass 코어 장치 및 배포 알림과 같은 다양한 소스의 데이터와 연결하는 데 사용할 수 있는 이벤트 버스 서비스입니다. 자세한 내용은 Amazon EventBridge 사용 설명서Amazon EventBridge란? 섹션을 참조하세요.

엣지 장치에서 원격 측정 데이터를 검색, 분석, 변환 및 보고하는 프로젝트와 애플리케이션을 만들 수 있습니다. 프로세스 엔지니어와 같은 도메인 전문가는 이러한 애플리케이션을 사용하여 플릿 상태에 대한 통찰력을 얻을 수 있습니다.

Greengrass 엣지 구성 요소가 제대로 작동하도록 하기 위해 AWS IoT Greengrass은(는) 개발 및 품질 개선 목적으로 데이터를 사용합니다. 또한 이 기능은 새롭고 향상된 엣지 기능을 알려주는 데도 도움이 됩니다. AWS IoT Greengrass은(는) 원격 측정 데이터를 최대 7일간 보존합니다.

이 기능은 AWS IoT Greengrass Core 소프트웨어 v1.11.0에서 사용할 수 있으며 기존 코어를 포함한 모든 Greengrass 코어에 기본적으로 활성화되어 있습니다. AWS IoT Greengrass Core 소프트웨어 v1.11.0 이상으로 업그레이드하는 즉시 자동으로 데이터를 받기 시작합니다.

게시된 원격 측정 데이터에 액세스하거나 관리하는 방법에 대한 자세한 내용은 원격 측정 데이터 수신 구독 단원을 참조하세요.

원격 측정 에이전트는 다음 시스템 지표를 수집하고 게시합니다.

원격 측정 지표
명칭 설명 소스

SystemMemUsage

운영 체제를 포함하여 Greengrass 코어 장치의 모든 애플리케이션에서 현재 사용 중인 메모리의 양입니다.

시스템

CpuUsage

운영 체제를 포함하여 Greengrass 코어 장치의 모든 애플리케이션에서 현재 사용 중인 CPU의 양입니다.

시스템

TotalNumberOfFDs

Greengrass 코어 장치의 운영 체제에 저장된 파일 디스크립터 수입니다. 하나의 파일 디스크립터는 열려 있는 파일 하나를 고유하게 식별합니다.

시스템

LambdaOutOfMemory

Lambda 함수에서 메모리 부족이 발생한 실행 횟수입니다.

시스템

DroppedMessageCount

AWS IoT Core 대상 메시지 중 삭제된 메시지 수.

GGCloudSpooler 시스템 구성 요소

LambdaTimeout

사용자 정의 Lambda 함수 실행에 대한 시간 초과 횟수입니다.

사용자 정의 Lambda 함수, AWS 클라우드 및 시스템

LambdaUngracefullyKilled

사용자 정의 Lambda 함수가 완료하지 못한 실행 횟수입니다.

사용자 정의 Lambda 함수, AWS 클라우드 및 시스템

LambdaError

사용자 정의 Lambda 함수에서 오류 로그를 작성하는 실행 횟수입니다.

사용자 정의 Lambda 함수, AWS 클라우드 및 시스템

BytesAppended

스트림 관리자에 추가된 데이터의 바이트 수입니다.

GGStreamManager 시스템 구성 요소

BytesUploadedToIoTAnalytics

스트림 관리자가 AWS IoT Analytics에서 채널로 내보내는 데이터의 바이트 수입니다.

GGStreamManager 시스템 구성 요소

BytesUploadedToKinesis

스트림 관리자가 Amazon Kinesis Data Streams의 스트림으로 내보내는 데이터의 바이트 수입니다.

GGStreamManager 시스템 구성 요소

BytesUploadedToIoTSiteWise

스트림 관리자가 AWS IoT SiteWise에서 에셋 속성으로 내보내는 데이터의 바이트 수입니다.

GGStreamManager 시스템 구성 요소

BytesUploadedToS3ExportTaskExecutor

스트림 관리자가 Amazon S3의 객체로 내보내는 데이터의 바이트 수입니다.

GGStreamManager 시스템 구성 요소

BytesUploadedToHTTP

스트림 관리자가 HTTP로 내보내는 데이터의 바이트 수입니다.

GGStreamManager 시스템 구성 요소

원격 측정 설정 구성

Greengrass 원격 측정은 다음 설정을 사용합니다.

  • 원격 측정 에이전트는 1시간마다 원격 측정 데이터를 집계합니다.

  • 원격 측정 에이전트는 24시간마다 원격 측정 메시지를 게시합니다.

참고

설정은 변경할 수 없습니다.

Greengrass 코어 장치에 대한 원격 측정 기능을 활성화하거나 비활성화할 수 있습니다. AWS IoT Greengrass은(는) 섀도우를 사용하여 원격 측정 구성을 관리합니다. 코어가 AWS IoT Core와(과) 연결되면 변경 내용이 즉시 적용됩니다.

원격 측정 에이전트는 서비스 품질(QoS) 수준이 0인 MQTT 프로토콜을 사용하여 데이터를 게시합니다. 즉, 전송을 확인하거나 게시 시도를 재시도하지 않습니다. 원격 측정 메시지는 AWS IoT Core 대상으로 하는 구독에 대한 다른 메시지와 MQTT 연결을 공유합니다.

데이터 링크 비용을 제외하고 코어에서 AWS IoT Core(으)로의 데이터 전송에는 요금이 부과되지 않습니다. 이는 에이전트가 AWS 예약된 주제에 게시하기 때문입니다. 하지만 사용 사례에 따라 데이터를 받거나 처리할 때 비용이 발생할 수 있습니다.

요구 사항

원격 측정 설정을 구성할 때는 다음 요구 사항이 적용됩니다.

  • AWS IoT Greengrass Core 소프트웨어 v1.11.0 이상을 사용해야 합니다.

    참고

    이전 버전을 실행 중이고 원격 측정 기능을 사용하지 않으려는 경우, 아무 작업도 수행할 필요가 없습니다.

  • 원격 측정 설정을 업데이트하기 전에 코어(사물) 섀도우를 업데이트하고 구성 API를 직접적으로 호출할 수 있는 IAM 권한을 제공해야 합니다.

    다음 예제 IAM 정책을 사용하면 특정 코어의 섀도우 및 런타임 구성을 관리할 수 있습니다.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowManageShadow", "Effect": "Allow", "Action": [ "iot:GetThingShadow", "iot:UpdateThingShadow", "iot:DeleteThingShadow", "iot:DescribeThing" ], "Resource": [ "arn:aws:iot:region:account-id:thing/core-name-*" ] }, { "Sid": "AllowManageRuntimeConfig", "Effect": "Allow", "Action": [ "greengrass:GetCoreRuntimeConfiguration", "greengrass:UpdateCoreRuntimeConfiguration" ], "Resource": [ "arn:aws:iot:region:account-id:thing/core-name" ] } ] }

    리소스에 대한 세부적 또는 조건부 액세스 권한을 부여할 수 있습니다(예: 와일드카드 * 이름 지정 스키마를 사용해). 자세한 내용은 IAM 사용 설명서IAM 정책 추가 및 제거를 참조하세요.

설정 원격 측정 구성(콘솔)

다음은 AWS IoT Greengrass 콘솔에서 Greengrass 코어의 원격 측정 설정을 업데이트하는 방법을 보여줍니다.

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

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

  3. 그룹 구성 페이지의 개요 섹션에서 Greengrass 코어를 선택합니다.

  4. 코어의 구성 페이지에서 원격 측정 탭을 선택합니다.

  5. 시스템 상태 원격 측정 섹션에서 구성을 선택합니다.

  6. 원격 측정 구성에서 원격 측정을 선택하여 원격 측정 상태를 활성화하거나 비활성화합니다.

    중요

    기본적으로 원격 측정 기능은 AWS IoT Greengrass Core 소프트웨어 v1.11.0 이상에서 활성화됩니다.

변경 사항이 런타임에 적용됩니다. 그룹을 배포할 필요가 없습니다.

원격 측정 설정 구성(CLI)

AWS IoT Greengrass API에서 TelemetryConfiguration 객체는 Greengrass 코어의 원격 측정 설정을 나타냅니다. 이 개체는 코어와 연결된 RuntimeConfiguration 객체의 일부입니다. AWS IoT Greengrass API, AWS CLI 또는 AWS SDK를 사용하여 Greengrass 원격 측정을 관리할 수 있습니다. 이 단원의 예제에서는 AWS CLI를 사용합니다.

원격 측정 설정을 확인하려면

다음 명령은 Greengrass 코어의 원격 측정 설정을 가져옵니다.

  • core-thing-name을 대상 코어의 이름으로 바꾸십시오.

    사물 이름을 가져오려면 get-core-defintion-version 명령을 사용합니다. 이 명령은 사물 이름이 포함된 사물의 ARN을 반환합니다.

aws greengrass get-thing-runtime-configuration --thing-name core-thing-name

이 명령은 JSON 응답에서 GetCoreRuntimeConfigurationResponse 객체를 반환합니다. 예:

{ "RuntimeConfiguration": { "TelemetryConfiguration": { "ConfigurationSyncStatus": "OutOfSync", "Telemetry": "On" } } }
원격 측정 설정을 구성하려면

다음 명령은 Greengrass 코어의 원격 측정 설정을 업데이트합니다.

  • core-thing-name을 대상 코어의 이름으로 바꾸십시오.

    사물 이름을 가져오려면 get-core-defintion-version 명령을 사용합니다. 이 명령은 사물 이름이 포함된 사물의 ARN을 반환합니다.

JSON expanded
aws greengrass update-thing-runtime-configuration --thing-name core-thing-name --telemetry-configuration '{ "RuntimeConfiguration": { "TelemetryConfiguration": { "ConfigurationSyncStatus": "InSync", "Telemetry": "Off" } } }
JSON single-line
aws greengrass update-thing-runtime-configuration --thing-name core-thing-name --telemetry-configuration "{\"TelemetryConfiguration\":{\"ConfigurationSyncStatus\":\"InSync\",\"Telemetry\":\"Off\"}}"

ConfigurationSyncStatus이(가) InSync인 경우, 원격 측정 설정 변경 사항이 적용된 것입니다. 변경 사항이 런타임에 적용됩니다. 그룹을 배포할 필요가 없습니다.

TelemetryConfiguration 객체

TelemetryConfiguration 객체에는 다음 속성이 있습니다.

ConfigurationSyncStatus

원격 측정 설정이 동기화되어 있는지 확인합니다. 이 속성을 변경할 수 없습니다.

유형: 문자열

유효한 값: InSync또는 OutOfSync

Telemetry

원격 측정 사용/사용 안 함을 설정합니다. 기본값은 On입니다.

유형: 문자열

유효한 값: On또는 Off

원격 측정 데이터 수신 구독

Amazon EventBridge에서 Greengrass 코어 장치에서 게시된 원격 측정 데이터를 처리하는 방법을 정의하는 규칙을 생성할 수 있습니다. EventBridge는 데이터를 수신하면 규칙에 정의된 대상 작업을 간접적으로 호출합니다. 예를 들어 알림을 보내거나, 이벤트 정보를 저장하거나, 교정 작업을 수행하거나, 기타 이벤트를 간접적으로 호출하는 이벤트 규칙을 생성할 수 있습니다.

원격 측정 이벤트

원격 측정 데이터를 포함하는 배포 상태 변경에 대한 이벤트에서 사용하는 형식은 다음과 같습니다.

{ "version": "0", "id": "f70f943b-9ae2-e7a5-fec4-4c22178a3e6a", "detail-type": "Greengrass Telemetry Data", "source": "aws.greengrass", "account": "123456789012", "time": "2020-07-28T20:45:53Z", "region": "us-west-1", "resources": [], "detail": { "ThingName": "CoolThing", "Schema": "2020-06-30", "ADP": [ { "TS": 123231546, "NS": "StreamManager", "M": [ { "N": "BytesAppended|BytesUploadedToKinesis", "Sum": 11, "U": "Bytes" } ] }, { "TS": 123231546, "NS": "StreamManager", "M": [ { "N": "BytesAppended|BytesUploadedToS3ExportTaskExecutor", "Sum": 11, "U": "Bytes" } ] }, { "TS": 123231546, "NS": "StreamManager", "M": [ { "N": "BytesAppended|BytesUploadedToHTTP", "Sum": 11, "U": "Bytes" } ] }, { "TS": 123231546, "NS": "StreamManager", "M": [ { "N": "BytesAppended|BytesUploadedToIoTAnalytics", "Sum": 11, "U": "Bytes" } ] }, { "TS": 123231546, "NS": "StreamManager", "M": [ { "N": "BytesAppended|BytesUploadedToIoTSiteWise", "Sum": 11, "U": "Bytes" } ] }, { "TS": 123231546, "NS": "arn:aws:lambda:us-west-1:123456789012:function:my-function", "M": [ { "N": "LambdaTimeout", "Sum": 15, "U": "Count" } ] }, { "TS": 123231546, "NS": "CloudSpooler", "M": [ { "N": "DroppedMessageCount", "Sum": 15, "U": "Count" } ] }, { "TS": 1593727692, "NS": "SystemMetrics", "M": [ { "N": "SystemMemUsage", "Sum": 11.23, "U": "Megabytes" }, { "N": "CpuUsage", "Sum": 35.63, "U": "Percent" }, { "N": "TotalNumberOfFDs", "Sum": 416, "U": "Count" } ] }, { "TS": 1593727692, "NS": "arn:aws:lambda:us-west-1:123456789012:function:my-function", "M": [ { "N": "LambdaOutOfMemory", "Sum": 12, "U": "Count" }, { "N": "LambdaUngracefullyKilled", "Sum": 100, "U": "Count" }, { "N": "LambdaError", "Sum": 7, "U": "Count" } ] } ] } }

ADP 배열에는 다음과 같은 속성을 가진 집계된 데이터 포인트 목록이 포함됩니다.

TS

필수 사항입니다. 데이터가 집계된 시기의 타임스탬프입니다.

NS

필수 사항입니다. 시스템의 네임스페이스

M

필수 사항입니다. 지표 목록 이 지표는 다음 속성을 포함하고 있습니다.

N

지표의 이름입니다.

Sum

집계된 지표 값입니다. 원격 측정 에이전트는 이전 총계에 새 값을 추가하므로 합계는 계속 증가하는 값입니다. 타임스탬프를 사용하여 특정 집계의 값을 찾을 수 있습니다. 예를 들어 가장 최근에 집계된 값을 찾으려면 타임스탬프가 지정된 최신 값에서 이전 타임스탬프 값을 빼십시오.

U

지표 값의 단위입니다.

ThingName

필수 사항입니다. 대상으로 하는 사물 장치의 이름입니다.

EventBridge 규칙 생성을 위한 사전 조건

AWS IoT Greengrass에 대한 EventBridge 규칙을 생성하기 전에 다음을 수행해야 합니다.

  • Eventbridge의 이벤트, 규칙, 대상을 숙지해야 합니다.

  • EventBridge 규칙에 의해 호출되는 대상을 생성하고 구성해야 합니다. 규칙은 Amazon Kinesis 스트림, AWS Lambda, 함수, Amazon SNS 주제, Amazon SQS 대기열 등 다양한 유형의 대상을 간접적으로 호출할 수 있습니다.

    EventBridge 규칙 및 관련 대상은 Greengrass 리소스를 생성한 AWS 리전에 있어야 합니다. 자세한 내용은 AWS 일반 참조서비스 엔드포인트 및 할당량을 참조하십시오.

자세한 내용은 Amazon EventBridge 사용 설명서Amazon EventBridge란?Amazon EventBridge 시작하기 섹션을 참조하세요.

원격 측정 데이터를 가져오기 위한 이벤트 규칙 생성(콘솔)

다음 단계에 따라 AWS Management Console을(를) 사용하여 Greengrass 코어에서 게시한 원격 측정 데이터를 수신하는 EventBridge 규칙을 생성할 수 있습니다. 이렇게 하면 웹 서버, 이메일 주소 및 기타 주제 구독자가 이벤트에 대응할 수 있습니다. 자세한 내용은 Amazon EventBridge User GuideCreating an EventBridge Rule That Triggers on an Event from an AWS Resource를 참조하세요.

  1. Amazon EventBridge 콘솔을 열고 규칙 생성을 선택합니다.

  2. 이름 및 설명에 규칙의 이름과 설명을 입력합니다.

  3. 이벤트 버스를 선택하고 선택한 이벤트 버스에서 규칙을 활성화합니다.

  4. 규칙 유형을 선택하고 이벤트 패턴이 있는 규칙을 선택합니다.

  5. Next(다음)를 선택합니다.

  6. 이벤트 소스(Event source)에서 AWS 이벤트 또는 EventBridge 파트너 이벤트(Events or EventBridge partner events)를 선택합니다.

  7. 샘플 이벤트에서 AWS이벤트를 선택하고 Greengrass 원격 측정 데이터를 선택합니다.

  8. 이벤트 패턴에서 다음을 선택합니다.

    1. 이벤트 소스에서 AWS 서비스를 선택합니다.

    2. AWS서비스에서 Greengrass를 선택합니다.

    3. 이벤트 유형에서 Greengrass 원격 측정 데이터를 선택합니다.

  9. Next(다음)를 선택합니다.

  10. 대상 1에서 AWS 서비스를 선택합니다.

  11. 대상 선택에서 SQS 대기열을 선택합니다.

  12. 대기열에서 함수를 선택합니다.

원격 측정 데이터(CLI) 를 가져오기 위한 이벤트 규칙 생성

다음 단계에 따라 AWS CLI을(를) 사용하여 Greengrass 코어에서 게시한 원격 측정 데이터를 수신하는 EventBridge 규칙을 생성할 수 있습니다. 이렇게 하면 웹 서버, 이메일 주소 및 기타 주제 구독자가 이벤트에 대응할 수 있습니다.

  1. 규칙을 생성합니다.

    • 사물 이름을 코어의 사물 이름으로바꾸십시오.

      사물 이름을 가져오려면 get-core-defintion-version 명령을 사용합니다. 이 명령은 사물 이름이 포함된 사물의 ARN을 반환합니다.

    aws events put-rule \ --name TestRule \ --event-pattern "{\"source\": [\"aws.greengrass\"], \"detail\": {\"ThingName\": [\"thing-name\"]}}"

    패턴에서 생략된 속성은 무시됩니다.

  2. 규칙 대상으로 주제를 추가합니다. 다음 예제는 Amazon SQS를 사용하지만 다른 대상 유형을 구성할 수 있습니다.

    • queue-arn을 Amazon SQS 대기열의 ARN으로대체하십시오.

    aws events put-targets \ --rule TestRule \ --targets "Id"="1","Arn"="queue-arn"
    참고

    Amazon EventBridge가 대상 주제를 간접적으로 호출하도록 허용하려면 대기열에 리소스 기반 정책을 추가해야 합니다. 자세한 내용은 Amazon EventBridge 사용 설명서Amazon SQS 권한 단원을 참조하세요.

자세한 내용은 Amazon EventBridge 사용 설명서에서 EventBridge의 이벤트 및 이벤트 패턴 섹션을 참조하세요.

AWS IoT Greengrass 원격 측정 문제 해결

다음 정보를 사용하면 AWS IoT Greengrass 원격 측정 구성 문제 해결에 도움이 됩니다.

오류: get-thing-runtime-configuration 명령을 실행한 후 응답에 “ConfigurationStatus”: “OutOfSync”가 포함됨

솔루션:

  • AWS IoT 장치 섀도우 서비스는 런타임 구성 업데이트를 처리하고 Greengrass 코어 장치에 업데이트를 전달하는 데 시간이 걸립니다. 잠시 기다렸다가 나중에 원격 측정 설정이 동기화되었는지 확인할 수 있습니다.

  • 코어 장치가 온라인 상태인지 확인합니다.

  • AWS IoT Core에서 Amazon CloudWatch Logs를 활성화하여 섀도우를 모니터링할 수 있습니다.

  • AWS IoT 지표를 사용하여 사물을 모니터링합니다.