๐ AWS S3 + AWS Glue + Athena + Grafana โ ์๋โํฌโ์๋ ๋ถ์ ํ๋ก์ ํธ
Source: Dev.to
๊ฐ์
์ด ํ๋ก์ ํธ์์๋ AWS ์๋น์ค๋ฅผ ์ฌ์ฉํ์ฌ ์์ ํ ๋ถ์ ํ์ดํ๋ผ์ธ์ ๊ตฌ์ถํ์ต๋๋ค:
- S3์์ CSV ํ์ผ ์ฝ๊ธฐ
- AWS Glue๋ฅผ ์ฌ์ฉํด ํ ์ด๋ธ๋ก ๋ณํ
- Amazon Athena๋ก ๋ฐ์ดํฐ ์ฟผ๋ฆฌ
- Grafana์์ ๊ฒฐ๊ณผ ์๊ฐํ
์ด ์ํฌํ๋ก์ฐ๋ ํด๋ผ์ฐ๋ ๋ฐ DevOps ํ๊ฒฝ์์ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค.
์ํคํ ์ฒ ๋ค์ด์ด๊ทธ๋จ
(์ฌ๊ธฐ์ ์ํคํ ์ฒ ๋ค์ด์ด๊ทธ๋จ ์ด๋ฏธ์ง ์ฝ์ )
์ฌ์ฉ ์๋น์ค
| Service | Purpose |
|---|---|
| S3 | ์์ CSV ํ์ผ ์ ์ฅ |
| Glue Crawler | ์คํค๋ง ๊ฐ์ง ๋ฐ Athena ํ ์ด๋ธ ์์ฑ |
| Glue Data Catalog | ํ ์ด๋ธ ๋ฉํ๋ฐ์ดํฐ ๊ด๋ฆฌ |
| Athena | S3 ํ์ผ์ ๋ํ SQL ์ฟผ๋ฆฌ ์คํ |
| Grafana | Athena ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ ์๊ฐํ |
๋จ๊ณ 1 โ CSV ๋ฐ์ดํฐ๋ฅผ S3์ ์ ๋ก๋
S3 ๋ฒํท์ ํด๋ ๊ตฌ์กฐ๋ฅผ ๋ง๋ค๊ณ AWS CLI๋ฅผ ์ฌ์ฉํด CSV ํ์ผ์ ์ ๋ก๋ํฉ๋๋ค. ์:
aws s3 cp ./data/ s3://my-bucket/raw-data/ --recursive
๋จ๊ณ 2 โ AWS Glue ํฌ๋กค๋ฌ ์์ฑ
๋ค์๊ณผ ๊ฐ์ด Glue ํฌ๋กค๋ฌ๋ฅผ ๊ตฌ์ฑํฉ๋๋ค:
- CSV ํ์ผ์ด ์๋ S3 ํด๋ ์ง์
- CSV ์คํค๋ง๋ฅผ ์๋์ผ๋ก ๊ฐ์ง
- AWS Glue Data Catalog์ ํ ์ด๋ธ ์์ฑ
ํฌ๋กค๋ฌ๊ฐ ์์ฑํ๋ ํญ๋ชฉ:
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ด๋ฆ:
s3_log_db - ํ
์ด๋ธ ์ด๋ฆ:
s3_athena_analytics_abhishek31
ํฌ๋กค๋ง์ด ์๋ฃ๋๋ฉด Data Catalog์์ ์์ฑ๋ ์คํค๋ง๋ฅผ ๊ฒ์ฆํฉ๋๋ค.
๋จ๊ณ 3 โ Athena์์ ๋ฐ์ดํฐ ์ฟผ๋ฆฌ
ํฌ๋กค๋ฌ๊ฐ ๋ง๋ ํ ์ด๋ธ์ ๋ํด SQL ์ฟผ๋ฆฌ๋ฅผ ์คํํฉ๋๋ค. ์์:
SELECT
series_reference,
period,
series_title_2,
value
FROM s3_log_db.s3_athena_analytics_abhishek31
ORDER BY series_title_2 ASC;
์ด ์ฟผ๋ฆฌ๋ฅผ ํตํด ๋ฐ์ดํฐ๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ๊ตฌ์กฐํ๋๊ณ ์ ๊ทผ ๊ฐ๋ฅํจ์ ํ์ธํ ์ ์์ต๋๋ค.
๋จ๊ณ 4 โ Grafana ๋ฐ์ดํฐ ์์ค ๊ตฌ์ฑ
- Grafana์์ ์ ๋ฐ์ดํฐ ์์ค๋ฅผ ์ถ๊ฐํ๊ณ Amazon Athena๋ฅผ ์ ํํฉ๋๋ค.
- ๋ค์ ์ค์ ์ ์
๋ ฅํฉ๋๋ค:
- AWS ๋ฆฌ์
- ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ์ฉ S3 ๋ฒํท
- ์ํฌ๊ทธ๋ฃน (ํด๋น๋๋ ๊ฒฝ์ฐ)
- ์ฐ๊ฒฐ์ ํ ์คํธํฉ๋๋ค โ ์ฑ๊ณตํด์ผ ํฉ๋๋ค.
๋จ๊ณ 5 โ Grafana์์ ๋์๋ณด๋ ๊ตฌ์ถ
์์ SQL ์ฟผ๋ฆฌ(JSON ๊ฐ์ ธ์ค๊ธฐ ์์ด)๋ฅผ ์ฌ์ฉํด ๋ค์๊ณผ ๊ฐ์ ์๊ฐํ๋ฅผ ๋ง๋ญ๋๋ค:
- ์ฐ๋ น๋ ๋ถํฌ ๋ง๋ ์ฐจํธ
- ๊ธฐ๊ฐ๋ณ ๊ฐ์ ์๊ณ์ด ๋ถ์
- ์ฑ๋ณ ์ธ๊ตฌ ์ถ์ธ
- ์ฐ๋๋ณ ์ด ์ธ๊ตฌ
ํ๋ก์ ํธ ํด๋ ๊ตฌ์กฐ
project/
โโ data/ # Raw CSV files
โโ glue/ # Crawler configuration (JSON/YAML)
โโ athena/ # Saved query files
โโ grafana/ # Dashboard JSON exports (optional)
์ฃผ์ ํ์ต ๋ด์ฉ
- AWS Glue๋ฅผ ์ด์ฉํ ์๋ ์คํค๋ง ๊ฐ์ง๋ ๋ฐ์ดํฐ ์จ๋ณด๋ฉ์ ๊ฐ์ํํฉ๋๋ค.
- Athena๋ S3์์ ์ง์ ์๋ฒ๋ฆฌ์ค์ด๋ฉฐ ๋น์ฉ ํจ์จ์ ์ธ SQL ์ฟผ๋ฆฌ๋ฅผ ์ ๊ณตํฉ๋๋ค.
- Grafana๋ Athena ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋ณธ์ ์ผ๋ก ์๊ฐํํ์ฌ ์ค์๊ฐ ๋์๋ณด๋๋ฅผ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
GitHub ์ ์ฅ์
https://github.com/abhikorde31/aws-s3-athena-grafana-analytics
๊ฒฐ๋ก
์ด ํ๋ก์ ํธ๋ AWS S3, Glue, Athena, Grafana๋ฅผ ์ฌ์ฉํด ํ๋ก๋์ ์์ค์ ์๋ฒ๋ฆฌ์ค ๋ถ์ ํ์ดํ๋ผ์ธ์ ๊ตฌ์ถํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค. ํ์์ ๋ฐ๋ผ AWS Lambda๋ฅผ ํตํ ์ค์๊ฐ ์ ๋ฐ์ดํธ, Terraform์ ์ด์ฉํ ์ธํ๋ผ ์ฝ๋ํ, ๋๋ ์ถ๊ฐ ์๊ฐํ ๋ฑ์ผ๋ก ํ์ฅํ ์ ์์ต๋๋ค.