연습 - Azure Cosmos DB를 IoT 데이터 파이프라인과 통합

완료됨

이 연습에서는 Azure IoT Central 애플리케이션을 사용하여 생성된 IoT 원격 분석 데이터의 수집, 처리 및 저장 설정에 대해 간략하게 설명합니다.

이 연습에서는 다음을 수행합니다.

  • Azure IoT Central 애플리케이션을 만듭니다.
  • HTTP 요청 페이로드를 기록하는 Azure 함수를 만듭니다.
  • Azure IoT Central 애플리케이션의 IoT 원격 분석 규칙을 구성하고 유효성을 검사합니다.

필수 조건

이 연습을 수행하려면 다음이 필요합니다.

  • Microsoft 계정 또는 Microsoft Entra 테넌트에서 전역 관리자 역할을 가진 Microsoft Entra 계정. 테넌트는 Azure 구독 및 Azure 구독의 소유자 또는 기여자 역할과 연결되어야 합니다.
  • 연습 단원인 Azure Cosmos DB 설정을 완료합니다.
  • 활성화된 Azure 구독. Azure 구독이 없는 경우 시작하기 전에 체험 계정을 만듭니다.

Azure IoT Central 애플리케이션 만들기

  1. Azure Portal에서 IoT Central 애플리케이션 만들기 페이지로 이동합니다. 메시지가 표시되면 Azure 계정으로 로그인합니다.

  2. 다음 정보를 입력합니다.

    필드 Description
    구독 사용하려는 Azure 구독입니다.
    Resource group 사용하려는 리소스 그룹입니다. 새 리소스 그룹을 만들거나 기존 그룹을 사용할 수 있습니다.
    리소스 이름 adatum-iot-custom-application과 같은 유효한 Azure 리소스 이름입니다.
    애플리케이션 URL adatum-iot-custom-application과 같은 애플리케이션의 URL 하위 도메인입니다. IoT Central 애플리케이션의 URL은 https://adatum-iot-custom-application.azureiotcentral.com과 같은 모양입니다.
    템플릿 스토어 내 분석 - 조건 모니터링
    지역 사용하려는 Azure 지역입니다.
    요금제 표준 가격 책정 계획 중 하나를 선택합니다. 가격 책정에 대한 자세한 내용은 Azure IoT Central 가격을 참조하세요.
  3. 검토 + 만들기를 선택합니다. 그런 다음 만들기를 선택합니다.

앱이 준비되면 Azure Portal에서 앱으로 이동할 수 있습니다.

Screenshot that shows the IoT Central application resource in the Azure portal. The application URL is highlighted.

액세스 권한이 있는 모든 IoT Central 애플리케이션을 나열하려면 IoT Central 애플리케이션으로 이동합니다.

몇 분 안에 대시보드 페이지가 표시됩니다. 샘플 Azure IoT Central 애플리케이션의 원격 분석 데이터 및 분석을 검토합니다.

  1. IoT Central 애플리케이션 포털의 대시보드 페이지에 있는 세로 메뉴에서 디바이스를 선택합니다.

  2. Thermostat 섹션에서 Thermostat-Zone1을 선택합니다.

  3. Thermostat-Zone1 창에서 대시보드 탭의 콘텐츠를 검토합니다.

    Screenshot of the Dashboard tab of the 'Thermostat-Zone1' device pane in the IoT Central Application portal.

  4. 원시 데이터 탭을 선택하고 콘텐츠를 검토합니다.

    Screenshot of the Raw data tab of the 'Thermostat-Zone1' device pane in the IoT Central Application portal.

HTTP 요청 페이로드를 기록하는 Azure 함수 만들기

