Skip to content

Latest commit

 

History

History
719 lines (488 loc) · 29 KB

lab3-edge-advanced-rpi.md

File metadata and controls

719 lines (488 loc) · 29 KB

Raspberry PI + Azure IoT Edge - Advance Lab (60분)

Visual Studio Code (VSCode)는 개발자의 개발 속도를 향상시키는 파워풀한 크로스플랫폼 무료 개발환경입니다. 이번 실습에서는 IoT Edge의 개발 프로세스를 알아보면서 VSCode를 사용하여 IoT Edge 모듈을 배포해보겠습니다.

이번 실습을 통해서

  • VSCode에서 IoT Edge 디바이스 생성
  • 라즈베리파이에 Azure IoT Edge 런타임 설치
  • Azure Container Registry (ACR) 만들기
  • Azure IoT Edge Module의 다운로드와 빌드

사전준비

Step 0 : 라즈베리파이 실습용 기기 준비

Azure IoT Edge가 작동될 라즈베리파이 기기를 준비합니다. 라즈베리파이에는 Rasbian 리눅스가 설치되어 있어야 합니다. 설치 방법은 Setting up your Raspberry Pi를 참조 바랍니다.

Step 0-1 : 라즈베리파이 IP 확인

라즈베리파이에 모니터와 키보드, 마우스를 연결하여 무선 네트워크를 연결하고 IP를 확인합니다.

WiFi 설정

IP 확인

Step 0-2 : SSH 설정 및 접속

라즈베리파이에 SSH를 연결할 수 있도록 설정합니다. 초기 아이디와 비밀번호는 pi/raspberry 입니다.

SSH 설정

Putty 등의 툴을 이용하여 SSH에 접속합니다.

Putty로 SSH 연결

Putty로 SSH 연결

Step 1: 새로운 Azure IoT Edge device 만들기

이번엔 Azure 포탈 대신 Visual Studio Code의 Azure IoT Extension을 통해서 Azure IoT Edge 디바이스를 만들어보겠습니다.

Step 1.1 : IoT Hub 선택

VSCode의 Azure IoT Extension을 사용하여 IoT Hub에 연결할 수 있습니다. 연결을 위해서 Azure 구독에 로그인하고 IoT Hub를 선택해야 합니다.

  1. Visual Studio Code의 Explorer 를 선택합니다.

  2. Explorer 아래쪽에 Azure IoT Hub Devices 섹션을 펼칩니다.

  3. Select IoT Hub.를 선택합니다.

  4. Azure 에 로그인 합니다. Azure 로그인 창을 따라서 Azure에 로그인 합니다.

    Expand Azure IoT Hub Devices section

  5. 구독과 IoT Hub를 선택합니다. VSCode의 상단에 표시되는 창을 통해서 구독과 이전 실습에서 만든 IoT Hub를 선택합니다.

    SelectSubscriptionAndHub

Step 2 : 디바이스 생성

이번엔 VSCode를 이용해 Azure IoT Edge 디바이스를 만들어 봅니다.

  1. VSCode의 Explorer창에서, AZURE IOT HUB 섹션을 찾습니다.

  2. ... 을 클릭하여 팝업 메뉴를 표시합니다.

  3. Create IoT Edge Device를 선택

    VSCode-IoTEdge1

  4. 텍스트 박스가 열리면 디바이스 아이디를 입력합니다.

    VSCode-IoTEdge2

  5. 새로운 IoT Edge 디바이스가 생성된 것을 AZURE IOT HUB 섹션에서 확인 합니다.

    VSCode-IoTEdge3

output 창에서 디바이스 ID와 디바이스 Connection String이 표시된 결과 메시지를 확인 할 수 있습니다.

Step 3 : 디바이스 Connection String 복사

Ubuntu 디바이스가 IoT Hub에 연결되기 위해서는 디바이스 Connection String이 필요합니다.

  1. Azure IoT Hub Devices 섹션의 새로 만든 디바이스에서 오른쪽 클릭을 합니다.

  2. Copy Device Connection String 선택

    VSCode-IoTEdge4

디바이스 connection string 이 클립보드로 복사됩니다.

Get Device Info 메뉴를 통해서 Connectoin String 외의 정보를 Output 윈도우에서 확인 할 수 있습니다.

