JINIers
Building an IoT Analytics Pipeline on Google Cloud 본문
※ 수정
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번이나 띄워
킹받네
나처럼 workflow가 안만들어지거나 만들어졌어도 그 다음 vm에서 에러가 나는 경우가 많았봄
한참 뒤져서 리뷰에서 이런걸 찾았다.
땡큐 felix... 당신의 말을 믿고 그대로 시도해볼게..
는 한명의 말을 믿을 수가 없어서 계속 넘겨서 찾음
workflow 안만들어져서 생각보다 빡친 사람들이 많았나봄 다들 별점테러 오짐
4점 준 난 천사나 다름없음(??
거의 뭐 배민 별점테러수준임
땡큐 orawan... 땡큐...
대충 어느정도 api의 문제라는 걸 깨달음
에러 처리방법
dataflow api 활성화가 되어있음 -> 이걸 disable 시켰다가 다시 enable
그 뒤에 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
'GCP > Qwiklabs' 카테고리의 다른 글
220510_Streaming IoT Data to Cloud Storage (0) | 2022.05.10 |
---|---|
Building and Deploying Machine Learning Solutions with Vertex AI: Challenge Lab (0) | 2022.05.04 |
Building and Deploying Machine Learning Solutions with Vertex AI: Challenge Lab (0) | 2022.04.28 |
Vertex Pipelines: Qwik Start (0) | 2022.04.27 |
Deploy a BigQuery ML Customer Churn Classifier to Vertex AI for Online Predictions (0) | 2022.04.26 |