2025. 2. 20. 06:54ㆍ클라우드 컴퓨팅
AmazonTimestream: 시계열 데이터 베이스
DynamoDB: NoSQL 데이터 베이스
AmazonTimestream은 우리가 받은 데이터를 시각적으로 다양하게 나타낼 수 있는 도구다.
DynamoDB는 분산형 DB로 그래프, 키-값 형태와 같이 다양한 구조로 데이터를 관리할 수 있다.
우리가 라즈베리를 통해 받은 메시지를 시계열 데이터로 바꿔주기 위해서는 AmazonTimestrea에서 시계열 데이터베이스 와 테이블을 생성해야한다.
AWS서비스에 Timestream 검색 후 LiveAnalytics의 리소스 > 데이터베이스 창에서 데이터베이스를 생성한다.
데이터베이스명을 정하고 데이트베이스 생성하기 클릭.

정상적으로 생성되면 아래와같이 뜬다.

이제 LiveAnalytics의 리소스 > 테이블 창에서 테이블을 생성한다.
테이블을 생성할 때 데이터베이스는 위에서 생성한 데이터베이스를 선택하면 된다. 데이터베이스칸을 선택하면 생성한 데이터베이스가 자동으로 뜬다. 이걸 클릭.

그다음 테이블명을 입력해주고 스키마 설정에서 기본 파티셔닝을 체크해준 다음 테이블 생성을 누르면 테이블도 생성된다.

메시지를 통해 들어오는 데이터를 관리하기 위해서는 규칙 편집이 필요하다. 데이터를 시각화 할 때 어떤것을 어떤 값으로 나타낼지 속성을 설정해야한다.
다시 IoT Core > 메시지 라우팅 > 규칙 창에 들어가서 규칙 생성을 누른다.

규칙 이름을 작성해주고 다음 클릭.
이제 sql문을 작성해야 한다. 내 라즈베리파이에서 받는 메시지의 모든 정보를 받아야하기 때문에 내 토픽에서 모든 정보를 쿼리하겠다는 의미로 SQL문을 작성한다. 만약 토픽명에 언더바(_)가 들억나다면 슬래시(/)로 바꿔작성해야 한다.
SELECT * FROM '토픽명'

SQL문 작성 후 다음을 누르면 규칙 작업 편집을 하게 된다.
Timestream에서 생성한 테이블을 이용해야하기 때문에 규칙 작업란의 작업에 timestream table 검색 후 클릭, 위에서 생성한 데이터베이스, 테이블을 선택한다.

차원이란 데이터를 어떻게 분류하고 시각화할지 결정하는 요소이다. 여기서 어떤 차원명, 갯수를 생성하냐에 따라 시각화에서 선택할 수 있는 데이터가 달라진다.
예를 들어 youngjang2, cpu, ram 데이터 3개를 시각화하고싶으면 아래와 같이 차원 이름과 차원 값을 작성하면 된다.

차원 설정 후 IAM 역할 란에서 새역할 생성 후 역할 명을 입력하고 IAM 역할을 새로 생성하고 다음을 누르면 최종 검토창이 나온다.

생성을 누르면 위 정보대로 규칙 생성이 된다.
다시 Timestream > 쿼리편집기에서 편집기 실행 후 아래와 같이 저장된 데이터(라즈베리파이로부터 받은 메시지)를 조회할 수 있다.


이렇게 뜨면 시각화를 위한 시계열 데이터 관리가 끝난다.
시각화를 위해서는 EC2, CloudWatch, Grafana 대시보드를 활용해야한다.

EC2: AWS에서 제공하는 가상 서버
CloudWatch: AWS의 모니터링 서비스
Grafana: 시각화 도구로 데이터를 대시보드로 시각적으로 표현
데이터를 시각화하기 위해서는 시각화 도구가 필요한데 우리는 AWS에서 제공하는 웹사이트에 시각화 할 것이다. 따라서 EC2를 활용해서 서버를 실행시키고 CloudWatch를 활용해 EC2(AWS)에서 생성된 데이터를 시각화 할 수 있는 웹사이트Grafana로 전달시켜준다고 보면 된다.
EC2 → CloudWatch → Grafana
AWS서비스창에서 EC2를 검색해서 들어가고 인스턴스 창에 들어간다. 인스턴스 시작을 눌러서 인스턴스 명을 입력하고 AMI로 Red Hat (Linux 환경) 을 선택한다.

인스턴스 유형은 t2.micro 선택

.pem키를 생성하고 키페어로 선택한다.

네트워크 설정에서는 편집을 눌러서 보안그룹명, 유형을 수정한다. Grafana 포트가 3000이기때문에 사용자 지정 TCP로 3000번 포트를 열도록 인바운드 보안 그룹 규칙을 추가한다.

