Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

JINIers

Building an IoT Analytics Pipeline on Google Cloud 본문

GCP/Qwiklabs

Building an IoT Analytics Pipeline on Google Cloud

JINIers 2022. 5. 2. 16:02

※ 수정

220930 : 내용 수정


Google Cloud에서 IoT 분석 파이프라인 구축

 

 

구성요소 2가지

1. 장치관리자 : 서비스에 장치를 등록, 장리츨 모니터링하고 구성할 수 있다.
2. 프로토콜 브리지 : 기기가 google cloud에 연결하는 데 사용할 수 있는 MQTT를 지원

* MQTT : 메시지 큐잉 텔레메트리 트랜스포트, Message Queuing Telemetry Transport
- IoT, M2M을 위한 프로토콜, 최소한의 전력과 패킷으로 통신하는 프로토콜


목표

  • Cloud IoT Core를 사용하여 MQTT 기반 장치 연결 및 관리(시뮬레이션된 장치 사용)
  • Cloud Pub/Sub를 사용하여 Cloud IoT Core에서 정보 스트림을 수집합니다.
  • Cloud Dataflow를 사용하여 IoT 데이터를 처리합니다.
  • BigQuery를 사용하여 IoT 데이터를 분석합니다.

1. dataflow API 사용설정 확인

APIs & services > enabled apis & services > api 활성화 확인
1. cloud IoT API
2. cloud Pub/Sub API
3. dataflow API


2. cloud Pub/Sub 주제만들기

cloud Pub/Sub : 비동기식 글로벌 메시징 서비스
Pub/Sub > topics > create topic

topic id : iotlab

점 세개 > view permissions > new principals >
 입력 > save
new principals : cloud-iot@system.gserviceaccount.com
role : pub/sub publisher


3. bigquery 데이터세트 만들기


bigquery > create dataset > 
dataset id : iotlabdataset


iotlabdataset > create table > 
name : sensordata

schema > +add field > 
- timestamp / type : timestamp
- device / type : string
- temperature / type : float


4. 클라우드 스토리지 버킷 생성


cloud storage > create bucket > 
name : qwiklabs-gcp-01-3cc9585b34b3-bucket
location type : multi-region 

create



5. cloud dataflow 파이프라인 설정


dataflow > + CREATE JOB FROM TEMPLATE > 
dataflow template : pub/sub topic to bigquery > 설정 > run job


설정

- job name : iotlabflow
- region : us-central1
- zone : us-central1-a

- Input Pub/Sub topic :  projects/qwiklabs-gcp-03-b8efb7ba4d00/topics/iotlab
- BigQuery output table : qwiklabs-gcp-03-b8efb7ba4d00:iotlabdataset.sensordata
- Temporary location : gs://qwiklabs-gcp-03-b8efb7ba4d00-bucket/tmp

*하얀 공란에 프로젝트 id를 넣어

- Max workers : 2
- Machine type : n1-standard-1





는 에러가 남

 

error : Job creation failed

에러코드 어쩌고 : The workflow cloud not be created.

tracking number : 어쩌고

 

얘를 무려 13번을 봤다.

니가 세븐틴이야 뭐야 에러를 무슨 13번이나 띄워

킹받네

 

나처럼 workflow가 안만들어지거나 만들어졌어도 그 다음 vm에서 에러가 나는 경우가 많았봄

한참 뒤져서 리뷰에서 이런걸 찾았다.

 

땡큐 felix... 당신의 말을 믿고 그대로 시도해볼게..

 

 

 

 

 

는 한명의 말을 믿을 수가 없어서 계속 넘겨서 찾음

workflow 안만들어져서 생각보다 빡친 사람들이 많았나봄 다들 별점테러 오짐

