

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

# 데이터 보존 흐름 구성
<a name="windows-nodered-data-retention-flow"></a>

데이터 보존 흐름은 엣지에서 운영 가시성을 유지하는 데 사용할 수 있습니다. 이는 네트워크 중단 시 또는 데이터에 즉시 액세스해야 하는 경우에 유용합니다. 이 흐름은 MQTT 브로커를 구독하여 디바이스 데이터를 수신하고 InfluxDB® 형식으로 변환한 다음 로컬에 저장합니다. 이 흐름을 구현하면 운영자가 클라우드 종속성 없이 액세스할 수 있는 복원력이 뛰어난 로컬 데이터 스토어를 생성하여 엣지에서 실시간 모니터링 및 의사 결정을 수행할 수 있습니다.

흐름은 데이터를 올바르게 캡처하고 저장하기 위해 함께 작동하는 세 가지 주요 구성 요소로 구성됩니다.
+ **MQTT 구독 클라이언트** - 브로커로부터 데이터를 수신하여 모든 관련 산업 데이터를 캡처합니다.
+ **InfluxDB 변환기** - AWS IoT SiteWise 페이로드를 InfluxDB 형식으로 변환하여 효율적인 시계열 스토리지를 위한 데이터 준비
+ **InfluxDB 라이터** - 로컬 스토리지를 처리하여 로컬 애플리케이션의 데이터 지속성 및 가용성 보장

