

Amazon Monitron은 더 이상 신규 고객에게 공개되지 않습니다. 기존 고객은 정상적으로 서비스를 계속 이용할 수 있습니다. Amazon Monitron과 유사한 기능은 [블로그 게시물](https://aws.amazon.com/blogs/machine-learning/maintain-access-and-consider-alternatives-for-amazon-monitron)을 참조하세요.

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

# Amazon Monitron Kinesis 데이터 내보내기 v2
<a name="monitron-kinesis-export-v2"></a>

 Amazon Monitron에서 들어오는 측정 데이터와 해당 추론 결과를 내보내고 실시간 분석을 수행할 수 있습니다. 데이터 내보내기는 라이브 데이터를 Kinesis로 스트리밍합니다.

**Topics**
+ [Kinesis 스트림으로 데이터 내보내기](#exporting-stream-procedure-v2)
+ [라이브 데이터 내보내기 설정 편집](#edit-live-export-v2)
+ [라이브 데이터 내보내기 중지](#stop-kinesis-export-v2)
+ [데이터 내보내기 오류 보기](#viewing-kinesis-export-errors-v2)
+ [Kinesis 스트림에서 서버 측 암호화 사용](#data-export-server-side-encryption-v2)
+ [Amazon CloudWatch Logs를 사용한 모니터링](data-export-cloudwatch-logs-v2.md)
+ [Amazon S3에서 데이터 저장하기](kinesis-store-S3-v2.md)
+ [Lambda를 사용한 데이터 처리](data-export-lambda-v2.md)
+ [v2 데이터 내보내기 스키마의 이해](data-export-schema-v2.md)
+ [Kinesis v1에서 v2로 마이그레이션](migration-from-v1-to-v2.md)

## Kinesis 스트림으로 데이터 내보내기
<a name="exporting-stream-procedure-v2"></a>

1. 프로젝트 메인 페이지의 페이지 하단 오른쪽에서 **라이브 데이터 내보내기 시작**을 선택합니다.

1. **Kinesis 데이터 스트림 선택**에서 다음 중 하나를 수행합니다.
   + 검색 칸에 기존 스트림의 이름을 입력합니다. 그런 다음 5단계로 건너뜁니다.
   +  **새 데이터 스트림 생성**을 선택합니다.

1. **데이터 스트림 만들기** 페이지의 **데이터 스트림 구성**에서 데이터 스트림 이름을 입력합니다.

1. 데이터 스트림 용량에서 용량 모드를 선택합니다.
   + 데이터 스트림의 처리량 요구 사항을 예측할 수 없고 가변적이면 **온디맨드**를 선택하세요.
   + 데이터 스트림의 처리량 요구 사항을 안정적으로 추정할 수 있다면 **프로비저닝됨**을 선택하세요. 그런 다음 프로비저닝된 샤드에서 만들려는 샤드 수를 입력하거나 **샤드 추정기**를 선택합니다.

1. **데이터 스트림 생성**을 선택합니다.

## 라이브 데이터 내보내기 설정 편집
<a name="edit-live-export-v2"></a>

라이브 데이터 내보내기 설정을 편집하려면 다음과 같이 하세요.

1. Amazon Monitron 콘솔을 엽니다.

1. 탐색 창에서 **프로젝트**를 선택합니다.

1. 프로젝트가 여러 개 있는 경우 내보내기 설정을 편집하려는 프로젝트를 선택합니다.

1. 프로젝트 기본 페이지의 **라이브 데이터 내보내기**에 있는 **작업** 드롭다운 메뉴에서 **라이브 데이터 내보내기 설정 편집**을 선택합니다.

## 라이브 데이터 내보내기 중지
<a name="stop-kinesis-export-v2"></a>

1. Amazon Monitron 콘솔을 엽니다.

1. 탐색 창에서 **프로젝트**를 선택합니다.

1. 프로젝트가 여러 개 있는 경우 내보내기 설정을 편집하려는 프로젝트를 선택합니다.

1. 프로젝트 기본 페이지의 **라이브 데이터 내보내기**에 있는 **작업** 드롭다운 메뉴에서 **라이브 데이터 내보내기 중지**를 선택합니다.

1. 팝업 창에서 **중지**를 선택합니다.

## 데이터 내보내기 오류 보기
<a name="viewing-kinesis-export-errors-v2"></a>

CloudWatch Logs 인터페이스에서 오류 메시지를 보려면 다음과 같이 하세요.
+ Amazon Monitron 콘솔의 프로젝트 메인 페이지에 있는 **라이브 데이터 내보내기**에서 **CloudWatch 로그 그룹**을 선택합니다.

## Kinesis 스트림에서 서버 측 암호화 사용
<a name="data-export-server-side-encryption-v2"></a>

Kinesis 데이터 내보내기를 설정하기 전에 Kinesis 스트림에 대해 서버 측 암호화를 활성화할 수 있습니다. 그러나 Kinesis 데이터 내보내기를 설정한 후 서버 측 암호화를 활성화하면 Amazon Monitron은 스트림에 게시할 수 없습니다. 이는 Amazon Monitron이 Kinesis로 전송된 데이터를 암호화할 수 있도록 [kms:GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)를 호출할 권한이 없기 때문입니다.

이 문제를 해결하려면 구성을 변경하지 말고 [라이브 데이터 내보내기 설정 편집](#edit-live-export-v2)의 지침을 따르세요. 이렇게 하면 설정한 암호화가 내보내기 구성과 연결됩니다.

# Amazon CloudWatch Logs를 사용한 모니터링
<a name="data-export-cloudwatch-logs-v2"></a>

Amazon CloudWatch Logs를 사용하여 Amazon Monitron 라이브 데이터 내보내기를 모니터링할 수 있습니다. 측정값 내보내기에 실패하면 Amazon Monitron은 CloudWatch Logs에 로그 이벤트를 전송합니다. 또한 오류 로그에 지표 필터를 설정하여 지표를 생성하고 경보를 설정할 수 있습니다. 특정 임계값을 설정하고 해당 임계값이 충족될 때 알림을 전송하거나 조치를 취할 수 있습니다. 자세한 내용은 [CloudWatch 사용 설명서](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html)를 참조하세요.

Amazon Monitron은 /aws/monitron/data-export/\$1HASH\$1ID\$1 로그 그룹에 로그 이벤트를 보냅니다.

로그 이벤트의 JSON 형식은 다음과 같습니다.

```
{
    "assetName": "string",
    "destination": "string",
    "errorCode": "string",
    "errorMessage": "string",
    "eventId": "string",
    "eventType": "string",
    "positionName": "string",
    "projectName": "string",
    "projectId": "string",
    "sensorId": "string",
    "gatewayId": "string",
    "siteName": "string",
    "timestamp": "string"
}
```

assetName  
+ 앱에 표시되는 자산 이름
+ 유형: 문자열

destination  
+ Kinesis 데이터 스트림의 ARN
+ 유형: 문자열
+ 패턴: arn:aws:kinesis:\$1\$1REGION\$1\$1:\$1\$1AWS\$1ACCOUNT\$1ID\$1\$1:stream/\$1\$1STREAM\$1NAME\$1\$1 

errorCode  
+ 오류 코드
+ 타입: 문자열
+ 유효 값: `INTERNAL_SEVER_ERROR | KINESIS_RESOURCE_NOT_FOUND | KINESIS_PROVISIONED_THROUGHPUT_EXCEEDED | KMS_ACCESS_DENIED | KMS_NOT_FOUND | KMS_DISABLED | KMS_INVALID_STATE | KMS_THROTTLING`

errorMessage  
+ 상세 오류 메시지
+ 유형: 문자열

eventId  
+ 각 측정값 내보내기에 해당하는 고유 이벤트 ID
+ 유형: 문자열

eventType  
+ 현재 이벤트 유형
+ 타입: 문자열
+ 유효한 값: `measurement` ` | gatewayConnected` ` | gatewayDisconnected` ` | sensorConnected` ` | sensorDisconnected` ` | assetStateTransition` 

positionName  
+ 앱에 표시된 센서 위치 이름
+ 유형: 문자열

projectName  
+ 앱 및 콘솔에 표시되는 프로젝트 이름
+ 유형: 문자열

  

projectID  
+ Amazon Monitron 프로젝트에 해당하는 고유한 프로젝트 ID
+ 유형: 문자열

sensorID  
+ 측정값이 전송되는 센서의 물리적 ID
+ 유형: 문자열

gatewayID  
+ Amazon Monitron 서비스로 데이터를 전송하는 데 사용되는 게이트웨이의 물리적 ID
+ 유형: 문자열

siteName  
+ 앱에 표시된 사이트 이름
+ 유형: 문자열

timestamp  
+ Amazon Monitron 서비스가 측정값을 UTC로 수신할 때의 타임스탬프
+ 유형: 문자열
+ 패턴: yyyy-mm-dd hh:mm:ss.SSS

# Amazon S3에서 데이터 저장하기
<a name="kinesis-store-S3-v2"></a>

내보낸 데이터를 Amazon S3에 저장하려면 다음 절차를 따르세요.

**Topics**
+ [콘솔에서 Kinesis를 수동으로 구성하기](#kinesis-configure-console-v2)

## 콘솔에서 Kinesis를 수동으로 구성하기
<a name="kinesis-configure-console-v2"></a>

1.  AWS Management Console에 로그인하고 https://console.aws.amazon.com/kinesis Kinesis 콘솔을 엽니다.

1. 탐색 창에서 **전송 스트림**을 선택합니다.

1. **전송 스트림 생성**을 선택합니다.

1. 소스에서 **Amazon Kinesis Data Streams**를 선택합니다.

1. 대상으로 **Amazon S3**를 선택합니다.

1. **소스 설정, Kinesis 데이터 스트림**에서 Kinesis 데이터 스트림의 ARN을 입력합니다.

1. **전송 스트림 이름**에 Kinesis 데이터 스트림의 이름을 입력합니다.

1. **대상 설정**에서 Amazon S3 버킷을 선택하거나 버킷 URI를 입력합니다.

1. (선택 사항) JSON용 인라인 파싱을 사용하여 동적 파티셔닝을 활성화합니다. 이 옵션은 소스 정보와 타임스탬프를 기반으로 스트리밍 측정 데이터를 분할하려는 경우에 적합합니다. 예제:
   + **동적 파티셔닝**에서 **활성화**를 선택합니다.
   + **새 줄 구분자**에서 **활성화**를 선택합니다.
   + **JSON의 인라인 파싱** **활성화**를 선택합니다.
   + **동적 파티셔닝 키**에서 다음을 추가합니다.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/Monitron/latest/user-guide/kinesis-store-S3-v2.html)

1. **동적 파티셔닝 키 적용**을 선택하고 생성된 Amazon S3 버킷 접두사가 `!{partitionKeyFromQuery:project}/!{partitionKeyFromQuery:site}/!{partitionKeyFromQuery:time}/`인지 확인합니다.

1. Amazon S3에서 객체는 다음 키 형식을 사용합니다: `/project={projectName}/site={siteName}/time={yyyy-mm-dd 00:00:00}/{filename}`.

1. **전송 스트림 생성**을 선택합니다.

# Lambda를 사용한 데이터 처리
<a name="data-export-lambda-v2"></a>

**Topics**
+ [1단계: 함수에 AWS 리소스에 액세스할 수 있는 권한을 부여하는 [IAM 역할](https://docs.aws.amazon.com//lambda/latest/dg/lambda-intro-execution-role.html) 생성](#data-export-lambda-v2-1)
+ [2단계: Lambda 함수 생성](#create-lambda-function-v2)
+ [3단계: Lambda 함수 구성](#configure-lambda-function-v2)
+ [4단계: AWS Lambda 콘솔에서 Kinesis 트리거 활성화](#configure-kinesis-trigger-v2)

## 1단계: 함수에 AWS 리소스에 액세스할 수 있는 권한을 부여하는 [IAM 역할](https://docs.aws.amazon.com//lambda/latest/dg/lambda-intro-execution-role.html) 생성
<a name="data-export-lambda-v2-1"></a>

1. IAM 콘솔에서 [역할 페이지](https://console.aws.amazon.com/iam/home?#/roles)를 엽니다.

1. **역할 생성(Create role)**을 선택합니다.

1. **신뢰할 수 있는 엔터티 선택** 페이지에서 다음을 수행합니다.
   + **신뢰할 수 있는 엔터티 유형**에서 **AWS 서비스를** 선택합니다.
   + **사용 사례**에서 **서비스 또는 사용 사례**에서 **Lambda**를 선택합니다.
   + **다음**을 선택합니다.  
![\[IAM role creation interface showing trusted entity selection with AWS 서비스 option chosen.\]](http://docs.aws.amazon.com/ko_kr/Monitron/latest/user-guide/images/lambda-role-1.png)

1. **권한 추가** 페이지에서 다음을 수행합니다.
   + **권한 정책**에서 AWSLambdaKinesisExecutionRole(및 Kinesis 스트림이 암호화된 경우 AWSKeyManagementServicePowerUser)을 선택합니다.
   + **권한 경계** 설정의 구성을 그대로 둡니다.
   + **다음**을 선택합니다.  
![\[Add permissions interface showing AWSLambdaKinesisExecutionRole policy selected for a new role.\]](http://docs.aws.amazon.com/ko_kr/Monitron/latest/user-guide/images/lambda-role-2.png)

1. **이름, 검토 및 생성** 페이지에서 다음을 수행합니다.
   + **역할 세부 정보의** **역할 이름**에 역할 이름을 입력합니다. 예: *lambda-kinesis-role*. 선택적 **설명을** 추가하도록 선택할 수도 있습니다.
   + **1단계: 신뢰할 수 있는 엔터티 선택** 및 **2단계: 있는 그대로 권한 추가**에 대한 설정을 그대로 둡니다. **3단계:** 태그를 추가하여 리소스를 추적하도록 선택할 수 있습니다.  
![\[IAM role creation interface showing name, review, and create steps with role details and permissions.\]](http://docs.aws.amazon.com/ko_kr/Monitron/latest/user-guide/images/lambda-create-role.png)

1. **규칙 생성**을 선택합니다.

## 2단계: Lambda 함수 생성
<a name="create-lambda-function-v2"></a>

1. Lambda 콘솔에서 **함수** 페이지를 엽니다.

1. **함수 생성**을 선택합니다.

1. **청사진 사용**을 선택합니다.

1. **청사진** 검색창에서 **kinesis-process-record (nodejs)** 또는 **kinesis-process-record-python**을 검색하고 선택합니다.

1. **구성**을 선택합니다.  
![\[Create function interface with options to author from scratch, use a blueprint, or select container image.\]](http://docs.aws.amazon.com/ko_kr/Monitron/latest/user-guide/images/lambda-create-function.png)

## 3단계: Lambda 함수 구성
<a name="configure-lambda-function-v2"></a>

1. **함수 이름**을 선택합니다.

1. 첫 단계에서 만든 역할을 **실행 역할**로 선택합니다.

1. Kinesis 트리거를 구성합니다.

   1. Kinesis 스트림을 선택합니다.

   1. **함수 생성**을 클릭합니다.  
![\[Lambda function configuration form with basic information and Kinesis trigger settings.\]](http://docs.aws.amazon.com/ko_kr/Monitron/latest/user-guide/images/lambda-kinesis-trigger.png)

## 4단계: AWS Lambda 콘솔에서 Kinesis 트리거 활성화
<a name="configure-kinesis-trigger-v2"></a>

1. **구성** 탭에서 **트리거**를 선택합니다.

1. Kinesis 스트림 이름 옆의 확인란을 선택하고 **활성화**를 선택합니다.  
![\[Lambda function configuration page with Triggers tab and Kinesis stream trigger highlighted.\]](http://docs.aws.amazon.com/ko_kr/Monitron/latest/user-guide/images/kinesis-process-record-lambda.png)

이 예제에 사용된 청사진은 선택한 스트림의 로그 데이터만 사용합니다. 나중에 Lambda 함수 코드를 추가로 편집하여 더 복잡한 태스크를 완료할 수 있습니다.

# v2 데이터 내보내기 스키마의 이해
<a name="data-export-schema-v2"></a>

 각 측정 데이터, 해당 추론 결과, 게이트웨이 연결/연결 해제, 센서 연결/연결 해제 이벤트는 JSON 형식의 Kinesis 데이터 스트림 레코드 하나로 내보내집니다.

**Topics**
+ [v2 스키마 형식](#data-export-schema-format-v2)
+ [v2 스키마 파라미터](#data-export-schema-parameters-v2)

## v2 스키마 형식
<a name="data-export-schema-format-v2"></a>

```
{
    "timestamp": "string",
    "eventId": "string",
    "version": "2.0",
    "accountId": "string",
    "projectName": "string",
    "projectId": "string",
    "eventType": "measurement|gatewayConnected|gatewayDisconnected|sensorConnected|sensorDisconnected|assetStateTransition",
    // measurement
    "eventPayload": {
        "siteName": "string",
        "assetName": "string",
        "positionName": "string",
        "companyName": "string",
        "geoLocation": {
            "latitude": number,
            "longitude": number
        },
        "address": "string",
        "serialNumber": "string",
        "make": "string",
        "model": "string",
        "assetPositionURL": "string",
        "sensor": {
            "physicalId": "string",
            "rssi": number
        },
        "gateway": {
            "physicalId": "string"
        },
        "sequenceNo": number,
        "features": {
            "acceleration": {
                "band0To6000Hz": {
                    "xAxis": {
                        "rms": number
                    },
                    "yAxis": {
                        "rms": number
                    },
                    "zAxis": {
                        "rms": number
                    }
                },
                "band10To1000Hz": {
                    "totalVibration": {
                        "absMax": number,
                        "absMin": number,
                        "crestFactor": number,
                        "rms": number
                    },
                    "xAxis": {
                        "rms": number
                    },
                    "yAxis": {
                        "rms": number
                    },
                    "zAxis": {
                        "rms": number
                    }
                }
            },
            "velocity": {
                "band10To1000Hz": {
                    "totalVibration": {
                        "absMax": number,
                        "absMin": number,
                        "crestFactor": number,
                        "rms": number
                    },
                    "xAxis": {
                        "rms": number
                    },
                    "yAxis": {
                        "rms": number
                    },
                    "zAxis": {
                        "rms": number
                    }
                }
            },
            "temperature": number
        }
        "models": {
            "temperatureML": {
                "previousPersistentClassificationOutput": "string",
                "persistentClassificationOutput": "string",
                "pointwiseClassificationOutput": "string"
            },
            "vibrationISO": {
                "isoClass": "string",
                "mutedThreshold": "string",
                "previousPersistentClassificationOutput": "string",
                "persistentClassificationOutput": "string",
                "pointwiseClassificationOutput": "string"
            },
            "vibrationML": {
                "previousPersistentClassificationOutput": "string",
                "persistentClassificationOutput": "string",
                "pointwiseClassificationOutput": "string"
            }
        },
        "assetPositionId": "string"
    }
    
    // sensorConnected
    "eventPayload": {
        "siteName": "string",
        "assetName": "string",
        "positionName": "string",
        "companyName": "string",
        "geoLocation": {
            "latitude": number,
            "longitude": number
        },
        "address": "string",
        "serialNumber": "string",
        "make": "string",
        "model": "string",
        "assetPositionURL": "string",
        "sensor": {
            "physicalId": "string"
        },
        "assetPositionId": "string"
    }
    
    // sensorDisconnected
    "eventPayload": {
        "siteName": "string",
        "assetName": "string",
        "positionName": "string",
        "companyName": "string",
        "geoLocation": {
            "latitude": number,
            "longitude": number
        },
        "address": "string",
        "serialNumber": "string",
        "make": "string",
        "model": "string",
        "assetPositionURL": "string",
        "sensor": {
            "physicalId": "string"
        },
        "assetPositionId": "string"
    }
    
    // gatewayConnected
    "eventPayload": {
        "siteName": "string",
        "gatewayName": "string",
        "gatewayListURL": "string",
        "companyName": "string",
        "geoLocation": {
            "latitude": number,
            "longitude": number
        },
        "address": "string",
        "gateway": {
            "physicalId": "string"
        }
    }
    
    // gatewayDisconnected
    "eventPayload": {
        "siteName": "string",
        "gatewayName": "string",
        "gatewayListURL": "string",
        "companyName": "string",
        "geoLocation": {
            "latitude": number,
            "longitude": number
        },
        "address": "string",
        "gateway": {
            "physicalId": "string"
        }
    }
    
    // assetStateTransition
    "eventPayload": {
        "siteName": "string",
        "assetName": "string",
        "positionName": "string",
        "companyName": "string",
        "geoLocation": {
            "latitude": number,
            "longitude": number
        },
        "address": "string",
        "serialNumber": "string",
        "make": "string",
        "model": "string",
        "assetPositionURL": "string",
        "sensor": {
            "physicalId": "string"
        },
        "assetTransitionType": "measurement|userInput",
        "assetState": {
            "newState": "string",
            "previousState": "string"
        },
        "closureCode": {
            "failureMode": "string",
            "failureCause": "string",
            "actionTaken": "string",
            "resolvedModels": list<"string">
        },
        "assetPositionId": "string"
    }
}
```

## v2 스키마 파라미터
<a name="data-export-schema-parameters-v2"></a>

 Amazon Monitron Kinesis 데이터 내보내기 스키마 v2에는 다음과 같은 스키마 파라미터가 포함되어 있습니다. 일부 파라미터는 v1에서 업데이트된 것이고 일부는 v2 고유의 것입니다. 예를 들어 `siteName`은 v1의 첫 번째 수준 파라미터입니다. v2에서는 `eventPayload` 엔티티 아래에서 찾을 수 있는 두 번째 수준 파라미터입니다.

timestamp  
+ Amazon Monitron 서비스가 측정값을 UTC로 수신할 때의 타임스탬프
+ 유형: 문자열
+ 패턴: yyyy-mm-dd hh:mm:ss.SSS

eventId  
+ 각 측정에 할당된 고유한 데이터 내보내기 이벤트 ID. 수신한 Kinesis 스트림 레코드의 중복을 제거하는 데 사용할 수 있습니다.
+ 유형: 문자열

version  
+ 스키마 버전
+ 유형: 문자열
+ 값: 1.0 또는 2.0

accountId  
+ Monitron 프로젝트의 12자리 AWS 계정 ID
+ 유형: 문자열

projectName  
앱과 콘솔에 표시되는 프로젝트 이름.  
유형: 문자열

projectId  
 Amazon Monitron 프로젝트의 고유 ID입니다.  
유형: 문자열

eventType  
+ 현재 이벤트 스트림. 각 이벤트 유형에는 전용 `eventPayload` 형식이 있습니다.
+ 유형: 문자열
+ 가능한 값: `measurement`, `gatewayConnected`, `gatewayDisconnected`, `sensorConnected`, `sensorDisconnected`, `assetStateTransition`.

**`eventType: measurement`**

eventPayload.features.acceleration.band0To6000Hz.xAxis.rms  
+ x축의 주파수 대역 0\$16000Hz에서 관찰된 가속도의 평균 제곱근
+ 형식: 숫자
+ 단위: m/s^2

eventPayload.features.acceleration.band0To6000Hz.yAxis.rms  
+ y축의 주파수 대역 0\$16000Hz에서 관찰된 가속도의 평균 제곱근
+ 형식: 숫자
+ 단위: m/s^2

eventPayload.features.acceleration.band0To6000Hz.zAxis.rms  
+ z축의 주파수 대역 0\$16000Hz에서 관찰된 가속도의 평균 제곱근
+ 형식: 숫자
+ 단위: m/s^2

eventPayload.features.acceleration.band10To1000Hz.resultantVector.absMax  
+ 주파수 대역 10\$11000Hz에서 관찰된 절대 최대 가속도
+ 형식: 숫자
+ 단위: m/s^2

eventPayload.features.acceleration.band10To1000Hz.resultantVector.absMin  
+ 주파수 대역 10\$11000Hz에서 관찰된 절대 최소 가속도
+ 형식: 숫자
+ 단위: m/s^2

eventPayload.features.acceleration.band10To1000Hz.resultantVector.crestFactor  
+ 주파수 대역 10\$11000Hz에서 관찰된 가속 파고율
+ 형식: 숫자

eventPayload.features.acceleration.band10To1000Hz.resultantVector.rms  
+ 주파수 대역 10\$11000Hz에서 관찰된 가속도의 평균 제곱근
+ 형식: 숫자
+ m/s^2

eventPayload.features.acceleration.band10To1000Hz.xAxis.rms  
+ x축의 주파수 대역 10\$11000Hz에서 관찰된 가속도의 평균 제곱근
+ 형식: 숫자
+ m/s^2

eventPayload.features.acceleration.band10To1000Hz.yAxis.rms  
+ y축의 주파수 대역 10\$11000Hz에서 관찰된 가속도의 평균 제곱근
+ 형식: 숫자
+ m/s^2

eventPayload.features.acceleration.band10To1000Hz.zAxis.rms  
+ z축의 주파수 대역 10\$11000Hz에서 관찰된 가속도의 평균 제곱근
+ 형식: 숫자
+ m/s^2

eventPayload.features.temperature  
+ 관찰된 온도
+ 형식: 숫자
+ °C/도

eventPayload.features.velocity.band10To1000Hz.resultantVector.absMax  
+ 주파수 대역 10\$11000Hz에서 관찰된 절대 최대 속도
+ 형식: 숫자
+ mm/s

eventPayload.features.velocity.band10To1000Hz.resultantVector.absMin  
+ 주파수 대역 10\$11000Hz에서 관찰된 절대 최소 속도
+ 형식: 숫자
+ mm/s

eventPayload.features.velocity.band10To1000Hz.resultantVector.crestFactor  
+ 주파수 대역 10\$11000Hz에서 관찰된 속도 파고율
+ 형식: 숫자

eventPayload.features.velocity.band10To1000Hz.resultantVector.rms  
+ 주파수 대역 10\$11000Hz에서 관찰된 속도의 평균 제곱근
+ 형식: 숫자
+ mm/s

eventPayload.features.velocity.band10To1000Hz.xAxis.rms  
+ x축의 주파수 대역 10\$11000Hz에서 관찰된 속도의 평균 제곱근
+ 형식: 숫자
+ mm/s

eventPayload.features.velocity.band10To1000Hz.yAxis.rms  
+ y축의 주파수 대역 10\$11000Hz에서 관찰된 속도의 평균 제곱근
+ 형식: 숫자
+ mm/s

eventPayload.features.velocity.band10To1000Hz.zAxis.rms  
+ z축의 주파수 대역 10\$11000Hz에서 관측된 속도의 평균 제곱근
+ 형식: 숫자
+ mm/s

eventPayload.sequenceNo  
+ 측정 시퀀스 번호
+ 형식: 숫자

eventPayload.assetPositionId  
+ 측정값이 전송되는 센서 위치의 식별자입니다.
+ 유형: 문자열

eventPayload.companyName  
+ 자산을 사용하는 회사의 이름입니다.
+ 유형: 문자열

eventPayload.geoLocation.latitude  
+ 사이트 물리적 위치의 위도입니다.
+ 형식: 숫자

eventPayload.geoLocation.longitude  
+ 사이트 물리적 위치의 경도입니다.
+ 형식: 숫자

eventPayload.address  
+ 사이트의 주소입니다.
+ 유형: 문자열

eventPayload.serialNumber  
+ 자산의 일련 번호입니다.
+ 유형: 문자열

eventPayload.make  
+ 자산의 제조업체입니다.
+ 유형: 문자열

eventPayload.model  
+ 자산의 모델입니다.
+ 유형: 문자열

`eventType: sensorConnected`

siteName  
+ 앱에 표시된 사이트 이름
+ 유형: 문자열

assetName  
+ 앱에 표시되는 자산 이름
+ 유형: 문자열

positionName  
+ 앱에 표시된 센서 위치 이름
+ 유형: 문자열

assetPositionURL  
+ 앱에 표시된 센서 URL
+ 유형: 문자열

physicalID  
+ 측정값이 전송되는 센서의 물리적 ID
+ 유형: 문자열

eventPayload.assetPositionId  
+ 상태가 변경된 센서 위치의 식별자입니다.
+ 유형: 문자열

eventPayload.companyName  
+ 자산을 사용하는 회사의 이름입니다.
+ 유형: 문자열

eventPayload.geoLocation.latitude  
+ 사이트 물리적 위치의 위도입니다.
+ 형식: 숫자

eventPayload.geoLocation.longitude  
+ 사이트 물리적 위치의 경도입니다.
+ 형식: 숫자

eventPayload.address  
+ 사이트의 주소입니다.
+ 유형: 문자열

eventPayload.serialNumber  
+ 자산의 일련 번호입니다.
+ 유형: 문자열

eventPayload.make  
+ 자산의 제조업체입니다.
+ 유형: 문자열

eventPayload.model  
+ 자산의 모델입니다.
+ 유형: 문자열

`eventType: sensorDisconnected`

siteName  
+ 앱에 표시된 사이트 이름
+ 유형: 문자열

assetName  
+ 앱에 표시되는 자산 이름
+ 유형: 문자열

positionName  
+ 앱에 표시된 센서 위치 이름
+ 유형: 문자열

assetPositionURL  
+ 앱에 표시된 센서 URL
+ 유형: 문자열

physicalID  
+ 측정값이 전송되는 센서의 물리적 ID
+ 유형: 문자열

eventPayload.assetPositionId  
+ 상태가 변경된 센서 위치의 식별자입니다.
+ 유형: 문자열

eventPayload.companyName  
+ 자산을 사용하는 회사의 이름입니다.
+ 유형: 문자열

eventPayload.geoLocation.latitude  
+ 사이트 물리적 위치의 위도입니다.
+ 형식: 숫자

eventPayload.geoLocation.longitude  
+ 사이트 물리적 위치의 경도입니다.
+ 형식: 숫자

eventPayload.address  
+ 사이트의 주소입니다.
+ 유형: 문자열

eventPayload.serialNumber  
+ 자산의 일련 번호입니다.
+ 유형: 문자열

eventPayload.make  
+ 자산의 제조업체입니다.
+ 유형: 문자열

eventPayload.model  
+ 자산의 모델입니다.
+ 유형: 문자열

 `eventType: gatewayConnected` 

eventPayload.siteName  
+ 앱에 표시된 사이트 이름
+ 유형: 문자열

eventPayload.gatewayName  
+ 앱에 표시된 게이트웨이의 이름.
+ 유형: 문자열

eventPayload.gatewayListURL  
+ 앱에 표시된 게이트웨이 URL
+ 유형: 문자열

eventPayload.gateway.physicalID  
+ Amazon Monitron 서비스에 데이터를 전송하기 위해 방금 연결된 게이트웨이의 물리적 ID
+ 유형: 문자열

eventPayload.companyName  
+ 자산을 사용하는 회사의 이름입니다.
+ 유형: 문자열

eventPayload.geoLocation.latitude  
+ 사이트 물리적 위치의 위도입니다.
+ 형식: 숫자

eventPayload.geoLocation.longitude  
+ 사이트 물리적 위치의 경도입니다.
+ 형식: 숫자

eventPayload.address  
+ 사이트의 주소입니다.
+ 유형: 문자열

`eventType: gatewayDisconnected`

siteName  
+ 앱에 표시된 사이트 이름
+ 유형: 문자열

gatewayName  
+ 앱에 표시된 게이트웨이의 이름.
+ 유형: 문자열

gatewayListURL  
+ 앱에 표시된 게이트웨이 URL
+ 유형: 문자열

physicalID  
+ Amazon Monitron 서비스에 데이터를 전송하기 위해 방금 연결된 게이트웨이의 물리적 ID
+ 유형: 문자열

eventPayload.companyName  
+ 자산을 사용하는 회사의 이름입니다.
+ 유형: 문자열

eventPayload.geoLocation.latitude  
+ 사이트 물리적 위치의 위도입니다.
+ 형식: 숫자

eventPayload.geoLocation.longitude  
+ 사이트 물리적 위치의 경도입니다.
+ 형식: 숫자

eventPayload.address  
+ 사이트의 주소입니다.
+ 유형: 문자열

`eventType: assetStateTransition`

eventPayload.siteName  
+ 앱에 표시된 사이트 이름
+ 유형: 문자열

eventPayload.assetName  
+ 앱에 표시되는 자산 이름
+ 유형: 문자열

eventPayload.positionName  
+ 앱에 표시된 센서 위치 이름
+ 유형: 문자열

eventPayload.assetPositionURL  
+ 앱에 표시된 센서 URL
+ 유형: 문자열

eventPayload.sensor.physicalID  
+ 측정값이 전송되는 센서의 물리적 ID
+ 유형: 문자열

eventPayload.assetTransitionType  
+ 자산 상태 전환의 원인
+ 유형: 문자열
+ 가능한 값: `measurement` 또는 `userInput`

eventPayload.assetState.newState  
+ 자산의 새 상태
+ 유형: 문자열

eventPayload.assetState.previousState  
+ 자산의 이전 상태
+ 유형: 문자열

eventPayload.closureCode.failureMode  
+ 이 장애를 인지했을 때 사용자가 선택한 장애 모드
+ 유형: 문자열
+ 가능한 값: `NO_ISSUE` \$1 `BLOCKAGE` \$1 `CAVITATION` \$1 `CORROSION` \$1 `DEPOSIT` \$1 `IMBALANCE` \$1 `LUBRICATION` \$1 `MISALIGNMENT` \$1 `OTHER` \$1 `RESONANCE` \$1 `ROTATING_LOOSENESS` \$1 `STRUCTURAL_LOOSENESS` \$1 `TRANSMITTED_FAULT` \$1 `UNDETERMINED` 

eventPayload.closureCode.failureCause  
+ 장애를 인지했을 때 사용자가 앱 드롭다운에서 선택한 장애 원인입니다.
+ 유형: 문자열
+ 가능한 값: `ADMINISTRATION` \$1 `DESIGN` \$1 `FABRICATION` \$1 `MAINTENANCE` \$1 `OPERATION` \$1 `OTHER` \$1 `QUALITY` \$1 `UNDETERMINED` \$1 `WEAR` 

eventPayload.closureCode.actionTaken  
+ 사용자가 앱 드롭다운에서 선택한 대로 이 예외 항목을 종료할 때 취해진 조치입니다.
+ 유형: 문자열
+ 가능한 값: `ADJUST` \$1 `CLEAN` \$1 `LUBRICATE` \$1 `MODIFY` \$1 `NO_ACTION` \$1 `OTHER` \$1 `OVERHAUL` \$1 `REPLACE` 

eventPayload.closureCode.resolvedModels  
+ 문제를 지적한 모델 세트.
+ 유형: 문자열 목록
+ 가능한 값: `vibrationISO` \$1 `vibrationML` \$1 `temperatureML` 

eventPayload.assetPositionId  
+ 상태가 변경된 자산 위치의 식별자입니다.
+ 유형: 문자열

models.temperatureML.persistentClassificationOutput  
+ 기계 학습 기반 온도 모델의 지속적 분류 출력
+ 형식: 숫자
+ 유효한 값: `UNKNOWN | HEALTHY | WARNING | ALARM`

models.temperatureML.pointwiseClassificationOutput  
+ 기계 학습 기반 온도 모델의 점별 분류 출력
+ 타입: 문자열
+ 유효 값: `UNKNOWN | INITIALIZING | HEALTHY | WARNING | ALARM`

models.vibrationISO.isoClass  
+ ISO 기반 진동 모델에서 사용하는 ISO 20816 등급(기계 진동의 측정 및 평가 표준)
+ 타입: 문자열
+ 유효 값: `CLASS1 | CLASS2 | CLASS3 | CLASS4`

models.vibrationISO.mutedThreshold  
+ ISO 기반 진동 모델의 알림을 음소거하기 위한 임계값
+ 타입: 문자열
+ 유효 값: `WARNING | ALARM`

models.vibrationISO.persistentClassificationOutput  
+ ISO 기반 진동 모델의 지속적 분류 출력
+ 타입: 문자열
+ 유효 값: `UNKNOWN | HEALTHY | WARNING | ALARM`

models.vibrationISO.pointwiseClassificationOutput  
+ ISO 기반 진동 모델의 포인트별 분류 출력
+ 타입: 문자열
+ 유효 값: `UNKNOWN | HEALTHY | WARNING | ALARM | MUTED_WARNING | MUTED_ALARM`

models.vibrationML.persistentClassificationOutput  
+ 기계 학습 기반 진동 모델의 지속적 분류 출력
+ 타입: 문자열
+ 유효 값: `UNKNOWN | HEALTHY | WARNING | ALARM`

models.vibrationML.pointwiseClassificationOutput  
+ 기계 학습 기반 진동 모델의 포인트별 분류 출력
+ 타입: 문자열
+ 유효 값: `UNKNOWN | INITIALIZING | HEALTHY | WARNING | ALARM`

assetState.newState  
+ 측정을 처리한 후의 기계 상태
+ 타입: 문자열
+ 유효 값: `UNKNOWN | HEALTHY | NEEDS_MAINTENANCE | WARNING | ALARM`

assetState.previousState  
+ 측정을 처리하기 전의 기계 상태
+ 타입: 문자열
+ 유효 값: `UNKNOWN | HEALTHY | NEEDS_MAINTENANCE | WARNING | ALARM`

eventPayload.companyName  
+ 자산을 사용하는 회사의 이름입니다.
+ 유형: 문자열

eventPayload.geoLocation.latitude  
+ 사이트 물리적 위치의 위도입니다.
+ 형식: 숫자

eventPayload.geoLocation.longitude  
+ 사이트 물리적 위치의 경도입니다.
+ 형식: 숫자

eventPayload.address  
+ 사이트의 주소입니다.
+ 유형: 문자열

eventPayload.serialNumber  
+ 자산의 일련 번호입니다.
+ 유형: 문자열

eventPayload.make  
+ 자산의 제조업체입니다.
+ 유형: 문자열

eventPayload.model  
+ 자산의 모델입니다.
+ 유형: 문자열

# Kinesis v1에서 v2로 마이그레이션
<a name="migration-from-v1-to-v2"></a>

 현재 v1 데이터 스키마를 사용하고 있다면 이미 Amazon S3로 데이터를 보내고 있거나 Lambda로 데이터 스트림 페이로드를 추가로 처리하고 있을 수 있습니다.

**Topics**
+ [데이터 스키마를 v2로 업데이트](#updating-to-v2)
+ [Lambda를 사용한 데이터 처리 업데이트](#updating-with-lam)

## 데이터 스키마를 v2로 업데이트
<a name="updating-to-v2"></a>

 v1 스키마로 데이터 스트림을 이미 구성한 경우, 다음을 수행하여 데이터 내보내기 프로세스를 업데이트할 수 있습니다.

1. Amazon Monitron 콘솔을 엽니다.

1. 프로젝트로 이동합니다.

1.  [현재 라이브 데이터 내보내기](monitron-kinesis-export-v2.md#stop-kinesis-export-v2)를 중지합니다.

1.  라이브 데이터 내보내기를 시작하여 새 데이터 스트림을 생성합니다.

1. 새로 생성한 데이터 스트림을 선택합니다.

1. **라이브 데이터 내보내기 시작**을 선택합니다. 이때 새 스키마가 데이터 스트림을 통해 페이로드를 전송합니다.

1. (선택 사항) Kinesis 콘솔로 이동하여 이전 데이터 스트림을 삭제합니다.

1. v2 스키마를 사용하여 새로 생성한 데이터 스트림의 새 전송 방법을 구성하세요.

 이제 새 스트림이 v2 스키마를 준수하는 페이로드를 새 버킷으로 전송합니다. 이러한 버킷의 모든 데이터를 처리하려는 경우 두 개의 서로 다른 버킷을 사용하여 일관된 형식을 유지하는 것이 좋습니다. 예를 들어 Athena 및와 같은 다른 서비스를 사용합니다 AWS Glue.

**참고**  
Amazon S3로 데이터를 전송하는 경우, v2 스키마를 사용하여 Amazon S3에 데이터를 전송하는 방법에 대해 자세히 알아보려면 [내보낸 데이터를 Amazon S3에 저장](kinesis-store-S3-v2.md#kinesis-store-S3-title-v2)하는 방법을 알아보세요.

**참고**  
Lambda 함수를 사용하여 페이로드를 처리했다면 [Lambda로 데이터를 처리](https://docs.aws.amazon.com/Monitron/latest/user-guide/data-export-lambda.html)하는 방법을 알아보세요. [Lambda로 업데이트](#updating-with-lam) 섹션에서 자세한 내용을 참조할 수도 있습니다.

## Lambda를 사용한 데이터 처리 업데이트
<a name="updating-with-lam"></a>

 Lambda로 데이터 처리를 업데이트하려면 v2 데이터 스트림이 이제 이벤트 기반이라는 점을 고려해야 합니다. 초기 v1 Lambda 코드는 다음과 비슷했을 수 있습니다.

```
import base64

def main_handler(event):
    # Kinesis "data" blob is base64 encoded so decode here:
    for record in event['Records']:
        payload = base64.b64decode(record["kinesis"]["data"])
     
        measurement = payload["measurement"]
        projectDisplayName = payload["projectDisplayName"]
     
        # Process the content of the measurement
        # ...
```

 v1 데이터 스키마가 지원 중단 경로에 있으므로 이전 Lambda 코드는 모든 새 데이터 스트림에서 작동하지 않습니다.

 다음 Python 샘플 코드는 데이터 스키마 v2를 사용하여 Kinesis 스트림의 이벤트를 처리합니다. 이 코드는 새 `eventType` 파라미터를 사용하여 처리 방향을 적절한 핸들러로 지정합니다.

```
import base64

handlers = {
    "measurement": measurementEventHandler,
    "gatewayConnected": gatewayConnectedEventHandler,
    "gatewayDisconnected": gatewayDisconnectedEventHandler,
    "sensorConnected": sensorConnectedEventHandler,
    "sensorDisconnected": sensorDisconnectedEventHandler,
}

def main_handler(event):
    # Kinesis "data" blob is base64 encoded so decode here:
    for record in event['Records']:
        payload = base64.b64decode(record["kinesis"]["data"])
          
        eventType = payload["eventType"]
        if eventType not in handler.keys():
            log.info("No event handler found for the event type: {event['eventType']}")
            return 
     
        # Invoke the appropriate handler based on the event type.
        eventPayload = payload["eventPayload"]
        eventHandler = handlers[eventType] 
        eventHandler(eventPayload)

def measurementEventHandler(measurementEventPayload):
    # Handle measurement event
    projectName = measurementEventPayload["projectName"]
    
    # ...

def gatewayConnectedEventHandler(gatewayConnectedEventPayload):
    # Handle gateway connected event

# Other event handler functions
```