CloudWatch 지표 커넥터 - AWS IoT Greengrass

다음에 대한 설명서를 보고 있습니다.AWS IoT Greengrass Version 1.AWS IoT Greengrass Version 2의 최신 주요 버전입니다AWS IoT Greengrass. 사용에 관한 자세한 내용은 단원을 참조하십시오.AWS IoT Greengrass V2에 대한 자세한 내용은AWS IoT Greengrass Version 2개발자 안내서.

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

CloudWatch 지표 커넥터

CloudWatch 지표커넥터에서 Greengrass 디바이스의 사용자 지정 지표를 Amazon CloudWatch 에 게시합니다. 이 커넥터는 CloudWatch 지표를 게시하기 위한 중앙 집중식 인프라를 제공하며, 이러한 지표를 사용하여 Greengrass 코어 환경을 모니터링 및 분석하고 로컬 이벤트를 작업할 수 있습니다. 자세한 내용은 단원을 참조하십시오.Amazon CloudWatch 지표 사용Amazon CloudWatch 사용 설명서.

이 커넥터는 지표 데이터를 MQTT 메시지로 수신합니다. 이 커넥터는 동일한 네임스페이스에 있는 지표를 배치 처리하고 정기적으로 CloudWatch 에 게시합니다.

이 커넥터에는 다음과 같은 버전이 있습니다.

버전

ARN

4

arn:aws:greengrass:region::/connectors/CloudWatchMetrics/versions/4

3

arn:aws:greengrass:region::/connectors/CloudWatchMetrics/versions/3

2

arn:aws:greengrass:region::/connectors/CloudWatchMetrics/versions/2

1

arn:aws:greengrass:region::/connectors/CloudWatchMetrics/versions/1

버전 변경 사항에 대한 자세한 내용은 Changelog를 참조하십시오.

Requirements

이 커넥터에는 다음과 같은 요구 사항이 있습니다.

Version 3 - 4
  • AWS IoT Greengrass 코어 소프트웨어 v1.9.3 이상.

  • Python코어 디바이스에 설치되고 PATH 환경 변수에 추가된 Python 버전 3.7입니다.

    참고

    파이썬 3.8을 사용하려면 설치된 파이썬 3.8 바이너리에 기본 파이썬 3.7 설치 폴더에서 심볼릭 링크를 만들려면 다음 명령을 실행합니다.

    sudo ln -s path-to-python-3.8/python3.8 /usr/bin/python3.7

    이렇게 하면 AWS IoT Greengrass에 대한 Python 요구 사항을 충족하도록 디바이스가 구성됩니다.

  • Greengrass 그룹 역할를 허용하도록 구성된cloudwatch:PutMetricData다음 예제에 표시된 대로 작업을 수행합니다.AWS Identity and Access Management(IAM) 정책입니다.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1528133056761", "Action": [ "cloudwatch:PutMetricData" ], "Effect": "Allow", "Resource": "*" } ] }

    그룹 역할 요구 사항의 경우 필수 권한을 부여하도록 역할을 구성하고 역할이 그룹에 추가되었는지 확인해야 합니다. 자세한 내용은 Greengrass 그룹 역할 관리(콘솔) 또는 Greengrass 그룹 역할 관리(CLI) 섹션을 참조하세요.

    CloudWatch 권한에 대한 자세한 내용은 단원을 참조하십시오.Amazon CloudWatch 권한 참조IAM 사용 설명서.

Versions 1 - 2
  • AWS IoT Greengrass코어 소프트웨어 v1.7 이상.

  • Python코어 디바이스에 설치되고 PATH 환경 변수에 추가된 버전 2.7입니다.

  • Greengrass 그룹 역할를 허용하도록 구성된cloudwatch:PutMetricData다음 예제에 표시된 대로 작업을 수행합니다.AWS Identity and Access Management(IAM) 정책입니다.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1528133056761", "Action": [ "cloudwatch:PutMetricData" ], "Effect": "Allow", "Resource": "*" } ] }

    그룹 역할 요구 사항의 경우 필수 권한을 부여하도록 역할을 구성하고 역할이 그룹에 추가되었는지 확인해야 합니다. 자세한 내용은 Greengrass 그룹 역할 관리(콘솔) 또는 Greengrass 그룹 역할 관리(CLI) 섹션을 참조하세요.

    CloudWatch 권한에 대한 자세한 내용은 단원을 참조하십시오.Amazon CloudWatch 권한 참조IAM 사용 설명서.