![Node-RED 데이터 보존 흐름](http://docs.aws.amazon.com/ko_kr/iot-sitewise/latest/userguide/images/gateway-open-source-nodered-data-retention.png)


## MQTT 구독 클라이언트 설정
<a name="windows-nodered-mqtt-subscriber"></a>
+ 아래 예제를 가져 AWS IoT SiteWise 와서에서 MQTT EMQX 브로커로부터 데이터를 수신하도록 Node-RED로 MQTT 구독 클라이언트를 구성합니다.  
**Example : 노드의 MQTT**  

  ```
  [
      {
          "id": "string",
          "type": "mqtt in",
          "z": "string",
          "name": "Subscribe to MQTT broker",
          "topic": "{{/Renton/WindFarm/Turbine/WindSpeed}}",
          "qos": "{{1}}",
          "datatype": "auto-detect",
          "broker": "string",
          "nl": false,
          "rap": true,
          "rh": 0,
          "inputs": 0,
          "x": 290,
          "y": 340,
          "wires": [
              [
                  "string"
              ]
          ]
      },
      {
          "id": "string",
          "type": "mqtt-broker",
          "name": "emqx",
          "broker": "127.0.0.1",
          "port": "1883",
          "clientid": "",
          "autoConnect": true,
          "usetls": false,
          "protocolVersion": "5",
          "keepalive": 15,
          "cleansession": true,
          "autoUnsubscribe": true,
          "birthTopic": "",
          "birthQos": "0",
          "birthPayload": "",
          "birthMsg": {},
          "closeTopic": "",
          "closePayload": "",
          "closeMsg": {},
          "willTopic": "",
          "willQos": "0",
          "willPayload": "",
          "willMsg": {},
          "userProps": "",
          "sessionExpiry": ""
      }
  ]
  ```

이 구독을 통해 브로커에 게시된 모든 관련 데이터를 로컬 스토리지에 캡처하여 산업 운영에 대한 전체 레코드를 제공할 수 있습니다. 노드는 다음 구독 설정과 함께 [MQTT 게시자 구성](windows-nodered-data-publish-flow.md#windows-nodered-mqtt-publisher-config) 섹션과 동일한 MQTT 연결 파라미터를 사용합니다.
+ 주제 - `/Renton/WindFarm/Turbine/WindSpeed`
+ QoS - `1`

자세한 내용은 *Node-RED 설명서*의 [MQTT 브로커에 연결을](https://cookbook.nodered.org/mqtt/connect-to-broker) 참조하세요.

## InfluxDB 변환기 구성
<a name="windows-nodered-influxdb-translator"></a>

InfluxDB는 인덱싱에 [태그를](https://docs.influxdata.com/influxdb/v1/concepts/glossary/#tag) 사용하고 값에 [필드를](https://docs.influxdata.com/influxdb/v1/concepts/glossary/#field) 사용하여 데이터를 구성합니다. 이 조직은 시계열 데이터의 쿼리 성능과 스토리지 효율성을 최적화합니다. JavaScript 코드가 포함된 예제 함수 노드를 가져와 AWS IoT SiteWise 페이로드를 InfluxDB 형식으로 변환합니다. 변환기는 속성을 두 그룹으로 분할합니다.
+ 태그 - 효율적인 인덱싱을 위한 품질 및 이름 속성
+ 필드 - 타임스탬프(에포크 이후 밀리초) 및 값

**Example : InfluxDB 페이로드로 변환하는 함수 노드**  

```
[
    {
        "id": "string",
        "type": "function",
        "z": "string",
        "name": "Translate to InfluxDB payload",
        "func": "let data = msg.payload;\n\nlet timeInSeconds = data.propertyValues[0].timestamp.timeInSeconds;\nlet offsetInNanos = data.propertyValues[0].timestamp.offsetInNanos;\nlet timestampInMilliseconds = (timeInSeconds * 1000) + (offsetInNanos / 1000000);\n\nmsg.payload = [\n    {\n        \"timestamp(milliseconds_since_epoch)\": timestampInMilliseconds,\n        \"value\": data.propertyValues[0].value.doubleValue\n    },\n    {\n        \"name\": data.propertyAlias,\n        \"quality\": data.propertyValues[0].quality\n    }\n]\n\nreturn msg",
        "outputs": 1,
        "timeout": "",
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 560,
        "y": 340,
        "wires": [
            [
                "string"
            ]
        ]
    }
]
```

추가 구성 옵션은 Node-RED GitHub 리포지토리의 [node-red-contrib-influxdb](https://github.com/mblackstock/node-red-contrib-influxdb)를 참조하세요. GitHub 

## InfluxDB 라이터 설정
<a name="windows-nodered-influxdb-writer"></a>

InfluxDB 라이터 노드는 데이터 보존 흐름의 최종 구성 요소로, 산업 데이터를 로컬 InfluxDB 데이터베이스에 저장하는 역할을 합니다. 이 로컬 스토리지는 네트워크 중단 시 운영 가시성을 유지하고 시간이 중요한 애플리케이션의 데이터에 즉시 액세스할 수 있도록 하는 데 중요합니다.

1. 팔레트 관리 옵션을 통해 node-red-contrib-influxdb 패키지를 설치합니다. 이 패키지는 Node-RED를 InfluxDB와 연결하는 데 필요한 노드를 제공합니다.

1. 흐름에 InfluxDB 출력 노드를 추가합니다. 이 노드는 InfluxDB 데이터베이스에 대한 실제 데이터 쓰기를 처리합니다.

1. InfluxDB 인스턴스에 대한 보안 연결을 설정하도록 서버 속성을 구성합니다.

   1. 버전을 2.0으로 설정 - 이전 버전과 다른 API를 사용하는 InfluxDB v2.x에 연결하도록 지정합니다.

   1. URL을 로 설정 `http://127.0.0.1:8086` - 로컬 InfluxDB 인스턴스를 가리킵니다.

   1. InfluxDB 인증 토큰을 입력합니다. 이 보안 토큰은 데이터베이스에 대한 연결을 승인합니다. [InfluxDB를 사용하여 로컬 스토리지 설정](windows-influxdb-setup.md) 절차 중에 토큰을 생성했습니다.

1. 스토리지 위치 파라미터를 지정하여 데이터가 저장되는 위치와 방법을 정의합니다.

   1. InfluxDB 조직 이름 입력 - 조직은 버킷과 대시보드가 속한 사용자 그룹을 위한 워크스페이스입니다. 자세한 내용은의 [조직 관리를](https://docs.influxdata.com/influxdb/v2/admin/organizations/) 참조하세요*InfluxData Documentation*.

   1. InfluxDB 버킷 지정(예: `WindFarmData`) - 버킷은 시계열 데이터의 컨테이너 역할을 하는 기존 시스템의 데이터베이스와 동일합니다.

   1. InfluxDB 측정 설정(예: `TurbineData`) - 측정은 관계형 데이터베이스의 테이블과 유사하여 관련 데이터 포인트를 구성합니다.

**참고**  
InfluxDB 인스턴스의 왼쪽 사이드바에서 조직 이름을 찾습니다. 조직, 버킷 및 측정 개념은 InfluxDB의 데이터 조직 모델의 기본입니다. 자세한 내용은 [InfluxDB 설명서를](https://docs.influxdata.com/influxdb/v2/admin/organizations/) 참조하세요.

## 보존 흐름 배포 및 확인
<a name="windows-nodered-retention-deploy"></a>

데이터 보존 흐름의 모든 구성 요소를 구성한 후에는 시스템이 올바르게 작동하는지 배포하고 확인해야 합니다. 이 확인을 통해 산업 데이터가 즉각적인 액세스 및 분석을 위해 로컬에 올바르게 저장되고 있는지 확인할 수 있습니다.

1. 데이터 보존 흐름도에 표시된 대로 노드 3개를 연결합니다. 이렇게 하면 로컬 스토리지에 대한 데이터 구독에서 전체 파이프라인이 생성됩니다.  
![Node-RED 데이터 보존 흐름](http://docs.aws.amazon.com/ko_kr/iot-sitewise/latest/userguide/images/gateway-open-source-nodered-data-retention.png)

1. **배포**를 선택하여 변경 사항을 적용하고 흐름을 활성화합니다. 그러면 데이터 수집 및 스토리지 프로세스가 시작됩니다.

1. InfluxDB Data Explorer를 사용하여 데이터를 쿼리하고 시각화합니다. 이 도구를 사용하면 데이터가 올바르게 저장되고 있는지 확인하고 시계열 데이터의 초기 시각화를 생성할 수 있습니다.

   Data Explorer에서는 시간 경과에 따라 풍속 측정값이 기록되는 것을 확인하여 데이터 생성부터 로컬 스토리지까지 전체 파이프라인이 올바르게 작동하는지 확인할 수 있습니다.

   자세한 내용은 [의 Data Explorer에서 쿼리](https://docs.influxdata.com/influxdb/v2/query-data/execute-queries/data-explorer/)를 참조하세요*InfluxData Documentation*.

이제 데이터 게시 흐름과 데이터 보존 흐름이 모두 배포되면 즉각적인 액세스와 복원력을 위해 로컬 복사본을 유지하면서 AWS IoT SiteWise 클라우드로 데이터를 전송하는 완전한 시스템을 갖게 됩니다. 이 이중 경로 접근 방식을 사용하면 클라우드 기반 분석 및 스토리지의 이점을 얻는 동시에 엣지에서 운영 가시성을 유지할 수 있습니다.