4점 준 난 천사나 다름없음(??

거의 뭐 배민 별점테러수준임

 

리뷰... 최고...

 

땡큐 orawan... 땡큐...

 

대충 어느정도 api의 문제라는 걸 깨달음

 

 

에러 처리방법

dataflow api 활성화가 되어있음 -> 이걸 disable 시켰다가 다시 enable

얘 눌러

 

 

 

이러면 이제 api 다시 disable 됨

 

그 뒤에 workflow를 다시 만들면 해결!! 이 된다.

근데 이제 나는 

- Max workers : 2
- Machine type : n1-standard-1

이걸 두개를 설정 안하고 그냥 run job을 눌렀다가 화들짝 놀라서 정지시킴

근데 정지시키면 파이프라인이 안만들어짐

만들려고 커맨드창에서 gcloud 명령어를 입력했으나 뭐 계정 권한 어쩌고 하면서 안되더라

심지어 삭제도 안됨 진짜 킹받음

삭제가 안되서 여기서 20분이나 날려먹엇쟈나

그래서 그냥 쿨스루 하고 다음걸 함

 


6. 컴퓨터 엔진 vm 준비

iot-device-simulator의 ssh >


[가상환경 만들기]

sudo pip3 install virtualenv
virtualenv -p python3 venv
source venv/bin/activate

 

[gcloud SDK 초기화]

gcloud auth login --no-launch-browser



y >  url 열어서 인증키 입력 > 사용할 클라우드 프로젝트 선택 : 랩 프로젝트 선택 > linux 업데이트

얘를 열어

그럼 이렇게 승인코드가 나옴

승인코드

 

붙여넣어

 

sudo apt-get update

 

[sw 패키지 설치 확인]

sudo apt-get install python-pip openssl git -y

 

[pip을 이용하여 필요한 python 구성요소 추가]

pip install pyjwt paho-mqtt cryptography



[분석 데이터 추가]

git clone http://github.com/GoogleCloudPlatform/training-data-analyst




7. IoT 장치용 레지스트리 만들기

[환경변수 지정]

export PROJECT_ID=qwiklabs-gcp-01-81825ef01329
export MY_REGION=us-central1


[레지스트리 생성]

gcloud iot registries create iotlab-registry \
   --project=$PROJECT_ID \
   --region=$MY_REGION \
   --event-notification-config=topic=projects/$PROJECT_ID/topics/iotlab

8. 암호화 키 쌍 생성

cd $HOME/training-data-analyst/quests/iotlab/
openssl req -x509 -newkey rsa:2048 -keyout rsa_private.pem \
    -nodes -out rsa_cert.pem -subj "/CN=unused"

9. 레지스트리에 시뮬레이션된 장치 추가

[temp-sensor-buenos-aires 장치 생성]

gcloud iot devices create temp-sensor-buenos-aires \
  --project=$PROJECT_ID \
  --region=$MY_REGION \
  --registry=iotlab-registry \
  --public-key path=rsa_cert.pem,type=rs256

  

[temp-sensor-istanbul 장치 생성]

gcloud iot devices create temp-sensor-istanbul \
  --project=$PROJECT_ID \
  --region=$MY_REGION \
  --registry=iotlab-registry \
  --public-key path=rsa_cert.pem,type=rs256

10. 시뮬레이션된 장치 실행

 

[CA 루트 인증서 다운로드]

cd $HOME/training-data-analyst/quests/iotlab/
curl -o roots.pem -s -m 10 --retry 0 "https://pki.goog/roots.pem"


[첫번째 시뮬레이션 장치 실행]

python cloudiot_mqtt_example_json.py \
   --project_id=$PROJECT_ID \
   --cloud_region=$MY_REGION \
   --registry_id=iotlab-registry \
   --device_id=temp-sensor-buenos-aires \
   --private_key_file=rsa_private.pem \
   --message_type=event \
   --algorithm=RS256 > buenos-aires-log.txt 2>&1 &


* 백그라운드에서 계속 실행됨

 


[두번째 시뮬레이션 장치 실행]

python cloudiot_mqtt_example_json.py \
   --project_id=$PROJECT_ID \
   --cloud_region=$MY_REGION \
   --registry_id=iotlab-registry \
   --device_id=temp-sensor-istanbul \
   --private_key_file=rsa_private.pem \
   --message_type=event \
   --algorithm=RS256


   
*원격 분석 데이터는 시뮬레이션된 기기에서 Cloud IoT Core를 통해 Cloud Pub/Sub 주제로 흐른다.

그러면 Dataflow 작업은 Pub/Sub 주제에서 메시지를 읽고 해당 내용을 BigQuery 테이블에 작성

 

두번째 시뮬레이션 장치 실행


11. bigquery를 사용하여 센서 데이터 분석

 

bigquery > 쿼리편집기 > 입력 > run

SELECT timestamp, device, temperature from iotlabdataset.sensordata
ORDER BY timestamp DESC
LIMIT 100

Comments