Step 4 : 라즈베리파이에 Azure IoT Edge 런타임 설치하기

이전단계에서 Azure IoT Edge 런타임을 설치했다면 Step 5로 이동합니다.

이번엔 라즈베리파이에 Azure IoT Edge 런타임을 설치해보겠습니다. Linux(x64)에서 Azure IoT Edge 런타임 설치 문서를 따라서 진행합니다.

Step 4.1 : Microsoft 키 및 소프트웨어 리포지토리 피드 등록

$ curl https://packages.microsoft.com/config/debian/stretch/multiarch/prod.list > ./microsoft-prod.list
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100    77  100    77    0     0    235      0 --:--:-- --:--:-- --:--:--   235

Step 4.2 : 생성된 목록에 복사

$ sudo cp ./microsoft-prod.list /etc/apt/sources.list.d/

Step 4.3 : Microsoft GPG 공개 키를 설치

$ curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   983  100   983    0     0   2445      0 --:--:-- --:--:-- --:--:--  2445

$ sudo cp ./microsoft.gpg /etc/apt/trusted.gpg.d/

Step 4.4 : 컨테이너 런타임 설치

$ sudo apt-get update
$ sudo apt-get install moby-engine
$ sudo apt-get install moby-cli

Step 4.5 : 모비 호환성을 위해 Linux 커널을 확인

일부 오류가 보이는데 우선 무시하고 넘어갑니다.

$ curl -sSL https://raw.githubusercontent.com/moby/moby/master/contrib/check-config.sh -o check-config.sh
$ chmod +x check-config.sh
$ ./check-config.sh

Step 4.6 : Azure IoT Edge 보안 데몬 설치

$ sudo apt-get update
$ sudo apt-get install iotedge

Step 4.7 : Azure IoT Edge 보안 데몬 구성 - 수동구성

데몬은 /etc/iotedge/config.yaml에 있는 구성 파일을 사용하여 구성할 수 있습니다. 이 파일은 기본적으로 쓰기 금지되어 있습니다 편집하려면 관리자 권한이 필요합니다.

VSCode에서 복사해 놓은 디바이스 Connection String을 YAML파일에 입력해줍니다. 잘 사용하는 에디터를 이용해서 수정합니다.

$ sudo nano /etc/iotedge/config.yaml
provisioning:
  source: "manual"
  device_connection_string: "<ADD DEVICE CONNECTION STRING HERE>"

# provisioning:
#   source: "dps"
#   global_endpoint: "https://global.azure-devices-provisioning.net"
#   scope_id: "{scope_id}"
#   registration_id: "{registration_id}"

파일을 저장하고 닫습니다. CTRL + X, Y, Enter

Step 4.8 : 데몬 다시시작

$ sudo systemctl restart iotedge

Step 4.9 : 서비스 상태 확인

systemctl 명령을 이용해서 서비스 실행상태를 확인합니다.