커넥터 매개변수

이 커넥터는 다음 파라미터를 제공합니다.

Version 4
PublishInterval

지정된 네임스페이스에 대해 일괄 처리된 지표를 게시하기 전에 대기해야 하는 최대 시간(초). 최대값은 900입니다. 지표가 (배치 처리 없이) 수신될 때 지표를 게시하도록 커넥터를 구성하려면 0을 지정합니다.

이 커넥터는 동일한 네임스페이스에서 지표 20개를 수신한 후 또는 지정한 간격이 경과한 후 CloudWatch 에 게시합니다.

참고

이 커넥터는 게시 이벤트의 순서를 보장하지 않습니다.

의 표시 이름AWS IoT콘솔: 게시 간격

필수 사항:true

형식: string

유효한 값: 0 - 900

유효한 패턴[0-9]|[1-9]\d|[1-9]\d\d|900

PublishRegion

이AWS 리전을 클릭하여 CloudWatch 지표를 에 게시합니다. 이 값은 기본 Greengrass 지표 리전을 재정의합니다. 교차 리전 지표를 게시하는 경우에만 필요합니다.

의 표시 이름AWS IoT콘솔: 게시 영역

: 필수false

형식: string

유효한 패턴^$|([a-z]{2}-[a-z]+-\d{1})

MemorySize

커넥터에 할당할 메모리(KB).

의 표시 이름AWS IoT콘솔: 메모리 크기

: 필수true

형식: string

유효한 패턴^[0-9]+$

MaxMetricsToRetain

새 지표로 바뀌기 전에 메모리에 저장할 모든 네임스페이스 간 최대 지표 수. 최소값은 2000입니다.

이러한 제한은 인터넷에 연결되어 있지 않거나 커넥터가 나중에 게시할 지표를 버퍼링하기 시작할 때 적용됩니다. 버퍼가 꽉 차면 가장 오래된 지표가 새 지표로 바뀝니다. 지정된 네임스페이스의 지표는 동일한 네임스페이스의 지표로만 바뀝니다.

참고

커넥터에 대한 호스트 프로세스가 중단되면 지표가 저장되지 않습니다. 예를 들어, 그룹 배포 중 또는 디바이스가 다시 시작될 때 중단이 발생할 수 있습니다.

의 표시 이름AWS IoT콘솔: 보존할 최대 지표

: 필수true

형식: string

유효한 패턴^([2-9]\d{3}|[1-9]\d{4,})$

IsolationMode

이 커넥터의 컨테이너화 모드입니다. 기본값은 GreengrassContainer이며 이는 커넥터가 AWS IoT Greengrass 컨테이너 내부의 격리된 런타임 환경에서 실행됨을 의미합니다.

참고

그룹의 기본 컨테이너화 설정은 커넥터에는 적용되지 않습니다.

의 표시 이름AWS IoT콘솔: 컨테이너 격리 모드

: 필수false

형식: string

유효한 값: GreengrassContainer 또는 NoContainer

유효한 패턴^NoContainer$|^GreengrassContainer$

Versions 1 - 3
PublishInterval

지정된 네임스페이스에 대해 일괄 처리된 지표를 게시하기 전에 대기해야 하는 최대 시간(초). 최대값은 900입니다. 지표가 (배치 처리 없이) 수신될 때 지표를 게시하도록 커넥터를 구성하려면 0을 지정합니다.

이 커넥터는 동일한 네임스페이스에서 지표 20개를 수신한 후 또는 지정한 간격이 경과한 후 CloudWatch 에 게시합니다.

참고