이 작업에서는 HTTP 웹후크 기능을 구현하는 Azure Function 앱을 만듭니다. 애플리케이션 규칙을 만들어서 Azure IoT Central 애플리케이션에서 원격 분석 데이터를 전달하는 데 이 기능을 적용합니다.

  1. 웹 브라우저를 시작하고 Azure Portal로 이동하여 이 모듈에 사용 중인 Azure 구독에 로그인합니다.

  2. 리소스, 서비스, 문서 검색 텍스트 상자를 사용하여 함수 앱을 검색합니다.

  3. 함수 앱 창에서 + 만들기를 선택합니다.

  4. 기본 탭에서 다음 설정을 구성한 다음, 검토 + 만들기를 선택합니다.

    설정 구성
    Subscription 이 모듈에서 사용 중인 Azure 구독의 이름을 선택합니다.
    리소스 그룹 function-app-RG라는 새 리소스 그룹을 만듭니다.
    함수 앱 이름 소문자, 숫자 또는 대시로 구성되고 문자로 시작하는 고유한 이름을 입력합니다.
    게시 코드를 선택합니다.
    런타임 스택 .NET을 선택합니다.
    버전 버전 6(LTS), 진행 중인 모델을 선택합니다.
    지역 랩 환경의 위치에 가장 가까운 Azure 지역을 선택합니다. Azure IoT Central 배포를 위해 선택한 위치와 일치하는 것이 좋습니다.
    운영 체제 Windows
    플랜 유형 사용량(서버리스)

    Screenshot of the Basics tab of the Create Function App pane in the Azure portal.

  5. 만들기를 실행합니다.

    참고

    Azure Function 앱 프로비전이 완료되기를 기다립니다. 2분 정도 걸릴 수 있습니다.

  6. Azure Function 앱 배포가 완료되면 리소스로 이동을 선택합니다.

  7. Azure 함수 앱 창의 Azure Portal에서 만들기에서 함수 만들기를 선택합니다.

  8. 함수 추가 창에서 다음 설정을 지정한 다음 만들기를 선택합니다.

    설정 구성
    개발 환경 포털에서 개발
    템플릿 HTTP 트리거
    새 함수 HttpTrigger1
    권한 부여 수준 Function

    Screenshot of the 'Add function' pane of the Azure Function app in the Azure portal.

  9. HttpTrigger1 창의 메뉴에서 통합을 선택합니다.

    Screenshot of the Integration function pane of the Azure Function app in the Azure portal.

  10. 출력이라는 레이블이 지정된 사각형에서 + 출력 추가를 선택합니다.

  11. 다음 설정을 구성한 후 추가를 선택합니다.

    설정 구성
    바인딩 유형 Azure Cosmos DB를 선택합니다.
    문서 매개 변수 이름 기본값을 outDoc으로 바꿉니다.
    데이터베이스 이름 이전 연습에서 만든 데이터베이스의 이름 iotdb를 입력합니다.
    컬렉션 이름 iotcollection을 입력합니다.
    true이면 Cosmos DB 데이터베이스 생성 를 선택합니다.
    Cosmos DB 계정 연결 새로 만들기를 선택합니다. 새 Cosmos DB 계정 연결 팝업 창에서 Azure Cosmos DB 계정 옵션이 선택되어 있는지 확인합니다. 데이터베이스 계정 드롭다운 목록에서 이전 연습에서 만든 Cosmos DB 계정을 나타내는 항목을 선택한 다음 확인을 선택합니다.
    파티션 키(선택 사항) /pk/timestamp/deviceid를 입력합니다.

    Screenshot of the Create Output pane of the HttpTrigger1 Integration pane of an Azure function in the Azure portal.

    참고 항목

    최적의 파티션 키를 선택할 때는 사용 패턴과 20GB 논리 파티션 크기 제한을 고려하는 것이 중요합니다. 예를 들어 deviceIddate의 조합으로 구성된 가상 파티션 키를 만들 수 있습니다.

  12. 코드 + 테스트를 선택합니다.

  13. 기존 코드를 다음 콘텐츠로 바꾼 다음 저장을 선택합니다.

    #r "Newtonsoft.Json"
    
    using Microsoft.Azure.WebJobs.Host;
    using Newtonsoft.Json;
    using Newtonsoft.Json.Linq;
    using Microsoft.Extensions.Logging;
    using Microsoft.AspNetCore.Mvc;
    
    public static void Run(HttpRequest req, out object outDoc, ILogger log)
    {
      log.LogInformation($"C# Queue trigger function processed: {req.Body}");
    
      string requestBody = new StreamReader(req.Body).ReadToEnd();
      dynamic iotDataJson = JObject.Parse(requestBody);
      dynamic iotData = JsonConvert.DeserializeObject<dynamic>(iotDataJson.ToString());
    
      log.LogInformation($"{iotData}");
    
      outDoc = new {
        pk = iotData.device.id + "-" + iotData.timestamp.ToString("yyyyMMdd"),
        timestamp = iotData.timestamp,
        deviceId = iotData.device.id,
        temperature = iotData.device.telemetry.Thermostat_1o.temp.value
      };
    }
    

    Screenshot of the Code + Test pane of the HttpTrigger1 of the Azure Function app in the Azure portal displaying the code.

    참고 항목

    이 함수는 HTTP 요청의 JSON 기반 페이로드를 기록하고, 직접 구성한 함수 출력에 해당하는 대상 Cosmos DB 컬렉션의 개별 문서에 저장할 개별 JSON 요소를 구성합니다. pk 요소를 사용할 수 있습니다. 이 요소는 수집된 원격 분석 데이터 포인트의 date와 deviceId 속성이 연결된 파티션 키로 구성됩니다.

  14. 함수 키에 대해 함수 URL 가져오기를 선택하고 해당 값을 기록합니다.

    Screenshot of the Code + Test pane of the HttpTrigger1 of the Azure Function app in the Azure portal, with the Get function URL pop-up window.