$ systemctl status iotedge
● iotedge.service - Azure IoT Edge daemon
   Loaded: loaded (/lib/systemd/system/iotedge.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2019-06-24 05:51:26 UTC; 13s ago
     Docs: man:iotedged(8)
 Main PID: 5932 (iotedged)
    Tasks: 9 (limit: 9513)
   CGroup: /system.slice/iotedge.service
           └─5932 /usr/bin/iotedged -c /etc/iotedge/config.yaml

Jun 24 05:51:28 UbuntuIoT iotedged[5932]: 2019-06-24T05:51:28Z [INFO] - Updating identity for module $edgeAgent
Jun 24 05:51:28 UbuntuIoT iotedged[5932]: 2019-06-24T05:51:28Z [INFO] - Pulling image mcr.microsoft.com/azureiotedge-agent:1.0...
Jun 24 05:51:35 UbuntuIoT iotedged[5932]: 2019-06-24T05:51:35Z [INFO] - Successfully pulled image mcr.microsoft.com/azureiotedge-agent:1.0
Jun 24 05:51:35 UbuntuIoT iotedged[5932]: 2019-06-24T05:51:35Z [INFO] - Creating module edgeAgent...
lines 1-19/19 (END) 

Step 4.10 : 실행중인 모듈 확인

iotedge 명령으로 배포되고 실행중인 모듈 리스트를 확인합니다.

$ sudo iotedge list
NAME             STATUS           DESCRIPTION      CONFIG
edgeAgent        running          Up 2 minutes     mcr.microsoft.com/azureiotedge-agent:1.0
edgeHub          running          Up a minute      mcr.microsoft.com/azureiotedge-hub:1.0

Step 5 : Azure Container Registry (ACR) 만들기

우리가 만든 도커이미지를 배포하기 위해서는 이미지를 컨테이너 레지스트리에 푸시 해야 합니다. 일단 이미지가 레지스트리에 올라가면 직접 IoT Edge 디바이스에 배포할 수 있습니다. Azure 에서는 Private 컨테이너 레지스트리인 Azure Container Registry(ACR)를 제공하는데 ACR을 만들어보겠습니다.

Step 5.1 : Azure Container Registry 만들기

  1. Azure Portal에 로그인 합니다.

  2. Container Registry 를 검색하여 만들기를 클릭합니다. Create a resource -> Containers -> Container Registry

    AcrCreate1

Step 5.2 : ACR 생성 파라미터를 입력

리소스그룹이름과 레지스트리 이름을 입력합니다.

AcrCreate2

Parameter Description Example
Registry Name Unique name within Azure and 5-50 alphanumeric characters only IoTHOL2019acr1
Subscription Your subscription
Resource Group Select the resource group used for your IoT Hub IoTHOL2019
Location Select the same region as your IoT Hub Korea Central
Admin user This enables "User Name" and "Password" to access ACR. Set to Enable Enabled
SKU Tier of ACR. Different tier gives different storage size limit, etc. Set to Basic for this lab Basic

Step 5.3 : ACR 배포를 시작

Create 를 클릭하여 배포를 시작합니다.

Step 5.4 : ACR에 로그인

후반부에 우리가 만든 컨테이너 이미지를 푸시 하기 위해서는 ACR에 로그인을 해야 합니다.

  1. VSCode open Terminal

    터미널 윈도우가 없다면 메뉴에서 Terminal -> New Terminal를 선택합니다.

    AcrCreate2

  2. ACR Access Key
    포탈에서 ACR의 Access Key를 복사합니다.

    AcrCreate4

  3. ACR에 아래 명령으로 로그인

    docker login <Your ACR Login Server Name> -u <Your ACR user name> -p <Your ACR password>

    예시 :

    AcrCreate5

관련자료 :

Step 6 : IoT Edge 모듈 샘플코드 준비

이번엔 샘플 코드를 통해서 모듈을 빌드해보겠습니다.

  • Github에서 Simulated Temperature Sensor 샘플 코드를 다운로드
  • 컴파일 / 빌드
  • Azure Container Registry로 업로드
  • 컨테이너를 배포

샘플코드 리파지토리 : IoT Edge Samples

Step 6.1 : 소스코드 다운로드

아래 명령으로 Github에서 Simulated Temperature Sensor 소스코드를 다운로드 합니다.

  1. Console (CMD)이나 VSCode terminal 을 열기

  2. git 명령 실행 예 : C:\Repo 위치로 클론

    cd C:\Repo
    git clone https://github.com/Azure/iotedge

    SimTempSensor1

Step 6.2 : 샘플 빌드

.NET 코어를 이용하여 빌드 합니다.

Note

아래 명령을 통해서 dotnet 코어가 설치되어 있는지 확인 할 수 있습니다.

PS C:\repo> dotnet --version  
2.2.204  
PS C:\repo>  

이 명령은 .NET Core SDK의 버전을 보여줍니다.

참조 : https://dotnet.microsoft.com/download/thank-you/dotnet-sdk-2.2.107-windows-x64-installer

Step 6.3 : Simulated Temperature Sensor 모듈 컴파일

컨테이너 모듈을 Azure IoT Edge에 배포하기 전에 컴파일하고 로컬에서 실행시켜봐야 합니다.

  1. SimulatedTemperatureSensor 디렉토리로 이동
    SimulatedTemperatureSensor 코드가 있는 디렉토리로 이동합니다. 소스코드는 이런 위치에 있습니다. <SampleRoot>\edge-modules\SimulatedTemperatureSensor

    예 : C:\repo\iotedge\edge-modules\SimulatedTemperatureSensor

    PS C:\repo\iotedge\edge-modules\SimulatedTemperatureSensor> dir
    
        Directory: C:\repo\iotedge\edge-modules\SimulatedTemperatureSensor
    
    Mode                LastWriteTime         Length Name
    ----                -------------         ------ ----
    d-----        5/20/2019   8:01 PM                config
    d-----        5/20/2019   8:01 PM                docker
    d-----        5/20/2019   8:01 PM                src
    -a----        5/20/2019   8:01 PM           2958 SimulatedTemperatureSensor.csproj
    
  2. 샘플코드 빌드 dotnet 명령으로 빌드합니다.

    dotnet publish -r linux-arm

    바이너리는 아래 위치에 생성됩니다. C:\repo\iotedge\edge-modules\SimulatedTemperatureSensor\bin\Debug\netcoreapp2.1\linux-arm

    예시 :

    PS C:\repo> cd .\iotedge\edge-modules\SimulatedTemperatureSensor\
    PS C:\repo\iotedge\edge-modules\SimulatedTemperatureSensor> dotnet publish -r linux-arm
    Microsoft (R) Build Engine version 16.0.450+ga8dc7f1d34 for .NET Core
    Copyright (C) Microsoft Corporation. All rights reserved.
    
      Restore completed in 6.21 sec for C:\repo\iotedge\edge-util\src\Microsoft.Azure.Devices.Edge.Util\Microsoft.Azure.Devices.Edge.Util.csproj.
      Restore completed in 8.48 sec for C:\repo\iotedge\edge-modules\SimulatedTemperatureSensor\SimulatedTemperatureSensor.csproj.
      Restore completed in 8.59 sec for C:\repo\iotedge\edge-modules\ModuleLib\Microsoft.Azure.Devices.Edge.ModuleUtil.csproj.
      Microsoft.Azure.Devices.Edge.Util -> C:\repo\iotedge\edge-util\src\Microsoft.Azure.Devices.Edge.Util\bin\Debug\netstandard2.0\Microsoft.Azure.Devices.Edge.Util.dll
      Microsoft.Azure.Devices.Edge.ModuleUtil -> C:\repo\iotedge\edge-modules\ModuleLib\bin\Debug\netcoreapp2.1\Microsoft.Azure.Devices.Edge.ModuleUtil.dll
      SimulatedTemperatureSensor -> C:\repo\iotedge\edge-modules\SimulatedTemperatureSensor\bin\Debug\netcoreapp2.1\win-x64\SimulatedTemperatureSensor.dll
      SimulatedTemperatureSensor -> C:\repo\iotedge\edge-modules\SimulatedTemperatureSensor\bin\Debug\netcoreapp2.1\win-x64\publish\

Step 7: Simulated Temperature Sensor 컨테이너

온도센서 모듈이 Edge 모듈로 작동하기 위해서는 컨테이너 이미지로 만들어야 합니다.

아래 내용에 주의를 기울여야 합니다.

  1. Container Type
  2. Container Image Name
  3. Container Tag
  4. Dockerfile
    Dockerfile 은 컨테이너 이미지를 어떻게 만드는지에 대하여 기술되어 있습니다.

컨테이너 이미지 이름은 두개의 파트로 이뤄져 있습니다.

Container Type

두가지 타입이 있습니다.

  • Linux container
  • Windows Container

여기서는 Linux Container를 사용합니다.

Container Image Name

이미지 이름은 슬래시로 분리되어 있는데 첫번째 파트는 레지스트리 호스트 이름입니다.

예 : myazureregistry.azurecr.io/myimage

규칙 :

  • Lowercase letters
  • Digits
  • Separators (., _, -)

Container Tag

태그로 특정 이미지를 구분합니다. 보통 버전번호와 함께 사용됩니다.

규칙 :

  • 영문자 대소문자
  • 숫자
  • Underscores (_), Periods (.), and dashes (-)

Step 7.1 : Container Type

Step 4에서 IoT Edge 런타임을 Linux 버전을 설치했기 때문에 이미지를 만드는 환경도 Linux Container가 되어야 합니다.

  1. Docker for Desktop 설정 열기

    Taskbar에서 Docker Desktop 아이콘을 오른쪽 클릭하고 메뉴를 표시합니다.

    Docker1

  2. Switch to Windows containers... 메뉴가 보이면 현재 Linux Container 입니다. 만약 Switch to Linux containers 가 표시되면 클릭 합니다.

    Docker2

  3. Confirm Warning

    Docker3

  4. Docker Desktop이 container type을 변경할 때 까지 기다립니다.

Step 7.2 : 컨테이너 이미지 빌드

아래 명령으로 컨테이너 이미지를 빌드 합니다.

docker build .\bin\Debug\netcoreapp2.1\linux-arm\publish -t <Tag> -f <Dockerfile>

이미지 이름 SimulatedTemperatureSensor

docker build .\bin\Debug\netcoreapp2.1\linux-arm\publish\ -t simulatedtemperaturesensor -f .\docker\linux\arm32v7\Dockerfile

Sending build context to Docker daemon  75.84MB
Step 1/8 : ARG base_tag=1.0.0-preview013-linux-arm32v7
Step 2/8 : FROM azureiotedge/azureiotedge-module-base:${base_tag}
1.0.0-preview013-linux-arm32v7: Pulling from azureiotedge/azureiotedge-module-base
3447b717941c: Pull complete                                                                                             8a139bc00a59: Pull complete                                                                                             f2a88e45a074: Pull complete                                                                                             bc408458c703: Pull complete                                                                                             e30d031d4ae9: Pull complete                                                                                             5f9bdce703de: Pull complete                                                                                             5c3a99376e0f: Pull complete                                                                                             8488cfde5253: Pull complete                                                                                             Digest: sha256:04d072e4208eebb21a090820c8dc910cc70fc62270609b7ac2a2a0e0ec68458b
Status: Downloaded newer image for azureiotedge/azureiotedge-module-base:1.0.0-preview013-linux-arm32v7
 ---> c2dbed530906
Step 3/8 : ARG EXE_DIR=.
 ---> Running in dc197339a53f
Removing intermediate container dc197339a53f
 ---> f2d39370595c
Step 4/8 : ENV MODULE_NAME "SimulatedTemperatureSensor.dll"
 ---> Running in 2ada11fce451
Removing intermediate container 2ada11fce451
 ---> 1748beb3cf89
Step 5/8 : WORKDIR /app
 ---> Running in f012533703db
Removing intermediate container f012533703db
 ---> 096b6c50ff37
Step 6/8 : COPY $EXE_DIR/ ./
 ---> e277d4570542
Step 7/8 : USER moduleuser
 ---> Running in 1ef373f42f07
Removing intermediate container 1ef373f42f07
 ---> 6b3a6460b481
Step 8/8 : CMD echo "$(date --utc +"[%Y-%m-%d %H:%M:%S %:z]"): Starting Module" &&     exec /usr/bin/dotnet SimulatedTemperatureSensor.dll
 ---> Running in 0502fe4396a7
Removing intermediate container 0502fe4396a7
 ---> 4b0f61191305
Successfully built 4b0f61191305
Successfully tagged simulatedtemperaturesensor:latest
SECURITY WARNING: You are building a Docker image from Windows against a non-Windows Docker host. All files and directories added to build context will have '-rwxr-xr-x' permissions. It is recommended to double check and reset permissions for sensitive files and directories.

아래 명령으로 이미지가 생성되었는지 확인 합니다.

docker images

예 :

PS C:\repo\iotedge\edge-modules\SimulatedTemperatureSensor> docker images
REPOSITORY                              TAG                      IMAGE ID            CREATED             SIZE
simulatedtemperaturesensor              latest                   088860719e39        4 seconds ago       398MB
mcr.microsoft.com/dotnet/core/runtime   2.1.10-nanoserver-1809   d6a221ed7eed        4 weeks ago         321MB

Step 7.3 : 이미지 Tag

docker tag 커멘드를 이용해서 ACR에 푸시하기위한 태그이름으로 변경해줍니다.

docker tag <Source Image>[:TAG] <Target Image>[:TAG]

예 : Using the image just built, tag them with simtemp:0.0.1

docker tag simulatedtemperaturesensor:latest iothol2019acr1.azurecr.io/simtemp:0.0.1

또는 이미지 아이디(IMAGE ID)를 이용해서 같은 명령을 수행할 수 있습니다.

docker tag 088860719e39 iotbootcamp2019acr1.azurecr.io/simtemp:0.0.1

Step 7.4 : 이미지 Push

이제 이미지를 빌드하고 태깅했으므로 업로드(push)할 준비가 다 되었습니다.

docker push 명령으로 ACR에 push 합니다.

docker push <Your Tagged Image Name>

Example :

docker push iotbootcamp2019acr1.azurecr.io/simtemp:0.0.1

Example Output :

PS C:\repo\iotedge\edge-modules\SimulatedTemperatureSensor> docker push iotbootcamp2019acr1.azurecr.io/simtemp:0.0.1
The push refers to repository [iotbootcamp2019acr1.azurecr.io/simtemp]
da499279ea2b: Pushed
416b2cdadff0: Pushed
b366e64214b3: Pushed
f354c3635730: Pushed
146252efae6c: Pushed
6eaf1cf63dfc: Pushed
a2bb3d322957: Pushed
761ff3ef5aab: Pushed
5c3e3ab9e119: Pushed
273db4b66a2d: Skipped foreign layer
0.0.1: digest: sha256:ce4d56e9a062f7a77e8008d1e57eceda455555f8083194fec30fffc302c56598 size: 2507

Step 7.5 : ACR에 이미지가 Push 되었는지 확인

ACR에 이미지가 Push 되었는지 확인합니다.

  1. Azure Portal에 로그인
  2. ACR 로 이동
  3. Repositories 메뉴로 이동
  4. 이미지가 있는지 태그와 함께 확인

예를들어 simtemp 이름과 태그 0.0.1 확인

SimTempSensor2

Step 8 : Deploy to your 라즈베리파이

이제 Azure IoT Edge 디바이스인 Ubuntu 가상머신에 Edge 모듈을 배포할 준비가 완료되었습니다. 이미지를 배포하기 위해서는 Deployment Manifest가 필요합니다. 여기에서는 Azure 포탈에서 Deployment Manifest를 만들어서 배포하겠습니다.

Step 8.1 : IoT Edge 상세 페이지

  1. Azure Portal에 로그인

  2. IoT Hub의 IoT Edge Device ID로 이동

    IoT Hub -> IoT Edge -> Ubuntu Device ID

    SimTempSensor3

    [!NOTE]
    이 단계에서는 런타임 에러를 볼 수 있습니다. 이는 아직 아무것도 배포를 하지 않았기 때문에 발생합니다.

  3. Device details 상세 페이지로 가서 Set modules 클릭

    SimTempSensor4

Step 8.2 : 컨테이너 레지스트리 셋팅

IoT Edge 런타임이 ACR에서 이미지를 Pull 해야하기 때문에 아래 정보를 입력해줍니다.

Refer to Step 5.4 : Login to your ACR

Parameter Description Example
Name Name of this setting BootCampACR
Address Your ACR Login Server Address iotbootcamp2019acr1.azurecr.io
User Name Your ACR Admin User Name iotbootcamp2019acr1
Password Your ACR Password

SimTempSensor5

Step 8.3 : Add Module

다음은 배포할 모듈을 지정해 줍니다.

  1. +Add 클릭
  2. IoT Edge Module 선택
  3. 모듈 이름 입력
    이 이름은 Azure IoT Edge가 사용하는 이름입니다. (vs. Module name)
  4. 이미지의 URL 태그를 포함한 풀 이미지 이름을 입력합니다.
  5. Save 클릭
  6. Next 클릭

SimTempSensor6

Step 8.4 : 메시지 라우팅 설정

Lab 2 와 마찬가지로 모듈 메시지가 IoT Hub로 전달되도록 설정합니다.

기본값으로 두고 Next를 클릭합니다.

Step 8.5 : Submit

포탈이 만든 Deployment Manifest를 검토합니다.

Warning

Deployment Manifest는 ACR의 아이디 패스워드를 포함하고 있음.

Submit을 클릭합니다.

Step 8.6 : 배포 모니터링

배포는 몇 분이 걸릴 수 있습니다. edgeAgent의 로그를 통해서 진행상황을 체크할 ㅅ수 있습니다.

Edge Agent 는 Azure IoT Edge 런타임의 일부로 Azure IoT Hub 와 통신하고 모듈 배포를 책임 집니다.

iotedge logs 명령을 통해서 배포상태를 체크합니다.

sudo iotedge logs -f edgeAgent

Enter Ctrl + c를 눌러 모니터링을 끝낼 수 있습니다. iotedge list 명령을 통해서 모듈 리스트와 상태를 확인 할 수 있습니다.

예 :

$ iotedge logs -f edgeAgent
[06/09/2019 03:32:14.668 PM] Edge Agent Main()
2019-06-09 08:32:14.900 -07:00 [INF] - Starting module management agent.
2019-06-09 08:32:15.077 -07:00 [INF] - Version - 1.0.7.1.22377503 (f7c51d92be8336bc6be042e1f1f2505ba01679f3)
2019-06-09 08:32:15.078 -07:00 [INF] -
        █████╗ ███████╗██╗   ██╗██████╗ ███████╗
       ██╔══██╗╚══███╔╝██║   ██║██╔══██╗██╔════╝
       ███████║  ███╔╝ ██║   ██║██████╔╝█████╗
       ██╔══██║ ███╔╝  ██║   ██║██╔══██╗██╔══╝
       ██║  ██║███████╗╚██████╔╝██║  ██║███████╗
       ╚═╝  ╚═╝╚══════╝ ╚═════╝ ╚═╝  ╚═╝╚══════╝

 ██╗ ██████╗ ████████╗    ███████╗██████╗  ██████╗ ███████╗
 ██║██╔═══██╗╚══██╔══╝    ██╔════╝██╔══██╗██╔════╝ ██╔════╝
 ██║██║   ██║   ██║       █████╗  ██║  ██║██║  ███╗█████╗
 ██║██║   ██║   ██║       ██╔══╝  ██║  ██║██║   ██║██╔══╝
 ██║╚██████╔╝   ██║       ███████╗██████╔╝╚██████╔╝███████╗
 ╚═╝ ╚═════╝    ╚═╝       ╚══════╝╚═════╝  ╚═════╝ ╚══════╝

2019-06-09 08:32:15.200 -07:00 [INF] - Started operation refresh twin config
2019-06-09 08:32:15.226 -07:00 [INF] - Edge agent attempting to connect to IoT Hub via Amqp_Tcp_Only...
2019-06-09 08:32:15.822 -07:00 [INF] - Created persistent store at C:\Windows\TEMP\edgeAgent
2019-06-09 08:32:16.326 -07:00 [INF] - Edge agent connected to IoT Hub via Amqp_Tcp_Only.
2019-06-09 08:32:16.693 -07:00 [INF] - Obtained Edge agent twin from IoTHub with desired properties version 2 and reported properties version 4.
2019-06-09 08:32:17.398 -07:00 [INF] - Plan execution started for deployment 2
2019-06-09 08:32:17.432 -07:00 [INF] - Executing command: "Command Group: (
  [Create module mysimtempsensor]
  [Start module mysimtempsensor]
)"
2019-06-09 08:32:17.434 -07:00 [INF] - Executing command: "Create module mysimtempsensor"
2019-06-09 08:32:47.091 -07:00 [INF] - Executing command: "Start module mysimtempsensor"
2019-06-09 08:32:48.152 -07:00 [INF] - Executing command: "Command Group: (
  [Create module edgeHub]
  [Start module edgeHub]
)"
2019-06-09 08:32:48.152 -07:00 [INF] - Executing command: "Create module edgeHub"
2019-06-09 08:32:56.393 -07:00 [INF] - Executing command: "Start module edgeHub"
2019-06-09 08:32:57.177 -07:00 [INF] - Plan execution ended for deployment 2
2019-06-09 08:32:57.513 -07:00 [INF] - Updated reported properties
2019-06-09 08:33:02.740 -07:00 [INF] - Updated reported properties

$ sudo iotedge list
NAME             STATUS           DESCRIPTION      CONFIG
edgeAgent        running          Up 4 minutes     mcr.microsoft.com/azureiotedge-agent:1.0
edgeHub          running          Up 3 minutes     mcr.microsoft.com/azureiotedge-hub:1.0
mysimtempsensor  running          Up 3 minutes     iotbootcamp2019acr1.azurecr.io/simtemp:0.0.1

Step 9 : 모듈 확인

아래 순서로 모듈의 상태를 확인 해 봅니다. Lab 2

  • iotedge list
  • iotedge logs -f <You Module Name>
  • Device Explorer

Step 10 : 메시지 전송 확인

Azure IoT Hub까지 메시지가 전달되는지 Device Explorer를 통해 확인 합니다.

Device Explorer