이 커넥터는 게시 이벤트의 순서를 보장하지 않습니다.

의 표시 이름AWS IoT콘솔: 게시 간격

: 필수true

형식: string

유효한 값: 0 - 900

유효한 패턴[0-9]|[1-9]\d|[1-9]\d\d|900

PublishRegion

이AWS 리전을 클릭하여 CloudWatch 지표를 에 게시합니다. 이 값은 기본 Greengrass 지표 리전을 재정의합니다. 교차 리전 지표를 게시하는 경우에만 필요합니다.

의 표시 이름AWS IoT콘솔: 게시 영역

: 필수false

형식: string

유효한 패턴^$|([a-z]{2}-[a-z]+-\d{1})

MemorySize

커넥터에 할당할 메모리(KB).

의 표시 이름AWS IoT콘솔: 메모리 크기

: 필수true

형식: string

유효한 패턴^[0-9]+$

MaxMetricsToRetain

새 지표로 바뀌기 전에 메모리에 저장할 모든 네임스페이스 간 최대 지표 수. 최소값은 2000입니다.

이러한 제한은 인터넷에 연결되어 있지 않거나 커넥터가 나중에 게시할 지표를 버퍼링하기 시작할 때 적용됩니다. 버퍼가 꽉 차면 가장 오래된 지표가 새 지표로 바뀝니다. 지정된 네임스페이스의 지표는 동일한 네임스페이스의 지표로만 바뀝니다.

참고

커넥터에 대한 호스트 프로세스가 중단되면 지표가 저장되지 않습니다. 예를 들어, 그룹 배포 중 또는 디바이스가 다시 시작될 때 중단이 발생할 수 있습니다.

의 표시 이름AWS IoT콘솔: 보존할 최대 지표

: 필수true

형식: string

유효한 패턴^([2-9]\d{3}|[1-9]\d{4,})$

커넥터 만들기 예(AWS CLI)

다음 CLI 명령은ConnectorDefinitionCloudWatch 지표 커넥터가 포함된 초기 버전을 사용하여 업그레이드되어야 합니다.

aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{ "Connectors": [ { "Id": "MyCloudWatchMetricsConnector", "ConnectorArn": "arn:aws:greengrass:region::/connectors/CloudWatchMetrics/versions/4", "Parameters": { "PublishInterval" : "600", "PublishRegion" : "us-west-2", "MemorySize" : "16", "MaxMetricsToRetain" : "2500", "IsolationMode" : "GreengrassContainer" } } ] }'

에서AWS IoT Greengrass콘솔에서 커넥터를 추가할 수 있습니다.커넥터페이지로 이동합니다. 자세한 정보는 Greengrass 커넥터 시작하기(콘솔)을 참조하십시오.

입력 데이터

이 커넥터는 MQTT 주제에 대한 지표를 수락하고 이 지표를 CloudWatch 에 게시합니다. 입력 메시지는 JSON 형식이어야 합니다.

구독의 주제 필터

cloudwatch/metric/put

메시지 속성
request

이 메시지에는 지표에 대한 정보가 포함되어 있습니다.

요청 객체에는 CloudWatch Account 에 게시할 지표 데이터가 포함되어 있습니다. 지표 값은 PutMetricData API의 사양을 충족해야 합니다. namespace, metricData.metricNamemetricData.value 속성만 필요합니다.

: 필수true

Type:object다음 속성이 포함된 입니다.

namespace

이 요청에서 지표 데이터에 대해 사용자 정의된 네임스페이스 CloudWatch 는 지표 데이터 요소에 대한 컨테이너로 네임스페이스를 사용합니다.

참고

예약 문자열로 시작하는 네임스페이스는 지정할 수 없습니다.AWS/.

: 필수true

형식: string

유효한 패턴[^:].*

metricData

지표에 대한 데이터.

: 필수true

Type:object다음 속성이 포함된 입니다.

metricName

측정치의 이름입니다.

: 필수true

형식: string

dimensions

