WESTZERO115 / Project-Terraform_ELK_EFK

ํ…Œ๋ผํผ์œผ๋กœ ์ธํ”„๋ผ ๊ตฌ์ถ•ํ•˜๊ณ  ELK | EFK ๋ชจ๋‹ˆํ„ฐ๋ง ์Šคํƒ์„ ๋ฐฐํฌํ•˜๋Š” ํ”„๋กœ์ ํŠธ
1 stars 3 forks source link
aws dockerhub ecr efk-elastic-search--fluentd--kibana elk-stack terraform

๐Ÿ’ป ํ…Œ๋ผํผ์œผ๋กœ ์ธํ”„๋ผ ๊ตฌ์ถ•ํ•˜๊ณ  ELK|EFK ๋ชจ๋‹ˆํ„ฐ๋ง ์Šคํƒ์„ ๋ฐฐํฌ

:open_file_folder: ๊ตฌ์„ฑ๋„

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2022-07-30 แ„‹แ…ฉแ„’แ…ฎ 6 02 10

:open_file_folder: ์ฃผ์š” ๊ธฐ๋Šฅ

  1. IaC
    1.1 Terraform์œผ๋กœ AWS์˜ ๊ด€๋ฆฌํ˜• ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์ธ EKS๋ฅผ ๊ตฌ์ถ•
    1.2 Terraform์œผ๋กœ AWS ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์ธ ECR๊ณผ EC2 ์ธ์Šคํ„ด์Šค๋ฅผ ๊ตฌ์ถ•

  2. Kubernetes & ELK | EFK
    2.1 ์œ„์— EFK Stack ๊ตฌ์ถ•, Nginx pod์˜ ๋กœ๊ทธ ์ˆ˜์ง‘
    2.2 Filebeat + Kafka + ELK Stack ๊ตฌ์ถ•, EKS์— ๋ฐฐํฌํ•œ Nginx ์›น ์„œ๋ฒ„ ๋กœ๊ทธ ์ˆ˜์ง‘

  3. Visualization & Analysis - Kibana ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ํ†ตํ•ด ๋กœ๊ทธ๋ฅผ ์‹œ๊ฐํ™”ํ•˜์—ฌ ๋ถ„์„

:open_file_folder: ์ ์šฉ ๊ธฐ์ˆ 

- Terraform 5

์ธํ”„๋ผ๋ฅผ ์†์‰ฝ๊ฒŒ ๊ตฌ์ถ•ํ•˜๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ๋ณ€๊ฒฝํ•˜๊ณ , ํšจ์œจ์ ์œผ๋กœ ์ธํ”„๋ผ์˜ ํ˜•์ƒ์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” IaC ์˜คํ”ˆ์†Œ์Šค ๋„๊ตฌ์ด๋‹ค. ๋ณ€๊ฒฝ ๊ณ„ํš ๋ช…๋ น์–ด(terraform plan)์™€ ๋ณ€๊ฒฝ ์ ์šฉ ๋ช…๋ น์–ด(terraform apply)๋ฅผ ๋ถ„๋ฆฌํ•˜์—ฌ ๋ณ€๊ฒฝ ๋‚ด์šฉ์„ ์ ์šฉํ•  ๋•Œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์‹ค์ˆ˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

- AWS (ECR, EKS)   5

CSP ์ค‘ ๊ฐ€์žฅ ๋†’์€ ์ ์œ ์œจ์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ , ๊ฐœ๋ฐœ์ž ์ƒํƒœ๊ณ„๋ฅผ ํŠผํŠผํ•˜๊ฒŒ ๊ตฌ์ถ•ํ•˜๊ณ  ์žˆ๋‹ค.
ECR์€ ํ™•์žฅ ๊ฐ€๋Šฅํ•˜๊ณ  ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” AWS ๊ด€๋ฆฌํ˜• ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์„œ๋น„์Šค์ด๋‹ค. AWS IAM์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฆฌ์†Œ์Šค ๊ธฐ๋ฐ˜ ๊ถŒํ•œ์„ ๊ฐ€์ง„ ํ”„๋ผ์ด๋น— ๋ ˆํผ์ง€ํ† ๋ฆฌ๋ฅผ ์ง€์›ํ•œ๋‹ค.
EKS๋Š” AWS๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์šฉ ์ปจํ…Œ์ด๋„ˆ ์„œ๋น„์Šค์ด๋‹ค. etcd ๊ด€๋ฆฌ ๋ฐ ๋ฐฑ์—… ๋“ฑ์˜ ์ž‘์—…์„ ๋Œ€์‹ ํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ž๋Š” ๋งˆ์Šคํ„ฐ ๋…ธ๋“œ๋ฅผ ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

- EFK ์Šคํƒ (ElasticSearch + Fleuntd + Kibana)   15

