๐ฅ
์ค์ ์ง์ค์ ๋ก๊น ์์คํ (EFK stack) ๋ณธ๋ฌธ
์ค์ ์ง์ค์ ๋ก๊น
์ผ๋ฐ์ ์ผ๋ก ๋ถ์ฐํ๊ฒฝ์์ ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ์ด์ํ๋ฉด ๊ฐ ์๋น์ค์์ ๋ฐ์ํ ๋ก๊ทธ ํ์ผ๋ค์ ํํธํ๋์ด ๊ฐ๊ฐ ์ ์ฅ๋๋ค.
์๋ก ๋ค๋ฅธ ๊ฐ๋ณ ์๋น์ค์์ ๋ฐ์ํ๋ ๋ก๊ทธ๋ฅผ ์ฐ๊ฒฐ์ง์ด ์ฒ์๋ถํฐ ๋๊น์ง ์์๋๋ก ์ถ์ ํ๋ ๊ฒ์ ์ด๋ ต๋ค.
๋ฐ๋ผ์ ๋ก๊ทธ์ ์ถ์ฒ์ ์๊ด์์ด ๋ชจ๋ ๋ก๊ทธ๋ฅผ ์ค์ ์ง์ค์ ์ผ๋ก ์ ์ฅ, ๋ถ์ํด์ผ ํ๋ฉฐ, ์๋น์ค ์คํ ํ๊ฒฝ์์ ๋ถ๋ฆฌํ์ฌ ๊ด๋ฆฌ๋์ด์ผ ํ๋ค.
- ์ฅ์
- ์ฌ๋ฌ ์๋ฒ๋ ์ดํ๋ฆฌ์ผ์ด์ ์์ ์์ฑ๋ ๋ก๊ทธ๋ฅผ ํ ๊ณณ์ ์์งํ๊ธฐ ๋๋ฌธ์ ๋ค์ํ ์์คํ ์ ์ํ๋ฅผ ํ ๋ฒ์ ํ์ ํ ์ ์๋ค.
- ๋ชจ๋ ๋ก๊ทธ ๋ฐ์ดํฐ๋ฅผ ํตํฉํ์ฌ ์ ์ฅํ๋ฏ๋ก ๊ด๋ฆฌ๊ฐ ์ฉ์ดํด์ง๋ค. (๋ณดํต ์ฉ๋์ด ํฌ๊ณ ํ์ฅ ๊ฐ๋ฅํ DB๋ ํด๋ผ์ฐ๋ ์คํ ๋ฆฌ์ง์ฌ์ฉ)
- ์ค์์์ ๋ก๊ทธ๋ฅผ ํ ๋ฒ์ ๊ฒ์ํ๊ณ ๋ถ์ํ ์ ์์ผ๋ฏ๋ก ์ด๋ฒคํธ๋ฅผ ์ถ์ ํ๊ธฐ๊ฐ ์ฌ์์ง๊ณ , ๋ฌธ์ ํด๊ฒฐ ์๊ฐ์ด ๋จ์ถ๋๋ค.
- ๋จ์
- ๋จ์ผ ์ฅ์ ์ง์ - ์ค์ ๋ก๊ทธ ์๋ฒ์ ๋ฌธ์ ๊ฐ ์๊ธฐ๋ฉด ์ ์ฒด ๋ก๊ทธ ์์ง ๋ฐ ๊ด๋ฆฌ๊ฐ ์ค๋จ๋ ์ ์๋ค,
- ์ฑ๋ฅ - ๋ก๊ทธ์ ์์ด ๋ฐฉ๋ํด์ง๋ฉด ์ฒ๋ฆฌ ์ฑ๋ฅ ๋ฐ ๊ฒ์ ์๋๊ฐ ๋๋ ค์ง ์ ์์ผ๋ฉฐ, ํด๋ฌ์คํฐ๋ง๊ณผ ๊ฐ์ ๋ณต์กํ ๊ตฌ์กฐ๋ฅผ ๋์ ํด์ผํ ์ ์๋ค.
- ๋คํธ์ํฌ - ๋๊ท๋ชจ ์์คํ ์์ ์ค์๊ฐ์ผ๋ก ๋ก๊ทธ๋ฅผ ์์งํ ๊ฒฝ์ฐ ๋คํธ์ํฌ ๋ถํ๊ฐ ๋ฐ์ํ ์ ์๋ค.
- ๋น์ฉ - ์ธํ๋ผ, ์ ์ฅ๊ณต๊ฐ, ์ ์ง๋ณด์, (์์ฉ ์๋ฃจ์ ์ฌ์ฉ ์) ๋ผ์ด์ ์ค ๋น์ฉ ๋ฑ
- ํ์ฅ์ฑ - ์์คํ ์ ํฌ๊ธฐ์ ๋น๋กํ์ฌ ๋ก๊ทธ ์๋ ๊ธฐํ๊ธ์์ ์ผ๋ก ๋์ด๋๋ฏ๋ก ํ์ฅ์ฑ์ด ์ถฉ๋ถํ ๊ณ ๋ ค๋์ด์ผ ํจ.
๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ์ ์ปจํ ์ด๋ํ๋ ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ณต์ก์ฑ์ผ๋ก ์ธํด ์ฟ ๋ฒ๋คํฐ์ค ํ๊ฒฝ์์ ๋ก๊น ์ ๋งค์ฐ ์ค์ํ๋ค.
- ๋์ ์ธํ๋ผ ๊ด๋ฆฌ
์ปจํ ์ด๋ํ๋ ์ดํ๋ฆฌ์ผ์ด์ ์ ํ์์ ๋ฐ๋ผ ์์ฑ๋๊ณ ์ญ์ ๋๊ธฐ ๋๋ฌธ์, ์ธํ๋ผ์ ์ํ๊ฐ ๋์์์ด ๋ณํํ๋ค. - ํด๋ฌ์คํฐ ์์ ์ฑ ์ ์ง
ํด๋ฌ์คํฐ ๋ด์์ ๋ฐ์ํ๋ ๋ ธ๋ ๋ค์ดํ์, pod ์คํจ, ๋คํธ์ํฌ ์ฅ์ ์ ๊ฐ์ ์ด์๋ฅผ ๋ชจ๋ํฐ๋งํ๋ค๋ฉด ์๋น์ค์ ๊ฐ์ฉ์ฑ์ ๋์ด๊ณ , ์ฅ์ ๋ก ์ธํ ์์ค์ ์ต์ํํ ์ ์๋ค. - ์ฑ๋ฅ ์ต์ ํ์ ๋ฆฌ์์ค ๊ด๋ฆฌ
CPU, ๋ฉ๋ชจ๋ฆฌ, ๋คํธ์ํฌ ์ฌ์ฉ๋ ๋ฑ ๋ค์ํ ๋ฆฌ์์ค ๋ฉํธ๋ฆญ์ ์ถ์ ํ๋ด๋ ๊ณผ๋ํ ๋ฆฌ์์ค ์ฌ์ฉ์ด๋ ๋นํจ์จ์ ์ธ ์์ ๋ฐฐ๋ถ์ ์ค์๊ฐ์ผ๋ก ๊ฐ์งํ์ฌ ์ต์ ํํ ์ ์๋ค. - ๋ณด์ ๊ฐํ
๋น์ ์์ ์ธ ํธ๋ํฝ, ๊ถํ ์๋ ์ ๊ทผ ์๋, ์ทจ์ฝํ ์ปจํ ์ด๋ ์ด๋ฏธ์ง ์ฌ์ฉ ๋ฑ์ ํ์งํ๊ณ ๊ฒฝ๊ณ ํ ์ ์๋ค.
* ์ฐธ๊ณ :
์ฟ ๋ฒ๋คํฐ์ค ๋ชจ๋ํฐ๋ง ํ์ฉ ์ฌ๋ก
Pod ๋ฉ๋ชจ๋ฆฌ ๋์ ํด๊ฒฐ ์ฌ๋ก
์ค์ ์ง์ค์ ๋ก๊น ์ปดํฌ๋ํธ
- ๋ก๊ทธ ์์ฐ์๊ฐ ๋ก๊ทธ ์คํธ๋ฆผ์ ์์ฐํ๋ค.
- ๋ก๊ทธ ์ ์ฌ๊ธฐ์์ ์๋ก ๋ค๋ฅธ ๋ก๊ทธ ์์ฐ์์์ ์์ฐํ๋ ๋ก๊ทธ ๋ฉ์์ง๋ฅผ ์์งํ๊ณ ,
๋ค์ํ ์ข ๋จ์ ์ผ๋ก ๋ฉ์์ง๋ฅผ ๋ณด๋ธ๋ค. (๋ก๊ทธ ์ ์ฅ์, ์คํธ๋ฆผ ์ฒ๋ฆฌ๊ธฐ, ๋์๋ณด๋ ๋ฑ) - ๋ก๊ทธ ์คํธ๋ฆผ ์ฒ๋ฆฌ๊ธฐ์์๋ ๋ก๊ทธ ์ ์ฅ์/๋์๋ณด๋ ๋ฑ์ ๋ณด๋ด๊ธฐ ์ํด ์ค์๊ฐ ๋ก๊ทธ ์ด๋ฒคํธ๋ฅผ ๋ถ์/์ฒ๋ฆฌํ๋ค.
- ๋ก๊ทธ ์ ์ฅ์์์๋ ๋ชจ๋ ๋ก๊ทธ ๋ฉ์์ง๋ฅผ ์ ์ฅํ๋ค.
์ค์๊ฐ ๋ก๊ทธ ์ ์ฅ: elasticsearch ๋ฑ
๋ก๊ทธ ์์นด์ด๋น: hdfs, s3 ๋ฑ
ํต๊ณ/์์ฝ ๋ฐ์ดํฐ: mongodb, cassandra ๋ฑ - ๋ก๊ทธ ๋์๋ณด๋์์๋ ๋ก๊ทธ ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ์ฌ์ฉ์๊ฐ ๋ณด๊ธฐ ํธํ ์ฐจํธ, ๊ทธ๋ํ๋ฑ์ ํํ๋ก ๋ก๊ทธ ๋ถ์ ๋ณด๊ณ ์๋ฅผ ๋ณด์ฌ์ค๋ค.
Logstash vs. Fluentd
๋ ์๋ฃจ์ ๋ชจ๋ ์ํฐํ๋ผ์ด์ฆ๊ธ ๋ก๊ทธ ํ์ดํ๋ผ์ธ ๊ตฌ์ฑ์ ์ฌ์ฉ๋๋ ๋ก๊ทธ ๋ถ์์ฉ ํ์ ์ญํ ์ ํ ์ ์๋ค.
์์ง๋ ๋ก๊ทธ๋ฅผ ํํฐ๋ง, ๋ผ์ฐํ ํ ์ ์๊ณ , ๋ชจ๋ ๋ค์ํ ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ ์ ์๋ค.
1. ์ํ๊ณ ๋ฐ ์ค๊ณ ์ฒ ํ
Logstash๋ Elastic ์์ ๊ฐ๋ฐํ ํด๋ก, Elasticsearch, Kibana ๋ฑ์ ๋ค๋ฅธ Elastic ํด๊ณผ์ ํตํฉ์ด ์ฉ์ดํ๋ค.
Fluentd๋ CNCF(Cloud Native Computing Foundation)์ graduated project ์ค ํ๋๋ก, ํด๋ผ์ฐ๋ ๋คํฐ์ด๋ธ ์์คํ , ๋ง์ดํฌ๋ก ์๋น์ค, prometheus์ ๊ฐ์ ๋ค๋ฅธ CNCF ์ฌ๋จ์ ์ํ ํ๋ก์ ํธ์ ํจ๊ป ์ฌ์ฉํ๊ธฐ ์ฉ์ดํ๋ค. Elastic ์ฌ์ ์์คํ ๊ณผ๋ ํตํฉ์ ์ง์ํ๋ค.
Logstash์ ๊ฒฝ์ฐ Grok ํํฐ์ ๊ฐ์ ๊ณ ๊ธ ํจํด ๋งค์นญ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ฌ ๋ก๊ทธ๋ฐ์ดํฐ๋ฅผ ์ ์ ํ๊ณ ๋ถ์ํ๋๋ฐ ์ฉ์ดํ๋ฉฐ, Fluentd์ ๊ฒฝ์ฐ ๋ก๊ทธ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฌ ํด๋ผ์ฐ๋ ์๋น์ค๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ์ ์กํ๋๋ฐ์ ์ต์ ํ๋ ํ๋ฌ๊ทธ์ธ์ด ๋ง๋ค.;
Fluentd์ ๊ฒฝ์ฐ ๊ฒฝ๋ํ๋ ์ค๊ณ๋ฅผ ๋ฐํ์ผ๋ก ๋ฐ์ดํฐ ์์ง๊ณผ ์ ์ก์ ๋จ์ํ๊ณ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ๋๋ฐ์ ์ค์ ์ ๋๋ ๋ฐ๋ฉด, Logstash๋ ๋ค์ํ ์ ๋ ฅ/ํํฐ/์ถ๋ ฅ ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํด ๋ฐ์ดํฐ๋ฅผ ์ ์ ํ๊ณ ๋ณํํ๋ ๋ฐ์ ์ด์ ์ ๋ง์ถ๋ค.
2. ์ฑ๋ฅ ๋ฐ ์ฌ์ฉ ๋ฆฌ์์ค
Logstash ๋ java๋ก ๊ฐ๋ฐ๋์๊ณ , JVM ์์์ ์คํ๋๋ค. ๊ณ ๊ธ ํํฐ๋ง์ด๋ ๋ณต์กํ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์์ ์ ํ ๋๋ Fluentd์ ๋นํด ๋ง์ cpu์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋ชจํ ์ ์๋ค. ํ ์คํ์์ค์ ๋นํด ๋ฌด๊ฒ๊ณ ์ค์ ์ด ๋ณต์กํ ํธ.
Fluentd๋ Ruby + C๋ก ์ ์๋์ด ์๋์ ์ผ๋ก ๋น ๋ฅด๊ณ , ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋๋ ๋ฎ๋ค.
๊ฒฝ๋์ผ๋ก ์ค๊ณ๋์ด ์์ด ๋ฆฌ์์ค ์ฌ์ฉ๋์ด ์ ๊ณ ์ฑ๋ฅ์ด ์ฐ์ํ๋ค. ๋๊ท๋ชจ ๋ก๊ทธ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ๋ ๋ ํจ์จ์ ์ด๋ค.
3. ํ์ฅ์ฑ ๋ฐ ํด๋ฌ์คํฐ๋ง
Logstash๋ ํด๋ฌ์คํฐ๋ง ๊ธฐ๋ฅ์ ์ง์ ์ง์ํ์ง ์๊ณ ์์ง๋ง Elasticsearch์์ ์ฐ๋์ ํตํด ๋ก๊ทธ๋ฅผ ์ฒ๋ฆฌํ๊ณ ๊ฒ์ํ๋ ํ์ฅ์ฑ์ ์ป์ ์ ์๋ค.
Fluentd๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ฒฝ๋ํ๋์ด ์์ด ํ์ฅ์ฑ์ด ๋ฐ์ด๋๊ณ , ๋๊ท๋ชจ ๋ถ์ฐ ํ๊ฒฝ์์ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค. Kubernetes ํ๊ฒฝ์์ Fluentd๋ฅผ ๋ก๊ทธ ์์ง๊ธฐ๋ก ์์ฃผ ์ฌ์ฉํ๋ค๊ณ ํ๋ค. ๋ค์ค ์์ ์ ์ฝ๊ฒ ๋ถ์ฐํ ์ ์๋๋ก ์ค๊ณ๋์ด ์๋ค.
์์ ๊ฐ์ ํน์ง์ผ๋ก ์๋์ ๊ฐ์ ์ฌ๋ก์์ ์ ์ฉํ๊ฒ ์ฌ์ฉ๋๋ค.
- Logstash: ๊ณ ๊ธ ๋ฐ์ดํฐ ์ฒ๋ฆฌ, ๊ฐ๋ ฅํ ํํฐ๋ง ๋ฐ ๋ณํ ๊ธฐ๋ฅ, Elastic Stack๊ณผ์ ๊ธด๋ฐํ ํตํฉ.
-> ๋ก๊ทธ ๋ถ์, ๊ฒ์, ๋ชจ๋ํฐ๋ง์ด ์ค์ํ ํ๊ฒฝ์์ ๋ง์ด ์ฌ์ฉ๋๋ค. - Fluentd: ๊ฒฝ๋, ๋น ๋ฅธ ์ฑ๋ฅ, ๋ฆฌ์์ค ์ ์ฝ, ํด๋ผ์ฐ๋ ํ๊ฒฝ์ ์ ํฉ.
-> kubernetes, docker ๋ฑ์ ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ํ๊ฒฝ์์ ์์ฃผ ์ฌ์ฉ๋๋ค.
EFK stack - ๊ตฌ์ฑ ์์
Fluentd
- ๋ก๊ทธ๋ฅผ ์์งํ๊ณ ๋ก๊ทธ ์ ์ฅ์์ ๋ก๊ทธ๋ฅผ ๋ณด๋ด๋ ์ญํ
Fluentbit๋ ์ฑ๋ฅ์ ์ค์ ์ ๋๊ณ ๊ฐ๋ฐ๋์๊ธฐ ๋๋ฌธ์ Fluentd์ ๋น๊ตํ์ฌ ๋ ๊ฒฝ๋ํ ๋์ด ์๊ณ , ์ฌ์ฉํ๋ ๋ฆฌ์์ค๋ ํจ์ฌ ์ ๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ FluentBit๋ฅผ deamonset์ผ๋ก ์คํํ๊ณ Fluentd ์๋น์ค์ ๋ก๊ทธ๋ฅผ ์ ๋ฌํ๋ ๋ฐฉ๋ฒ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค.
Fluentd ๊ตฌ์ฑ ์์
- input: ์ฌ๋ฌ ํ๋ฌ๊ทธ์ธ๋ค๋ก ๋ค์ํ ์ดํ๋ฆฌ์ผ์ด์ ์ผ๋ก๋ถํฐ ๋ค์ํ ํฌ๋งท์ ๋ฐ์ดํฐ๋ฅผ ์์ง
- buffer(optional): input์์ ๋ค์ด์จ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋ก ์ฐ์ง ์๊ณ buffer์ ๋ (file/memroy ๋ ๊ฐ์ง ํ์
)
๋ก๊ทธ๋ฅผ ๋ถ๋ฆฌํ๋ tag๋จ์๋ก chunk ์์ฑ - output: ์ฌ๋ฌ output plugin์ ์ฌ์ฉํด ์ถ๋ ฅํจ.
Elasticsearch
- ๋ถ์ฐํ ๊ฒ์ ๋ฐ ๋ถ์ ์์ง์ผ๋ก, ์ค์๊ฐ ๋ก๊ทธ๋ฅผ ์ ์ฅํ์ฌ ํ์ํ ๋ด์ฉ์ ๊ฒ์
- ๋ฐ์ดํฐ๋ฅผ ๋ถ์ฐํด์ ์ ์ฅํ๋ ์ค๋ฉ ์ง์ -> ๋น ๋ฅธ ๊ฒ์ ๊ฐ๋ฅ
Elasticsearch ๊ตฌ์ฑ ์์
- ๋ง์คํฐ ๋ ธ๋: ํด๋ฌ์คํฐ ์ํ๋ฅผ ์ ์ง, ๋ ธ๋์ ์ถ๊ฐ, ์ ๊ฑฐ, ์ธ๋ฑ์ค ๊ด๋ฆฌ ๋ฑ ๋ด๋น (๋ง์คํฐ, ๋ง์คํฐ ํ๋ณด)
- ๋ฐ์ดํฐ ๋ ธ๋: ์ค์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๊ฒ์, CRUD ์์ฒญ ์ฒ๋ฆฌ ( data_content, data_hot, data_warm, data_cold, data_frozen)
- ์ฝ๋๋ค์ดํฐ ๋ ธ๋: ํด๋ฌ์คํฐ ์ ์ฒด์ ๊ฒ์ ๋ฐ ์ธ๋ฑ์ฑ ์์ฒญ ๋ผ์ฐํ , ๋ฐ์ดํฐ ๋ ธ๋๋ก ์์ฒญ์ ๋ถ๋ฐฐ. only ํธ๋ํฝ ์กฐ์จ ์ญํ
- ingest node: ๋ฐ์ดํฐ ์ฒ๋ฆฌ ํ์ดํ๋ผ์ธ ๊ด๋ฆฌ, ๋ฐ์ดํฐ๋ฅผ ์ธ๋ฑ์ฑํ๊ธฐ ์ ๋ณํ ๋ฐ ์ ์ฒ๋ฆฌ ์์ ๋ด๋น (fluentd, logstash ๋ฑ์ ์ฌ์ฉํ๋ฉด ์ฌ์ฉํ ์ผ์ด ์์)
index architecture
- Index: ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ํ๋์ document ์์ ์ฌ์ฉํ๋๋ฐ, document๋ฅผ ๋ชจ์๋์ ์งํฉ (ํ ์ด๋ธ๊ณผ ์ ์ฌ)
- Sharding
indexing ์์ node ๋ด๋ถ์ ๋ ผ๋ฆฌ์ ์ธ ๋ฐ์ดํฐ ์ ์ฅ ๊ณต๊ฐ์ ๋ง๋ค๊ณ ๋ฐ์ดํฐ๋ฅผ ์ญ ์ด๋ค. -> ์ ์ฅ ๊ณต๊ฐ์ ๋ ผ๋ฆฌ์ ์ผ๋ก ๋๋๋ฏ๋ก ๋์์ ์ฌ๋ฌ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ถ์ฐํด์ ์ ์ฅํ ์ ์์.
์ค์ผ์ผ ์์์ ์ํด index๋ฅผ ์ฌ๋ฌ shard๋ก ์ชผ๊ฐ ๋ค. - Replica
shard์ ๋ํ ๋ณต์ ๋ณธ์ ์์ฑ.
Kibana
- Elasticsearch์ ํจ๊ป ์๋๋๋๋ก ์ค๊ณ๋ ์๊ฐํ ํ๋ซํผ. (์น ์์ฉ ํ๋ก๊ทธ๋จ)
- Elasticsaerch index์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๊ณ ์กฐํ. ์ค์๊ฐ ์ฟผ๋ฆฌ์ ๋ณ๊ฒฝ์ฌํญ์ ํ์ํ๋ ๋์๋ณด๋๊ฐ ์กด์ฌํ๋ฏ๋ก Elasticsearch์ ์ค์๊ฐ ๋ฐ์ดํฐ ์๊ฐํ๊ฐ ์ฉ์ดํ๊ฒ ๊ฐ๋ฅ
๊ธฐ๋ฅ
- Discover: ๋ฐ์ดํฐ๋ฅผ ํ์ธํ๊ณ ํ์ํ๋ ์ฉ๋๋ก ์ฌ์ฉ
- Visualize: ๋ฐ์ดํฐ๋ฅผ ๊ทธ๋ํ๋ ํ, ์ง๋ ๋ฑ ๋ค์ํ ํ์ ์ผ๋ก ๋ณด์ฌ์ค
- Dashboard: ์๊ฐํ ํ์ ์ ํ ํ์ด์ง์ ๋ชจ์๋ณผ ์ ์์. ์๋ ์๋ก๊ณ ์นจ ๊ธฐ๋ฅ์ผ๋ก ์ค์๊ฐ ๋ชจ๋ํฐ๋ง ์ฉ์ด
- Canvas: ํ์ํฌ์ธํธ์ฒ๋ผ ์ธํฌ๊ทธ๋ํฝ ํํ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณด์ฌ์ค.
- Maps: ์์น์ ๋ณด๊ฐ ํฌํจ๋ ๋ฐ์ดํฐ๋ฅผ ์ง๋์ ์ฌ๋ ค ์๊ฐํ ๊ฐ๋ฅ
Fluentd ํตํฉ Common Architecture
Forwarder And Aggregator
๊ฐ์ฅ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉํ๋ ๊ตฌ์กฐ๋ก, kubernetes node / vm ๋ฑ ๋ฐ์ดํฐ๊ฐ ์์ฑ๋๋ edge์ ๊ฐ๋ฒผ์ด ์ธ์คํด์ค (fluentbit)๋ฅผ ๋ฐฐํฌํ๋ค.
forwarder์์๋ ์ต์ํ์ ์ฒ๋ฆฌ๋ฅผ ์ํํ ๋ค์ forward protocol์ ์ฌ์ฉํ์ฌ ๋ ๋ฌด๊ฑฐ์ด Fluentd ์ธ์คํด์ค๋ก ์ ์กํ๋ค. aggregator ์ญํ ์ ์ํํ๋ fluentd์์๋ ๋ค์ ๋ฐฑ์๋๋ก ๋ผ์ฐํ ํ๊ธฐ ์ ๋ ๋ง์ ํํฐ๋ง๊ณผ ์ฒ๋ฆฌ๋ฅผ ์ํํ๋ค.
- ์ฅ์
- edge์์์ ๋ฆฌ์์ค ์ฌ์ฉ๋ ๊ฐ์ (์ฒ๋ฆฌ๋ ๊ทน๋ํ)
- aggregate layer์์ ์ฒ๋ฆฌ๋ฅผ ํ์ฅํ๊ธฐ ์ฉ์ด
- ๋ฐฑ์๋์์ ํตํฉ์ด ์ฉ์ดํ๋ค (๋ชจ๋ forwarders์์ config๋ฅผ ์์ ํ๋ ๊ฒ๋ณด๋ค fluentd ํ๋์์ ์์ ํ๋ ๊ฒ์ด ์ฉ์ด)
- ๋จ์
- aggreagor instacne์ ๋ฐ๋ก ๋ฆฌ์์ค๊ฐ ํ์ (๋น์ฉ ์ฆ๊ฐ)
Sidecar/Agent deployment
Fluentd๋ Fluent Bit๋ฅผ edge์ ๋ฐฐํฌํ๊ณ , ๋ฐ์ดํฐ๋ฅผ ๋ฐฑ์๋ ์๋น์ค์ ์ง์ ๋ณด๋ด๋๋ก ๊ตฌ์ฑํ๋ค. ์ฌ์ฉํ๋ ๋ฐฑ์๋๊ฐ ํ๋๋ง ์์ ๊ฒฝ์ฐ์ ํจ๊ณผ์ ์ด๋ค.
Deamonset์ผ๋ก ๋ฐฐํฌํ๊ฑฐ๋, ์ดํ๋ฆฌ์ผ์ด์ ๊ณผ pod ๋ด๋ถ์ ๋ฐฐํฌํ ์ ์๋ค.
- ์ฅ์
- aggregator ๊ฐ ํ์ํ์ง ์๋ค.
- ๋จ์
- agent ์ ์ฒด์์ ๊ตฌ์ฑ์ ๋ณ๊ฒฝํ๊ธฐ ์ด๋ ค์
- ๋ฐฑ์๋๋ฅผ ์ถ๊ฐํ๊ธฐ ์ด๋ ค์
์ด์ธ ๋ค๋ฅธ ๋ก๊ทธ ์์ง ์๋ฃจ์
1. Prometheus, Grafana
Prometheus๋ ๋ก๊ทธ ๋์ ๋ฉํธ๋ฆญ ๋ฐ์ดํฐ๋ฅผ ์์งํ๊ณ ๋ชจ๋ํฐ๋งํ๋ ๋ฐ ์ฃผ๋ก ์ฌ์ฉ๋์ง๋ง, ์ผ๋ถ ๋ก๊ทธ ๋ฐ์ดํฐ๋ฅผ ์งํ ํํ๋ก ๋ณํํ์ฌ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
Grafana๋ ์ฃผ๋ก Prometheus์ ์ฐ๋๋์ด ๋์๋ณด๋๋ฅผ ์ ๊ณตํ๋ฉฐ, ๋ฉํธ๋ฆญ ๋ฐ์ดํฐ์ ๋ก๊ทธ ๋ฐ์ดํฐ๋ฅผ ํตํฉํ์ฌ ๋ชจ๋ํฐ๋งํ ์ ์์ต๋๋ค.
2. Loki, Grafana (PLG ์คํ)
- Promtail, Loki, Grafana
Loki๋ Grafana์ ํจ๊ป ์ฌ์ฉ๋๋ ๋ก๊ทธ ์์ง ์์คํ ์ผ๋ก, Prometheus์ ์ ์ฌํ๊ฒ ๋์ํ๋ค.
๋ก๊ทธ ๋ฐ์ดํฐ๋ฅผ ๋ฉํธ๋ฆญ๊ณผ ํจ๊ป ์ ์ฅํ๊ณ ์กฐํํ๋ ๋ฐ ์ต์ ํ๋์ด์๊ณ , ํนํ Loki๋ ๋ก๊ทธ๋ฅผ ๋ ์ด๋ธ ๊ธฐ๋ฐ์ ๋ฉํ๋ฐ์ดํฐ๋ง ์ธ๋ฑ์ฑํด์ ์ธ๋ฑ์ค์ ์ฌ์ฉ๋๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ ๋ค.
* ์ฐธ๊ณ : Logging in Kubernetes: EFK vs PLG Stack
3. AWS CloudWatch ๋ฐ GCP Logging
kubernetes ํด๋ฌ์คํฐ๋ฅผ ์ง์ ์ด์ํ์ง ์๊ณ EKS๋ฑ์ ์ฌ์ฉํ๋ค๋ฉด ์๋์ ๊ฐ์ ๋ก๊น ์์คํ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
- AWS CloudWatch: EKS ํด๋ฌ์คํฐ์์ ์ง์ ๋ก๊ทธ๋ฅผ ์์งํ๊ณ ์๊ฐํํ ์ ์๋ AWS์์ ์ ๊ณตํ๋ ๋ก๊ทธ ๋ชจ๋ํฐ๋ง ์๋น์ค
- Google Cloud Logging: GKE ํด๋ฌ์คํฐ์์ Google Cloud Logging์ ์ฌ์ฉํด ๋ก๊ทธ๋ฅผ ์์งํ๊ณ ๊ด๋ฆฌํ ์ ์๋ค.
4. Splunk, Datadog
- Splunk: ๊ณ ๊ธ ๋ก๊ทธ ๋ถ์ ์๋ฃจ์ . ๋ณต์กํ ๋ก๊ทธ ๋ถ์๊ณผ ๋ณด์ ๋ชจ๋ํฐ๋ง์ ์ ๊ณตํ๋ฉฐ ๋๊ท๋ชจ ๊ธฐ์ ํ๊ฒฝ์์ ๋ง์ด ์ฌ์ฉ๋จ. (kuberenets ์์๋ splunk ์์ด์ ํธ๋ฅผ ์ฌ์ฉํด ๋ก๊ทธ ์์ง ๊ฐ๋ฅ). ์คํ์์ค๊ฐ ์๋๋ผ ๋น์ฉ์ ๋์
- Datadog: ๋ชจ๋ํฐ๋ง๊ณผ ๋ก๊ทธ ์์ง์ ํตํฉ์ ์ผ๋ก ์ ๊ณต. Kubernetes์์ ์ฌ์ด ํตํฉ. ๋ก๊ทธ ์์ง ๋ฟ๋ง ์๋๋ผ ์ดํ๋ฆฌ์ผ์ด์ ๋ชจ๋ํฐ๋ง, ์ธํ๋ผ ๋ชจ๋ํฐ๋ง์ ํจ๊ป ์ ๊ณตํ๋ ์ ์ฒด์ ์ธ ๋ชจ๋ํฐ๋ง ์๋ฃจ์ ํ์ ์ ์ฌ์ฉ
์ฐธ๊ณ
https://bravenamme.github.io/2021/01/28/elk-stack/
https://nangman14.tistory.com/68
https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-node.html#master-node
https://braineanear.medium.com/elasticsearch-architecture-v-node-roles-81ec3d04257e
https://fluentbit.io/blog/2020/12/03/common-architecture-patterns-with-fluentd-and-fluent-bit/
https://www.infracloud.io/blogs/logging-in-kubernetes-efk-vs-plg-stack/
'๊ธฐํ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Apache Nifi] Mysql DB ์ฐ๊ฒฐํ๊ธฐ (0) | 2024.07.15 |
---|---|
[Kubernetes] NodeSelector ์ค์ (0) | 2024.04.09 |
[SSL] SSL ์ธ์ฆ์์ ๋ํด์.. (HTTPS) (0) | 2023.06.09 |
window vscode c++ ๊ฐ๋ฐํ๊ฒฝ ์ธํ (0) | 2022.03.15 |
Windows์ฉ PIP ์ค์นํ๊ธฐ (0) | 2022.03.03 |