호랑이한테물릴래

Final_project Day 7 본문

DevOps/sprint_project

Final_project Day 7

호랑이한테물릴래 2022. 8. 2. 18:42
반응형

Kinesis로 데이터를 전송하기 위한 Test_Lambda 구현.

import boto3
import json
import time
import os
from datetime import datetime
from random import randint

my_stream_name = 'test-stream'

client = boto3.client('kinesis', region_name=os.getenv('AWS_DEFAULT__REGION'), aws_access_key_id=os.getenv('AWS_ACCESS__KEY_ID'), aws_secret_access_key=os.getenv('AWS_SECRET_ACCESS__KEY_ID'))

def lambda_handler(event, context):
    count = event["body"]["count"]
    inter = event["body"]["interval"]
    
    def put_to_stream(temp, humi, co2, pres ,timestamp ,devi):
        payload = {
            "result": "success",
            "error_code": err,
            "device_id": devi,
               "coord": {
                    "lon": "-8.61",
                    "lat": "41.15"
                  },
            "server_time": timestamp,
            "temperature": temp,
            "pressure": pres,
            "humidity": humi,
            "co2": co2
        }

        put_response = client.put_record(
                    StreamName=my_stream_name,
                    Data=json.dumps(payload),
                    PartitionKey=devi)
        print(put_response)
        return put_response
        
    i = 0
        
    while i < count:
        err_randint = randint(0,4)
        if err_randint == 0:
            err = 1
        else:
            err = 0
        devi = '39278391'
        temp = randint(13, 35)
        humi = randint(50, 90)
        pres = randint(750, 1500)
        co2  = randint(675, 825)
        timestamp = time.time()

        result = put_to_stream(temp, humi, co2, pres ,timestamp ,devi)
        print('response: {}'.format(result))
        time.sleep(inter)
        i = i + 1

- API Gateway를 트리거로 사용하여 body의 count, interval 값으로 테스트 설정값 지정

- Lambda 제한시간을 미리 지정해서 지나치게 길거나 많은 count는 막을 수 있도록 설정 (최대 1분)

- 1/5 확률로 error가 발생하도록 설정

- JSON에서 value를 추출을 위한 코드 형식 참고

Grafana에 여러 메트릭 추가

- Kinesis, EC2, S3 등 아키텍처 전반 프로세스 흐름을 파악할 수 있는 대쉬보드 구성

- 정상값 설정을 통해서 이상수치 파악

- error 코드 파악 차트 생성

반응형

'DevOps > sprint_project' 카테고리의 다른 글

Final_project Day 9  (0) 2022.08.04
Final_project Day 8  (0) 2022.08.03
Final_project Day 7  (0) 2022.08.02
Final_project Day 6  (0) 2022.08.02
Final_project Day 5  (0) 2022.07.29
Final_project Day 4  (0) 2022.07.28
0 Comments
댓글쓰기 폼