지표와 연결된 차원. 차원은 지표와 해당 데이터에 대한 추가 정보를 제공합니다. 지표는 최대 10개 차원을 정의할 수 있습니다.

: 필수false

Type:array는 다음과 같은 속성을 포함하는 차원 객체의

name

차원 이름입니다.

: 필수false

형식: string

value

차원 값입니다.

: 필수false

형식: string

timestamp

지표 데이터가 수신된 시간 (이후 초 단위로 표시됨)Jan 1, 1970 00:00:00 UTC. 이 값을 생략하면 커넥터는 메시지를 수신한 시간을 사용합니다.

: 필수false

형식: timestamp

참고

단일 Lambda 함수 내에서 여러 메트릭을 보낼 경우 각 메트릭에 대해 별도로 타임스탬프를 검색하는 것이 좋습니다. 변수를 사용하여 타임 스탬프를 저장하지 마십시오.

value

지표에 대한 값.

참고

CloudWatch 는 너무 작거나 큰 값을 거부합니다. 값의 범위는 8.515920e-109 ~ 1.174271e+108(기본 10) 또는 2e-360 ~ 2e360(기본 2)이어야 합니다. 특수 값(예: NaN, +Infinity, -Infinity)은 지원되지 않습니다.

: 필수true

형식: double

unit

측정치의 단위입니다.

: 필수false

형식: string

유효한 값: Seconds, Microseconds, Milliseconds, Bytes, Kilobytes, Megabytes, Gigabytes, Terabytes, Bits, Kilobits, Megabits, Gigabits, Terabits, Percent, Count, Bytes/Second, Kilobytes/Second, Megabytes/Second, Gigabytes/Second, Terabytes/Second, Bits/Second, Kilobits/Second, Megabits/Second, Gigabits/Second, Terabits/Second, Count/Second, None

제한

CloudWatch 에서 부과되는 모든 제한PutMetricData이 커넥터를 사용할 때는 API가 지표에 적용됩니다. 다음은 중요한 제한 사항입니다.

  • API 페이로드에 대한 40KB 제한

  • API 요청당 20개 지표

  • PutMetricData API에 대한 150개의 초당 트랜잭션(TPS)

자세한 내용은 단원을 참조하십시오.CloudWatch 제한Amazon CloudWatch 사용 설명서.

입력 예
{ "request": { "namespace": "Greengrass", "metricData": { "metricName": "latency", "dimensions": [ { "name": "hostname", "value": "test_hostname" } ], "timestamp": 1539027324, "value": 123.0, "unit": "Seconds" } } }

출력 데이터

이 커넥터는 상태 정보를 MQTT 주제에 출력 데이터로 게시합니다.

구독의 주제 필터

cloudwatch/metric/put/status

출력 예: Success

응답에는 지표 데이터의 네임스페이스 및RequestId필드를 사용하여 CloudWatch 응답에서 가져옵니다.

{ "response": { "cloudwatch_rid":"70573243-d723-11e8-b095-75ff2EXAMPLE", "namespace": "Greengrass", "status":"success" } }
출력 예: 실패
{ "response" : { "namespace": "Greengrass", "error": "InvalidInputException", "error_message":"cw metric is invalid", "status":"fail" } }
참고

커넥터에서 재시도 가능한 오류 (예: 연결 오류) 를 감지하면 다음 배치에서 게시를 다시 시도합니다.

사용 예

다음 상위 수준 단계를 사용하여 커넥터를 사용해 보는 데 이용할 수 있는 예제 Python 3.7 Lambda 함수를 설정합니다.