ElasticSearch๋Š” ๊ฒ€์ƒ‰ ๋ฐ ๋ถ„์„ ์—”์ง„์ด๋‹ค. ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ณ , ๋ชจ๋“ˆ์˜ ๊ธฐ๋Šฅ์ด ๊ฐ๊ฐ ๋‹ฌ๋ผ์„œ ๋‹ค๋ฅธ ๋ชจ๋“ˆ๋กœ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•˜๋‹ค.
Kibana๋Š” ์ฐจํŠธ์™€ ๊ทธ๋ž˜ํ”„๋ฅผ ์ด์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์‹œ๊ฐํ™”ํ•ด์ฃผ๋Š” ๋Œ€์‹œ๋ณด๋“œ์ด๋‹ค.
Fluentd๋Š” ๋กœ๊ทธ ์ˆ˜์ง‘๊ธฐ์ด๋‹ค. ์ „๋‹ฌ๋œ ๋ฐ์ดํ„ฐ๋ฅผ tag, time, record(JSON) ๋กœ ๊ตฌ์„ฑ๋œ ์ด๋ฒคํŠธ๋กœ ์ฒ˜๋ฆฌํ•˜๋ฉฐ, ์›ํ•˜๋Š” ํ˜•ํƒœ๋กœ ๊ฐ€๊ณตํ•˜์—ฌ ๋‹ค์–‘ํ•œ ๋ชฉ์ ์ง€(Elasticsearch, S3, HDFS ๋“ฑ)๋กœ ์ „๋‹ฌํ•œ๋‹ค.

- ELK ์Šคํƒ (ElasticSearch + Logstash + Kibana) + Filebeat + Kafka    5   5   5

Logstash๋Š” ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ํŒŒ์ดํ”„๋ผ์ธ์œผ๋กœ, ์—ฌ๋Ÿฌ ์†Œ์Šค๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋™์‹œ์— ์ˆ˜์ง‘ํ•ด์„œ ElasticSearch์™€ ๊ฐ™์€ stash๋กœ ์ „์†กํ•œ๋‹ค.
Filebeat๋Š” ๊ฒฝ๋Ÿ‰ ๋กœ๊ทธ ์ˆ˜์ง‘๊ธฐ๋กœ, ์ค‘์•™์ง‘์ค‘ํ™”ํ•˜์—ฌ ์ž‘์—…์„ ๋ณด๋‹ค ๊ฐ„ํŽธํ•˜๊ฒŒ ๋งŒ๋“ค์–ด์ค€๋‹ค. CPU, RAM ๋“ฑ์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ์ ๊ฒŒ ์†Œ๋ชจํ•œ๋‹ค.
Kafka๋Š” ๋Œ€์šฉ๋Ÿ‰ ์‹ค์‹œ๊ฐ„ ๋กœ๊ทธ์ฒ˜๋ฆฌ์— ํŠนํ™”๋œ ๋ฉ”์‹œ์ง• ํ”Œ๋žซํผ์ด๋‹ค. ์ŠคํŠธ๋ฆฌ๋ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์šฉ์ดํ•˜๊ณ , ๋ฉ”์„ธ์ง€๋ฅผ ์˜๊ตฌ์ ์œผ๋กœ ์ €์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”์„ธ์ง€ ์†์‹ค์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค. ํŠธ๋ž˜ํ”ฝ์ด ๋ชฐ๋ฆฌ๋ฉด Logstash, Elasticsearch ๋งŒ์œผ๋กœ๋Š” ๋ถ€ํ•˜๋ฅผ ๊ฒฌ๋””๊ธฐ ํž˜๋“ค๊ธฐ ๋•Œ๋ฌธ์— ELK ์Šคํƒ์˜ ๊ฒฝ์šฐ Kafka๋ฅผ ์—ฐ๋™ํ•˜์˜€๋‹ค.


Logstash๋Š” ๋ชจ๋†€๋ฆฌ์‹ํ•œ ์‹œ์Šคํ…œ์˜ ๋กœ๊น… ํŒŒ์ดํ”„๋ผ์ธ์œผ๋กœ ์ฃผ๋กœ ์‚ฌ์šฉํ•˜๊ณ , Fluentd๋Š” ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜๋ฅผ ์‚ฌ์šฉํ•œ ์‹œ์Šคํ…œ์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

- Nginx 5

Nginx๋Š” ์›น ์„œ๋ฒ„ ์†Œํ”„ํŠธ์›จ์–ด์ด๋‹ค.
์•„ํŒŒ์น˜(Apache)๊ฐ€ ์š”์ฒญ ํ•˜๋‚˜ ๋‹น ์Šค๋ ˆ๋“œ ํ•˜๋‚˜๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ˜๋ฉด, Nginx๋Š” ๋น„๋™๊ธฐ Event-Driven ๊ธฐ๋ฐ˜ ๊ตฌ์กฐ๋กœ ๋” ์ž‘์€ ์Šค๋ ˆ๋“œ๋กœ ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ๋“ค์„ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅํ•˜๋‹ค.

:open_file_folder: ๊ฒฐ๊ณผ๋ฌผ

Contributors


์ดํ˜œ๋ฆฐ


๋ฐ•์„œ์˜