AWS QuickSight, Grafana를 활용한 실시간 데이터 시각화
1. 개요
AWS IoT에서는 다양한 센서 데이터를 수집하고 처리할 수 있으며, 이러한 데이터를 실시간으로 분석하고 시각화하는 것은 매우 중요합니다. AWS QuickSight와 Grafana를 활용하면 AWS IoT Core에서 수집된 데이터를 효과적으로 시각화하고, 이상 감지 및 데이터 패턴을 쉽게 분석할 수 있습니다. 이번 포스팅에서는 AWS QuickSight와 Grafana를 활용하여 AWS IoT 데이터를 실시간으로 시각화하는 방법을 다루겠습니다.
2. AWS IoT 데이터 시각화 개요
2.1 AWS QuickSight 개요
AWS QuickSight는 AWS에서 제공하는 비즈니스 인텔리전스(BI) 서비스로, 클라우드 기반 데이터 시각화 및 분석을 지원합니다. AWS S3, AWS IoT Analytics, AWS Athena 등의 다양한 AWS 서비스와 연동하여 데이터를 시각화할 수 있습니다.
2.2 Grafana 개요
Grafana는 오픈소스 기반의 대시보드 및 모니터링 도구로, 다양한 데이터 소스를 연동하여 실시간 데이터를 시각화할 수 있습니다. AWS IoT Core에서 수집한 데이터를 AWS Timestream, InfluxDB, Prometheus 등을 활용하여 Grafana에서 시각화할 수 있습니다.
3. AWS IoT Device에서 데이터 전송 (ESP32 예제)
AWS IoT Device는 ESP32를 사용하여 온도 데이터를 수집하고 AWS IoT Core로 전송합니다. ESP32 IDF 및 AWS IoT Device SDK for Embedded C를 사용하여 MQTT 프로토콜을 통해 데이터를 전송하는 예제를 작성합니다.
3.1 ESP32 환경 설정
idf.py set-target esp32
idf.py menuconfig
- Wi-Fi 설정 및 AWS IoT Core 연결 정보 입력
- AWS IoT 인증서 및 정책을 설정하여 디바이스 인증
3.2 ESP32 코드 예제 (온도 센서 데이터 전송)
#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "aws_iot_mqtt_client_interface.h"
#include "driver/adc.h"
#define AWS_IOT_MQTT_TOPIC "iot/temperature"
void publish_temperature(void *param) {
while (1) {
int temp_value = adc1_get_raw(ADC1_CHANNEL_0);
char message[50];
snprintf(message, sizeof(message), "{\"temperature\": %d}", temp_value);
aws_iot_mqtt_publish(AWS_IOT_MQTT_TOPIC, message, strlen(message));
vTaskDelay(5000 / portTICK_PERIOD_MS);
}
}
void app_main() {
aws_iot_mqtt_connect();
xTaskCreate(publish_temperature, "publish_temperature", 4096, NULL, 5, NULL);
}
4. AWS IoT 서버에서 데이터 처리 (Python 예제)
AWS Lambda를 사용하여 AWS IoT Core에서 수집된 데이터를 AWS S3 또는 Timestream으로 저장합니다.
import json
import boto3
iot_data = boto3.client('iot-data')
db_client = boto3.client('timestream-write')
def lambda_handler(event, context):
payload = json.loads(event['Records'][0]['Sns']['Message'])
temperature = payload['temperature']
db_client.write_records(
DatabaseName='IoTDatabase',
TableName='TemperatureTable',
Records=[
{
'MeasureName': 'temperature',
'MeasureValue': str(temperature),
'Time': str(int(time.time() * 1000))
}
]
)
return {
'statusCode': 200,
'body': json.dumps('Data stored successfully')
}
5. AWS QuickSight를 이용한 데이터 시각화
5.1 AWS QuickSight 설정
- AWS QuickSight 콘솔에서
새 데이터 세트
를 생성합니다. - AWS IoT Analytics 또는 S3 버킷을 데이터 소스로 선택합니다.
- 데이터 준비 및 필터링을 수행한 후 시각화 대시보드를 생성합니다.
- 온도 데이터를 시계열 그래프 형태로 구성합니다.
5.2 QuickSight 대시보드 구성
- 온도 센싱 데이터의 시간별 변화 그래프 생성
- 이상 감지 알림 기능 추가
- 평균, 최소, 최대 온도 값 표시
6. Grafana를 이용한 실시간 데이터 시각화
6.1 Grafana 설정
- Grafana를 설치하고 실행합니다.
AWS Timestream
을 데이터 소스로 추가합니다.- 쿼리를 작성하여 온도 데이터를 가져옵니다.
- 실시간 대시보드를 구성합니다.
6.2 Grafana 대시보드 구성
SELECT measure_value::double AS temperature, time
FROM IoTDatabase.TemperatureTable
WHERE measure_name = 'temperature'
ORDER BY time DESC
6.3 Grafana 패널 설정
- 온도 데이터 실시간 업데이트
- 임계값 설정 및 알림 기능 추가
- 다양한 시각화 옵션 (라인 차트, 히트맵 등) 활용
7. 결론
AWS IoT 데이터를 실시간으로 시각화하는 것은 IoT 시스템의 상태를 모니터링하고, 이상 감지를 수행하는 데 매우 중요합니다. AWS QuickSight는 비즈니스 인텔리전스 및 분석 용도로 적합하며, Grafana는 실시간 대시보드를 구축하는 데 강력한 도구입니다. AWS IoT Core에서 수집된 데이터를 AWS Timestream 또는 S3를 통해 저장하고, 이를 QuickSight 및 Grafana에서 시각화함으로써 효율적인 IoT 데이터 모니터링 시스템을 구축할 수 있습니다.
'AWS IoT' 카테고리의 다른 글
ESP32 IDF 기반 AWS IoT 디바이스 구현 (0) | 2025.04.15 |
---|---|
AI/ML을 활용한 이상 온도 감지 및 자동 대응 (0) | 2025.04.14 |
AWS Kinesis, AWS S3를 이용한 데이터 수집 (0) | 2025.04.12 |
AWS IoT 서버에서 Amazon SNS 및 AWS CloudWatch와 연동하여 알림 전송 (0) | 2025.04.11 |
AWS Lambda를 활용한 이벤트 기반 자동화 (이상 온도 감지 및 알림) (0) | 2025.04.10 |