Azure IoT Central 애플리케이션의 IoT 원격 분석 규칙 구성 및 유효성 검사

  1. 이 연습에서 이전에 만든 Azure IoT Central 애플리케이션의 디바이스 페이지를 표시하는 웹 브라우저 창으로 다시 전환합니다.

  2. IoT Central 애플리케이션 포털의 세로 메뉴에서 규칙을 선택합니다.

  3. + 새로 만들기를 선택하고 다음 설정을 구성합니다.

    설정 구성
    규칙 이름 Adatum IoT 원격 분석 규칙을 입력합니다.
    디바이스 템플릿 자동 온도 조절기를 선택합니다.
    시간 집계 설정이 꺼져 있는지 확인합니다.
    원격 분석 온도를 선택합니다.
    연산자 보다 큼을 선택합니다.
    값을 입력하세요. 0을 입력합니다.
    작업 + 웹후크를 선택합니다.
    표시 이름 Azure 함수 웹후크를 입력합니다.
    콜백 URL 이 연습의 이전 작업에서 기록한 Azure 함수 URL의 값을 붙여넣습니다.

    Screenshot of the first part of the sample Azure IoT Central application rule.

    Screenshot of the second part of the sample Azure IoT Central application rule.

    참고 항목

    온도 원격 분석 값은 웹후크 기능을 호출하고 함수를 트리거하기 위해 의도적으로 인위적으로 낮게 설정합니다. 실제 시나리오에서는 대상 Cosmos DB 컬렉션에 저장하려는 데이터 수집을 보장하는 조건에 맞게 조정합니다.

  4. 완료를 선택한 다음 저장을 선택합니다.

  5. Azure Portal에서 HttpTrigger1 | 코드 + 테스트 창이 표시되는 웹 브라우저 창으로 다시 전환합니다.

  6. 모니터를 선택한 다음 로그 탭을 선택합니다.

  7. 이 작업에서 이전에 구성한 Azure IoT Central 애플리케이션 웹후크에서 발생한 HTTP 트리거에 대한 응답으로 생성된 메시지가 로그 창에 표시되는지 확인합니다.

  8. 이전 연습에서 프로비저닝한 Cosmos DB 계정의 Data Explorer 창이 표시되는 웹 브라우저 창으로 전환합니다.

  9. NOSQL API 섹션에서 원형 화살표 새로 고침 단추를 선택하고 iotdb 노드와 그 안에 있는 iotcollection을 확장합니다. 항목 노드를 선택한 다음 항목 목록에서 첫 번째 문서를 선택합니다.

  10. 데이터 탐색기 창에 있는 항목 탭의 세부 정보 창에 Azure Central IoT 애플리케이션에 등록된 디바이스에서 생성되고 Azure 함수에서 의해 처리된 pk, timestamp, deviceId, temperature를 비롯한 원격 분석 데이터가 표시되는지 확인합니다.

    Screenshot of the Azure Cosmos DB items. The items represent the telemetry data generated by devices registered with Azure IoT Central and processed by the Azure function.

결과

축하합니다! 이 모듈의 두 번째 연습을 완료했습니다. 이 연습에서는 Azure IoT Central 애플리케이션을 만들었습니다.