참고
  • 다른 Python 런타임을 사용하는 경우 Python 3.7으로 심볼 링크를 만들 수 있습니다.

  • 커넥터 시작하기(콘솔)커넥터 시작하기(CLI) 주제에는 예제 Twilio 알림 커넥터를 구성하고 배포하는 방법을 보여주는 자세한 단계가 포함되어 있습니다.

  1. 커넥터에 대한 요구 사항을 충족하는지 확인합니다.

    그룹 역할 요구 사항의 경우 필수 권한을 부여하도록 역할을 구성하고 역할이 그룹에 추가되었는지 확인해야 합니다. 자세한 내용은 Greengrass 그룹 역할 관리(콘솔) 또는 Greengrass 그룹 역할 관리(CLI) 섹션을 참조하세요.

  2. 입력 데이터를 커넥터로 보내는 함수를 생성하고 게시합니다.

    예제 코드를 PY 파일로 저장합니다. 를 다운로드하고 압축을 해제합니다.AWS IoT GreengrassPython용 KK. 그런 다음 루트 수준에서 PY 파일과 greengrasssdk 폴더를 포함하는 zip 패키지를 생성합니다. 이 zip 패키지는 에 업로드하는 배포 패키지입니다.AWS Lambda.

    Python 3.7 Lambda 함수를 생성한 후 함수 버전을 게시하고 별칭을 만듭니다.

  3. Greengrass 그룹을 구성합니다.

    1. 별칭으로 Lambda 함수를 추가합니다 (권장). Lambda 수명 주기를 수명이 긴 함수 (또는"Pinned": trueCLI에서).

    2. 커넥터를 추가하고 해당 파라미터를 구성합니다.

    3. 커넥터가 입력 데이터를 수신하고 지원되는 주제 필터에서 출력 데이터를 전송할 수 있도록 허용하는 구독을 추가합니다.

      • Lambda 함수를 소스로, 커넥터를 대상으로 설정하고 지원되는 입력 주제 필터를 사용합니다.

      • 커넥터를 소스로, AWS IoT Core를 대상으로 설정하고 지원되는 출력 주제 필터를 사용합니다. 이 구독을 사용하여 에서 상태 메시지를 확인합니다.AWS IoT콘솔입니다.

  4. 그룹을 배포합니다.

  5. 에서AWS IoT콘솔의테스트페이지에서 출력 데이터 주제를 구독하여 커넥터의 상태 메시지를 확인합니다. 예제 Lambda 함수는 수명이 긴 함수로 그룹이 배포된 직후 메시지 전송을 시작합니다.

    테스트를 마치면 Lambda 수명 주기를 온디맨드 함수 (또는"Pinned": false그리고 그룹을 배포합니다. 이렇게 하면 함수가 메시지 전송을 중지합니다.

Example

다음 예제 Lambda 함수는 입력 메시지를 커넥터로 보냅니다.

import greengrasssdk import time import json iot_client = greengrasssdk.client('iot-data') send_topic = 'cloudwatch/metric/put' def create_request_with_all_fields(): return { "request": { "namespace": "Greengrass_CW_Connector", "metricData": { "metricName": "Count1", "dimensions": [ { "name": "test", "value": "test" } ], "value": 1, "unit": "Seconds", "timestamp": time.time() } } } def publish_basic_message(): messageToPublish = create_request_with_all_fields() print("Message To Publish: ", messageToPublish) iot_client.publish(topic=send_topic, payload=json.dumps(messageToPublish)) publish_basic_message() def lambda_handler(event, context): return

Licenses

CloudWatch 지표 커넥터에는 다음 타사 소프트웨어/라이선스가 포함되어 있습니다.

이 커넥터는 Greengrass 코어 소프트웨어 라이선스 계약에 따라 릴리스됩니다.

Changelog

다음 표에서는 커넥터의 각 커넥터의 버전 변경사항에 대해 설명합니다.

버전

변경

4

커넥터에 대한 컨테이너화 모드를 구성하는 IsolationMode 파라미터가 추가되었습니다.

3

런타임 요구 사항을 변경하는 Python 3.7로 런Lambda 임을 업그레이드했습니다.

2

과도한 로깅을 줄이도록 고정합니다.

1

최초 릴리스.

Greengrass 그룹에는 한 번에 커넥터의 버전 하나만 포함될 수 있습니다. 커넥터 버전 업그레이드에 대한 자세한 내용은 커넥터 버전 업그레이드 단원을 참조하십시오.

다음 사항도 참조하세요.