생성버튼을 누르면 가상 서버 EC2가 생성된다.
EC2는 켜져있는 시간에 따라 비용이 부과되기 때문에 사용 후 항상 종료나 정지를 해야한다.(인스턴스명 우클릭>터미널 종료/정지)
생성된 EC2에 Grafana를 설치한다.
그라파나 다운 명령어
sudo yum install -y https://dl.grafana.com/enterprise/release/grafana-enterprise-11.2.0-1.x86_64.rpm
그라파나 시작 명령어
sudo systemctl start grafana-server.service
부팅 시 그라파나 자동 시작 설정 명령어
sudo systemctl enable grafana-server.service
Grafana 접속 시 초기 id와 pw는 admin이다. (비밀번호 변경 가능)
EC2로 그라파나를 열었다면 이제 CloudWatch(AWS)와 Grafana를 연동해야한다.
EC2 역할 설정을 변경해야하는데 이것은 IAM에서 할 수 있다.
IAM: AWS 서비스나 사용자에게 특정 권한을 부여할 수 있음(권한 정의)
AWS 서비스창에서 IAM 검색 후 역할에서 역할 생성을 클릭한다. EC2에서 Grafana서비스를 이용할 것이기 때문에 사용사례는 EC2로 선택한다.

그다음은 EC2에 권한을 추가해야한다. AdministratorAccess < 맨 위에걸 선택해주고 넘어간다.

역할 이름만 입력해주고 역할을 생성해준다.

역할 생성 후 EC2에게 역할을 할당해야한다.
EC2에 IAM 역할 할당하는 법
EC2창에서 적용하고자하는 EC2이름 위에서 마우스 우클릭 → 보안 → IAM 역할 수정 → IAM 역할에서 생성한 역할(youngjang2-grafana) 선택 후 IAM 역할 업데이트 클릭
EC2에 생성된 Grafana 접속 방법
EC2의 인스턴스 세부사항을 보면 인스턴스에 할당된 인스턴스 퍼블릭 IPv4 주소가 숫자로 나와있을 것이다. 이 숫자+ :3000를 입력하면 인스턴스 그라파나 사이트로 이동된다.
인스턴스 퍼블릭IPv4 주소:3000
제대로 접속 시 아래와같은 그라파나 로그인 창이 뜬다.

이제 Grafana와 Timestream을 연동해야한다.
Grafana - Amazon Timestream 연동 방법
그라파나 로그인 후 Connections 카테고리에 Add new connection이 있다. Add new connection에서 Amazon Timestream 검색 후 클릭 → install → Add new data source

설치 후 아래창으로 업데이트된다. Connection Details를 작성해주고 위에서 생성한 데이터베이스, 테이블을 선택 후 Save & Test 클릭

Connection Details 작성할 때
Authentication Provider: Access & secret key 선택
Access Key ID& Secret Access Key: IAM에서 액세스 키 발급 후 작성 ( IAM 사용자 →사용자 생성 → 액세스키 만들기 →사용사례 CLI선택 →액세스키 검색)
Default Region: EC2가 생성된 지역
연결 성공 시 뜨는 UI

연동 후 다시 Grafana 홈으로 돌아가 대시보드 카테고리를 택하고 +Create dashboard를 클릭한다.

+Add visualization 클릭 후

grafana-timestream-datasource 클릭

아래와 같은 창이 뜬다. 여기서 데이터를 선택해 시각화 할 수 있다.

Query 창에서 데이터베이스, 테이블, 시각화하고자하는 값을 선택한 후 Format as는 Table로 설정, 몇개를 보여줄지 설정하고 SQL문을 수정해준다.
시간에 따른 그래프 정렬 SQL문
SELECT * FROM $__databae.$__table ORDER BY time ASC
Transform data섹션에서 +Add transformation 클릭한다.

클릭 시 우측에 Add another transformation 창이 뜬는데 여기서 데이터를 어떻게 가져올지 정한다.
Filter data by values를 선택

CPU 값을 예시로 받아볼거기 때문에 아래와 같이 수정한다.

설정을 마치면 완성되는 시각화 그래프는 아래와 같다.

우측 타임시리즈에서 필요한 시각화 타입에 따라 여러가지 그래프를 선택할 수 있다.
종류는 게이지 바, 원형 그래프, 테이블, 이진 시각화 등 다양하다.

추가한 차원대로 그래프도 추가해보았다.

예시2)

이렇게 라즈베리파이로부터 mqtt 통신을 통해 전달되는 데이터를 실시간으로 그라파나로 시각화 해서 나타낼 수 있다.
'클라우드 컴퓨팅' 카테고리의 다른 글
| AWS_클라우드 컴퓨팅 프로젝트 #3) 프로젝트 구성과 센서 데이터 수집2 (라즈베리파이 카메라 모듈 에러 해결 방법) (0) | 2025.02.17 |
|---|---|
| AWS_클라우드 컴퓨팅 프로젝트 #2) 프로젝트 구성과 센서 데이터 수집1 (라즈베리파이 AWS 연결) (1) | 2025.02.17 |
| AWS_클라우드 컴퓨팅 프로젝트 #1) AWS를 사용해 보면서 (2) | 2025.01.03 |