
Log Aggregation์ ์งํ: ์นด์นด์ค์ Fluentd ๋์ฒด๊ธฐ
Log Aggregation์ ์งํ: ์นด์นด์ค์ Fluentd ๋์ฒด๊ธฐ ๊ด๋ จ
์นด์นด์ค๋ ๋ด๋ถ ๋ก๊ทธ ์์ง ์์คํ ์ผ๋ก kemi-log๋ฅผ ์ด์ํ๊ณ ์์ต๋๋ค. kemi-log๋ ์ฌ๋ฌ ๊ฐ์ง ์คํ ์์ค๋ฅผ ์ด์ฉํ์ฌ ๊ตฌ์ถ๋์์ผ๋ฉฐ, ํนํ Fluentd๋ฅผ ๋ฉ์ธ ์ปดํฌ๋ํธ๋ก ํ์ฉํ์ฌ ์๋ ๊ฐ ์ด์ํด์จ ํ๋ซํผ์ ๋๋ค. ์ด ๊ธ์์๋ Fluentd๋ฅผ ๋์ฒดํ๊ธฐ ์ํ ๋ง์ด๊ทธ๋ ์ด์ ํ๋ก์ ํธ๋ฅผ ์๊ฐํ๊ณ ์ ํฉ๋๋ค. ๊ตฌ์ฒด์ ์ผ๋ก๋ ์ด๋ฌํ ํ๋ก์ ํธ๋ฅผ ์งํํ๊ฒ ๋ ๋ฐฐ๊ฒฝ๊ณผ ๊ฐ๋ฐ ๊ณผ์ , ๊ทธ๋ฆฌ๊ณ ์ค์ ๋์ ํ ๋ฌ์ฑํ ์ฑ๊ณผ์ ๋ํด ์ค๋ช ํ๊ณ ์ ํฉ๋๋ค.
kemi-log ํํฉ
kemi-log๋ ํ์ฌ๋ ๋ฐ์ ํ์ฌ ์๋์ ๊ฐ์ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค.

2๊ฐ ๋ ์ด์ด๋ก ๊ตฌ์ฑ๋ ์์คํ ์ํคํ ์ฒ์ log aggregator ์์ญ์ 2๊ฐ์ ๋ ์ด์ด๋ก ๋ถ๋ฆฌ๋์ด ์์ต๋๋ค. 1 layer๋ ์ฌ์ฉ์๋ก๋ถํฐ ์ง์ ๋ก๊ทธ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ฒ ๋๊ณ 2 layer๋ 1 layer๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ๋๊ฒจ๋ฐ์ ๊ฐ๊ฐ์ ์คํ ๋ฆฌ์ง๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ์ญํ ์ ๋งก๊ณ ์์ต๋๋ค.
2๊ฐ์ layer๋ก ๋ถ๋ฆฌํ๊ฒ ๋ ์ด์ ๋ ์คํ ๋ฆฌ์ง ์ชฝ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๋ ๊ธฐ๋ฅ์ด ์์คํ ์์์ ๋ง์ด ์ฐจ์งํ๊ณ ์ด์์ ์ด์๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ๊ฐ ์๊ธฐ ๋๋ฌธ์ด์์ต๋๋ค. aggregator๊ฐ ํ๋๋ผ๋ฉด ํน์ ์คํ ๋ฆฌ์ง ์ ์ก ์ชฝ ์ด์๊ฐ ๋ฐ์ํ์ ๋ ๋ชจ๋ aggregator๊ฐ ์ํฅ์ ๋ฐ๊ฒ ๋ฉ๋๋ค. ๊ทธ๋์ 2๊ฐ์ layer๋ก ๋ถ๋ฆฌํด์ 1 layer์์๋ ์ผ๋จ ๋ก๊ทธ๋ฅผ ๋ฐ์์ ๋ฒํผ๋ง์ ํ๊ณ ์๊ณ 2 layer๋ฅผ ํตํด์ ๋ฐ์ ๋ก๊ทธ๋ฅผ ์คํ ๋ฆฌ์ง์ ์ ์ฅํ๋๋ก ํ๊ณ ์์ต๋๋ค. 2 layer๋ ์คํ ๋ฆฌ์ง ๋ณ๋ก ์ฌ๋ฌ ๊ฐ๋ก ๊ทธ๋ฃนํ๋์ด ์์ต๋๋ค. ํน์ ์๋น์ค์ ๋ก๊ทธ ํธ๋ํฝ์ด ๋ง์ ๊ฒฝ์ฐ ๋ถ๋ฆฌํด์ ๊ด๋ฆฌํ๊ธฐ ์ํ ์ฉ๋์ ์คํ ๋ฆฌ์ง ์ชฝ ์ฅ์ ๊ฐ ๋ฐ์ํ์ ๋ ๊ทธ ๋๋ฌธ์ ๋ค๋ฅธ ์คํ ๋ฆฌ์ง๋ก์ ์ ์ฌ์ ์ํฅ์ ๋ฏธ์น์ง ์๋๋ก ํ๊ธฐ ์ํด์ ๊ตฌ๋ถํ๋ ์ฉ๋์ ๋๋ค.
์ด์ ๊ด๋ฆฌ ์์คํ tug
Fluentd๋ ์ค์ ์ ํ์ผ๋ก ๊ธฐ๋กํ๊ณ ๊ด๋ฆฌํฉ๋๋ค. ์ ๊ท ๋ก๊ทธ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๊ฑฐ๋ ๊ธฐ์กด์ ์ค์ ์ ๋ณ๊ฒฝํ๋ ค๋ฉด ์ค์ ํ์ผ์ ๋ณ๊ฒฝํ๊ณ ์ ๋ฐ์ดํธํด์ผ ํฉ๋๋ค. ์ด๋ฐ ์ค์ ์์ ์ด ์์ฃผ ์์ต๋๋ค. ์ด์ ์ด๊ธฐ์๋ Ansible์ ํตํด์ ์ด๋ฐ ๋ณ๊ฒฝ์ฌํญ์ ๋ฐ์ํ๊ณ Fluentd๋ฅผ ์ฌ์์ํ์์ต๋๋ค. ์ด์๊ฒฝํ์ด ์์ฌ ๋๊ฐ๋ฉด์ ์์ ์ค์๋ฅผ ์ค์ด๊ธฐ ์ํด์ ์ฌ๋ฌ ๋์ Fluentd๋ฅผ ๋ชจ์์ ํด๋ฌ์คํฐํ ํ๊ณ ๊ทธ๊ฑธ ํตํฉํด์ ๊ด๋ฆฌํ ์ ์๋ tug๋ผ๋ ์์คํ ์ ๋ง๋ค์ด์ ์ฌ์ฉํ์ต๋๋ค.
tug๋ ์ค์์์ ์ ์ฒด Fluentd๋ค์ ๊ด๋ฆฌํ๋ ์ญํ ์ ํ๋ tug-server์ Fluentd์ ๊ฐ์ ์๋ฒ์ ์์ผ๋ฉด์ tug-server๋ก๋ถํฐ Fluentd ์ค์ ์ ๋ฐ์์ ๋ฐ์ํ๋ tug-agent๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค.
์ง์ tug๋ผ๋ Fluentd ์ค์ ๊ด๋ฆฌ ์์คํ ์ ๋ง๋ค๊ณ , ํ์ํ ๊ฒฝ์ฐ๋ ์คํ ์์ค์ธ Fluentd์ ์ฝ๋ ๊ธฐ์ฌ๋ฅผ ํ๋ฉด์ ์ด์ํด ์์ง๋ง Fluentd์ ๊ตฌ์กฐ์ ํ๊ณ์ ๋ถ๋ชํ๊ฒ ๋์์ต๋๋ค.
Logriver ๊ฐ๋ฐ ๊ฒฐ์
Fluentd์ ๊ตฌ์กฐ์ ํ๊ณ๋ฅผ ๊ทน๋ณตํ๊ธฐ ์ํด ๋์ฒด Logriver๋ผ๋ ์๋ก์ด ๋ก๊ทธ์์ง๊ธฐ๋ฅผ ์์ฒด ๊ฐ๋ฐํ๊ฒ ๋์์ต๋๋ค.
Fluentd์ ๋์์ ์๊ฐํ๋ฉด์ ๊ทธ๋์ ์๋กญ๊ฒ ๋์จ ์ฌ๋ฌ ๊ฐ์ง ์คํ ์์ค๋ค์ ๋์์ผ๋ก ์๊ฐํด ๋ณด์์ต๋๋ค. ํ์ง๋ง ์ด๋ฏธ ์ฌ๋ด์์๋ Fluentd๋ฅผ ํตํ ๋ก๊ทธ ์์ง์ด ํ์คํ๋์ด ์์๊ธฐ ๋๋ฌธ์ ์นด์นด์ค ๋ด๋ถ์ ์๋ง ๋์ ์๋ฒ์ Fluentd๊ฐ ์ค์น๋์ด ๋์ ์ค์ด์์ต๋๋ค. ์ด๋ฌํ Fluentd๋ฅผ ๋ชจ๋ ๋์์ ๋ณ๊ฒฝํ๋ ์์
์ ํ์ค์ ์ผ๋ก ๋ถ๊ฐ๋ฅํ๋ค๊ณ ํ๋จํ์ต๋๋ค. ๋ง์นจ. Fluentd๋ ํต์ ํ๋กํ ์ฝ์ด ๊ณต๊ฐ (fluent/fluentd
)๋์ด ์๊ธฐ ๋๋ฌธ์ Fluentd์ ๋์ผํ ํ๋กํ ์ฝ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ ์ ์์ผ๋ฉด์ ๊ทธ๋์์ ์ด์์์ ์ฌ๋ฌ ์ด์๋ฅผ ํด๊ฒฐํ ์ ์๋ ์์คํ
์ ์ง์ ๊ฐ๋ฐํ๋ ๊ฒ ์ข๊ฒ ๋ค๊ณ ์๊ฐํ๊ฒ ๋์์ต๋๋ค.
์ํฐํ๋ผ์ด์ฆ๊ธ ๊ด๋ฆฌ ๊ธฐ๋ฅ ํ์์ฑ
๋ํ ํ์ฌ ๋์ ์๋ ๋ก๊ทธ ์์ง์ฉ ์คํ ์์ค ์ค์์ ๋๊ท๋ชจ์ ํด๋ฌ์คํฐ๋ฅผ ๊ด๋ฆฌํ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํด ์ฃผ๋ ๊ฒ์ ์ฐพ๊ธฐ ์ด๋ ค์ ์ต๋๋ค. ๋๊ท๋ชจ ์์คํ ์ ์ด์ํด์ผ ํ๊ณ , ๊ทธ๋ ๋ค๋ฉด ์ด๋ค ์คํ ์์ค๋ฅผ ๋์ ํ๋ ๊ฒฐ๊ตญ tug ๊ฐ์ ์ด์์์คํ ์ด ์ถ๊ฐ๋ก ํ์ํด์ง ๊ฑฐ๋ผ๊ณ ์๊ฐํ์ต๋๋ค.
๊ทธ๋์ ์ค์์์ ์ปจํธ๋กคํ ์ ์๋ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง ๋ก๊ทธ์์ง ์์คํ ์ ์ฒ์๋ถํฐ ์๋ก ๋ง๋ค๊ฒ ๋์์ต๋๋ค. ์ด ์์คํ ์ Logriver๋ผ๋ ์ด๋ฆ์ ๊ฐ์ง๊ณ ์๊ณ ํ์ฌ Fluentd์ ์ญํ ์ ๋์ฒดํด ๋๊ฐ๊ณ ์์ต๋๋ค.
Logriver ๊ฐ๋ฐ๊ธฐ
๋ฌด์ค๋จ ์ค์ ๋ณ๊ฒฝ์ ์ํ Dynamic ์ค์ ๊ตฌํ
Logriver๋ ์ค์ ๋ก๊ทธ๋ฅผ ์ฒ๋ฆฌํ๋ ์์ด์ ํธ(agent)์ ์ค์์์ ์ฌ๋ฌ ์์ด์ ํธ๋ค์ ๊ทธ๋ฃนํํด์ ๊ด๋ฆฌํ๋ ์ปจํธ๋กค๋ฌ(controller)๋ก ๋๋์ด ์์ต๋๋ค. ์์ด์ ํธ์ ์ค์ ์ ๋ณ๊ฒฝํ๋ ค๋ฉด ๊ธฐ์กด์ฒ๋ผ ๊ฐ๊ฐ์ ์์ด์ ํธ์ ์ค์ ์ ์ผ์ผ์ด ๋ณ๊ฒฝํ๊ณ ์ฌ์์ํ๋ ๋ฐฉ์์ด ์๋๋ผ ์ปจํธ๋กค๋ฌ์์ ์ค์ ์ ๋ณ๊ฒฝํ๊ณ ๋์ ์์ด์ ํธ๋ค์ ์ ์ฉํ๋ ๋ฐฉ์์ผ๋ก ๋์ํฉ๋๋ค.
๊ธฐ์กด์ Fluentd์์๋ ์ค์ ์ ๋ณ๊ฒฝ ํ ์ ์ฉํ๋ ค๋ฉด ์ผ๋จ Fluentd ํ๋ก์ธ์ค๋ฅผ graceful shutdown ํ ํ ๋ค์ ์์ํ์ด์ผ ํฉ๋๋ค. ์ด ๊ณผ์ ์์ ์ฒ๋ฆฌํด์ผ ํ ์์ฌ ๋ฐ์ดํฐ๊ฐ ๋ง๋ค๋ฉด ์ฌ์์ํ๋ ๋ฐ ๋ง์ ์๊ฐ์ด ์์๋๊ธฐ๋ ํ์ต๋๋ค. Logriver ์์ด์ ํธ๋ ์ปจํธ๋กค๋ฌ๋ก๋ถํฐ ์๋ก์ด ์ค์ ์ ๋ฐ์์ ์ ๋ฐ์ดํธํ๊ณ ์ด๋ ์์ด์ ํธ๋ ํ๋ก์ธ์ค ์ฌ์์ ์์ด ๋์ ์ผ๋ก ์ค์ ์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
์ฐ์ ๋ฌด์ค๋จ์ผ๋ก config๋ฅผ ์ฌ์ค์ ํ๊ธฐ ์ํด์ ์ด๋ป๊ฒ ๊ฐ๋ฐํด์ผ ํ ์ง ๊ณ ๋ฏผํ์ต๋๋ค. ์ฌ๋ฌ ๊ฐ์ง ๋ฐฉ์์ด ์์ ์ ์๊ฒ ์ง๋ง go ์ธ์ด์ ๊ณ ๋ฃจํด์ ํ์ฉํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. ํ๋ก์ธ์ค๋ ์ฌ์์ํ์ง ์๊ณ , ์๋ก์ด ์ค์ ์ ๊ฐ์ง ๊ณ ๋ฃจํด์ ์์ํด์ ํธ๋ํฝ์ ๋ฐ๋๋ก ํ๊ณ , ๊ธฐ์กด ๊ณ ๋ฃจํด์ graceful ํ๊ฒ ์ข ๋ฃํ๋๋ก ํ์ต๋๋ค. ์๋ก ์์ํ ๊ณ ๋ฃจํด์ด ๊ธฐ์กด ๊ณ ๋ฃจํด๊ณผ ๋์ผํ ํฌํธ๋ฅผ ์ด์ฉํ ์ ์๋๋ก ํ๊ธฐ ์ํด์ TCP ์๋ฒ๋ฅผ ๋ง๋ค ๋ SO_REUSEPORT ์ต์ ์ ์ฌ์ฉํ๋๋ก ํ์ต๋๋ค. ์ ๊ท ๊ณ ๋ฃจํด์ด ์์ฑ๋๊ณ ํธ๋ํฝ์ ๋ฐ๊ธฐ ์์ํ๋ฉด ๊ธฐ์กด ๊ณ ๋ฃจํด์ graceful shutdown์ ์์ํฉ๋๋ค. ์ด๋ ๊ฒ ํด์ ํ๋ก์ธ์ค์ ์ฌ์์์ด๋ ํธ๋ํฝ์ ๋๊น ์์ด ์๋ก์ด ์ค์ ์ ์ ์ฉํ ์ ์์์ต๋๋ค.
์ค์ ๋ก ์ด๋ฌํ ๋์์ด ํธ๋ํฝ ๋๊น ์์ด ์ ๋์ํ๋์ง ๊ฒ์ฆํ๊ธฐ ์ํด์, ๊ฐ๋ฐ ๊ณผ์ ์์๋ ํธ๋ํฝ ๋ฐ์๊ธฐ์ ๊ฒ์ฆ๊ธฐ๋ฅผ ์ง์ ๊ฐ๋ฐํด์ ์ฌ์ฉํ์ต๋๋ค. ๋จ์ ์๊ฐ๋น ํ์ํ ๋งํผ์ ๋ก๊ทธ๋ฅผ ์์ฑํ๊ณ ์คํ ๋ฆฌ์ง์ ์ ์ ์ฌ๋์๋์ง๋ฅผ ํ๋์ฉ ๊ฒ์ฆํ์ต๋๋ค. ์ด๋์์๋ ๋ค์ด์จ ๋ฐ์ดํฐ๋ฅผ ์ธ์ฝ๋ฉํด์ ํ์ผ์ ์ ์ฅํ๊ณ ๋ค์ ๋์ฝ๋ฉํด์ ์คํ ๋ฆฌ์ง๋ก ๋ณด๋ด๋ ๋ฐ์ดํฐ ๋ณํ ๊ณผ์ ์์ ๋ฌธ์ ๊ฐ ๋ฐ์ํด์, ์ด๋ฐ ๋ถ๋ถ๋ค์ ์ง์ค์ ์ผ๋ก ๊ฒ์ฆํ์ต๋๋ค.
Go ์ธ์ด ์ฌ์ฉ์ผ๋ก CPU ์ฌ์ฉ ํจ์จ ๊ฐ์
Fluentd๋ ๋ฃจ๋น(Ruby)๋ก ๊ฐ๋ฐ๋๊ธฐ ๋๋ฌธ์ ๋ฉํฐ ์ฝ์ด๋ฅผ ์ ํ์ฉํ์ง ๋ชปํ๋ ์ด์๊ฐ ์์์ต๋๋ค. ๋ฃจ๋น์ ํ๋ก์ธ์ค๋ ํ ๋ฒ์ ํ๋์ CPU์ฝ์ด๋ง ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ์๋ฒ์ CPU ์์์ด ์ถฉ๋ถํ๋ฐ๋ ๋ถ๊ตฌํ๊ณ ๋ชจ๋ CPU๋ฅผ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ์ง ๋ชปํ์ต๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์๋์ฒ๋ผ CPU ์์์ ์ฌ์ ๊ฐ ์์ง๋ง ์ ํ์ฉํ์ง ๋ชปํ๊ณ ์์คํ load๊ฐ ์๋ฐฑ์ด ๋๊ฒ ์ฌ๋ผ๊ฐ๋ ์ด์๊ฐ ์์์ต๋๋ค.


Go๋ก ๊ฐ๋ฐ๋ Logriver๋ ๋ฉํฐ์ฝ์ด CPU ์์์ ์ถฉ๋ถํ ํ์ฉํ ์ ์์ด ์๋์ฒ๋ผ ์์ ์ ์ธ ์ํ๋ฅผ ์ ์งํ ์ ์์ต๋๋ค. ๋์ผํ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋๋ฐ CPU ์ฌ์ฉ๋ ์์ฒด๋ ์๊ณ load๋ ์ต๋์น๊ฐ 5๋ฅผ ๋์ง ์๋ ๋ฑ ์์ ์ ์ธ ๋ชจ์ต์ ๋ณด์ฌ์ค๋๋ค.


๊ทธ ์ธ์ ์ฑ๋ฅ ํ๋์ ์ฃผ๋ก CPU, ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋๊ณผ flame graph๋ฅผ ํ์ธํ๋ฉด์ ์งํํ์ต๋๋ค. flame graph ์์์ ๊ฐ์ฅ ๋ง์ ๋ถ๋ถ์ ์ฐจ์งํ๋ ๊ณณ์ ๋ฒํผํ์ผ์ ์ฝ๊ณ ์ธ ๋ ๋ฐ์ดํฐ๋ฅผ JSON์ผ๋ก ์ธ์ฝ๋ฉ/๋์ฝ๋ฉํ๋ ๋ถ๋ถ์ด์์ต๋๋ค. ๊ทธ ๋ถ๋ถ์ ๊ฐ์ ํ๊ธฐ ์ํด์ Go ์ธ์ด์ ๊ธฐ๋ณธ JSON ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ธ์ ๋ค์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ์ฑ๋ฅ์ ๋น๊ตํ๊ณ , ์นด์นด์ค์ ์ฌ์ฉ ๋ฐฉ์์ ๊ฐ์ฅ ์ฑ๋ฅ์ด ๋ฐ์ด๋ goccy/go-json
์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์ ํํ์ต๋๋ค. ๋ค๋ง go-json์์ ์คํธ๋ฆผ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋์ฝ๋ฉํ ๋๋ ํด๊ฒฐ๋์ง ์์ ์ด์๊ฐ ์์ด์ ๋ฒํผ์ ๋ฐ์ดํฐ๋ฅผ ์ฐ๋ ์ญํ ์๋ง ์ฌ์ฉํ๊ณ , ๋ฒํผ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ๋๋ Go ์ธ์ด์ ๊ธฐ๋ณธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ต๋๋ค.
Memory ์ฌ์ฉ๋ 90% โ 15% ๋ํญ ๊ฐ์
Fluentd์ HDFS(Hadoop Distributed File System)์ kafka plugin์ match ๊ตฌ๋ฌธ์ด ๋ง์์ง๋ ๊ฒฝ์ฐ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ์๋นํ ์ปค์ง๋๋ค. kemi-log๋ ์นด์นด์ค์ ์ฌ๋ฌ ์๋น์ค์์ ์ฌ์ฉํ๊ณ ์๊ธฐ ๋๋ฌธ์ ๊ทธ๋ฅผ ๊ตฌ๋ถํ๊ธฐ ์ํด ๋ง์ match ๊ตฌ๋ฌธ์ด ํ์ํ์๊ณ , ์ด์ ๋ฐ๋ผ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ๋์ด๋๋ ์ด์๊ฐ ์์์ต๋๋ค. ์ด ํ์์ ํด์ํ๊ธฐ ์ํด์ ํ๋์ match ๊ตฌ๋ฌธ์์ ์ฌ๋ฌ ๊ฐ์ง ์๋น์ค๋ฅผ ๋์์ ์ฒ๋ฆฌํ๋๋ก ํด์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ์ค์ฌ์ ์ด์ํด ์์ต๋๋ค. ๊ธฐ์กด match ๊ตฌ๋ฌธ์ 1,000๊ฐ์์ 30๊ฐ ์ ๋ก๋ ์ค์ฌ์ Fluentd์ ์์ปค๋น ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ 30% โ 3%๋ก ์ค์ผ ์ ์์์ต๋๋ค.

๊ทธ๋ ๊ฒ ํ์์๋ ์ ์ ์ฌ์ฉ๋์ด ๋์ด๋์ ์๋์ฒ๋ผ Fluentd๊ฐ ์๋ฒ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ 90% ๊ฐ๊น์ด ์ฌ์ฉํ๊ณ ์์์ต๋๋ค.

์ด๋ฅผ Logriver๋ก ๋ณ๊ฒฝํ๋ฉด์ match ๊ตฌ๋ฌธ ๊ด๋ จ ๋ด์ฉ์ ์ผ๊ด์ฒ๋ฆฌํ ์ ์๋๋ก ๊ฐ์ ํด์ ์๋์ฒ๋ผ ์๋ฒ์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ 90% โ 15%๋ก ์ค์ผ ์ ์์์ต๋๋ค.

๋คํธ์ํฌ ์ปค๋ฅ์ ์ 4000๊ฐ โ 200๊ฐ ๊ฐ์
Fluentd๋ ๋ก๊ทธ๋ฅผ tag๋ผ๋ ๋จ์๋ก ๊ตฌ๋ถํ๊ณ ์ฒ๋ฆฌํ๊ณ ์์ต๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์นดํ์นด(Kafka)๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๋ ๊ฒฝ์ฐ ์ฒ๋ฆฌํ๋ tag ๋น ํ๋์ ์ปค๋ฅ์ ์ ๋ง๋ค์ด์ ์ ์กํ๊ธฐ ๋๋ฌธ์ ์ฒ๋ฆฌํ๋ tag๊ฐ ๋์ด๋๋ ๊ฒฝ์ฐ ์๋์ฒ๋ผ ์ปค๋ฅ์ ๊ฐ์๋ ํจ๊ป ๋์ด๋๊ฒ ๋ฉ๋๋ค.

์ด๋ ๊ฒ ๋๋ฉด Fluentd ์๋ฒ๊ฐ์๊ฐ ๋์ด๋๊ฒ ๋๋ฉด ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ฃผ๋ ์นดํ์นด ์ชฝ์๋ ๊ทธ์ ๋น๋กํด์ ์๋ฒ ์ ์ ์ปค๋ฅ์ ์ด ๋์ด๋๊ฒ ๋ผ์ ๋ถ๋ด์ด ๋ ์ ์์ต๋๋ค. ์ด ๋ถ๋ถ์ ์ค์ฌ์ฃผ๊ธฐ ์ํด์ ์ฒ๋ฆฌํ์ฌ tag ์์ ์๊ด์์ด ์นดํ์นด ๋ธ๋ก์ปค๋น ๋์ผํ ์ปค๋ฅ์ ์ ์ฌ์ฌ์ฉํ๋๋ก ๊ตฌ์กฐ๋ฅผ ๊ฐ์ ํด์ ์๋์ฒ๋ผ ์ปค๋ฅ์ ๊ฐ์๋ฅผ ๋ง์ด ์ค์์ต๋๋ค.

์ต๋ 4000๊ฐ๊ฐ๋ ์๋ ์ปค๋ฅ์ ๊ฐ์๋ฅผ 200๊ฐ๊ฐ๋์ผ๋ก ์ค์์ต๋๋ค.
๋ฒํผ ํตํฉ ๊ด๋ฆฌ๋ก ์ด์ ๊ฐ์
Fluentd์์ ๋ง์ tag๋ค์ ๋ํด ์ค์ ์ ํ๋ ค๋ฉด ์ค์ ์ถฉ๋์ด ์์ด์ผ ํ๋ฏ๋ก ์ค์ ๋ง๋ค ๋ค๋ฅธ id๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ์ด๋ฐ id๋ฅผ ๊ธฐ๋ฐ์ผ๋ก Fluentd๋ tag์ ๋ํ ๋ฒํผ๋ฅผ ๋ง๋ค์ด์ ๊ด๋ฆฌํฉ๋๋ค. ์กฐ์ง์์ ๊ด๋ฆฌํ๋ Fluentd tag ๊ฐ์๊ฐ ์์ฒ ๊ฐ์ด๊ธฐ ๋๋ฌธ์ ํ๋์ ์๋ฒ์ ์์ฒ ๊ฐ์ ๋ฒํผ ๋๋ ํฐ๋ฆฌ๊ฐ ์๊น๋๋ค.
๊ทธ๋ฐ๋ฐ Fluentd ์ค์ ์ ๋ณ๊ฒฝํด์ผ ํ๋ ๊ฒฝ์ฐ ์ด id๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ฒํผ ํ์ผ๋ค์ ๋๋ ํฐ๋ฆฌ๋ช ๋ ๋ณ๊ฒฝ๋ฉ๋๋ค. ์ด ์ํ์์ ์ ๊ท ์ค์ ์ ์ ์ฉํ๊ธฐ ์ํด์ Fleuntd๋ฅผ ์ฌ์์ํ๊ฒ ๋๋ฉด Fluentd๋ ์ ๊ท ์ค์ ๊ธฐ๋ฐ์ผ๋ก ๋ฒํผ ๋๋ ํฐ๋ฆฌ๋ฅผ ์ฒ๋ฆฌํ๊ฒ ๋๊ณ , ๊ธฐ์กด id์์ ์ฌ์ฉํ๋ ๋ฒํผ ๋๋ ํฐ๋ฆฌ๋ ์ฒ๋ฆฌํ์ง ์๋ ํ์์ด ๋ฐ์ํฉ๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก ๋ฐ์ดํฐ ์ ์ค์ ๋ฐฉ์งํ๊ธฐ ์ํด์๋ ๊ธฐ์กด ๋ฒํผ ๋๋ ํฐ๋ฆฌ์ ์๋ ๋ฐ์ดํฐ๋ฅผ ํ์ธํด์ ์ ๊ท ๋ฒํผ ๋๋ ํฐ๋ฆฌ ์ชฝ์ผ๋ก ์ฎ๊ฒจ์ค์ผ ํฉ๋๋ค.
์ด๋ฐ ๋ฒํผ ๋๋ ํฐ๋ฆฌ ๊ด๋ฆฌ๋ Fluentd๋ฅผ ์ด์ํ๋ฉด์ ๋ง์ ๋ฆฌ์์ค๋ฅผ ์๋ชจํ๊ฒ ํ๋ ์์ ์ด์์ต๋๋ค. ๊ทธ๋์ Logriver๋ tag ๊ฐ์์ ์๊ด์๊ฒ ๋ฒํผ๋ฅผ ํตํฉ ๊ด๋ฆฌํ๋๋ก ํจ์ผ๋ก์จ ์ด๋ฐ ์ด์๋ฅผ ์ค์ผ ์ ์๊ฒ ๋์์ต๋๋ค.
DDoS ๊ณต๊ฒฉ ๋์์ ์ํ RateLimit ๊ธฐ๋ฅ ์ ์ฉ
ํ๋ซํผ์ ์ด์ํ๋ค ๋ณด๋ฉด ์ฌ๋ฌ ๊ฐ์ง ์ด์ ๋ก ํธ๋ํฝ์ด ๊ธ์ฆํ๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. ํน์ ์ด๋ฒคํธ(๊ธฐ๋ ์ผ, ์ฌ๊ฑด์ฌ๊ณ ๋ฑ) ๋๋ฌธ์ ๊ฐ์๊ธฐ ํธ๋ํฝ์ด ์ฆ๊ฐํ ์๋ ์๊ณ , ์ธ๋ถ์ DDoS ๊ณต๊ฒฉ ๋๋ฌธ์ผ ์๋ ์์ต๋๋ค. ์ด๋ด ๋ ์ค์ ์๋น์ค ์ฌ์ฉ๋์ด ๋์ด๋ ๊ฒฝ์ฐ๋ผ๋ฉด ์ฆ์ค์ ํตํด์ ์ํํ๊ฒ ํธ๋ํฝ์ ๋์ํ๋ฉด ๋ฉ๋๋ค. ํ์ง๋ง DDoS ๊ณต๊ฒฉ ๋๋ฌธ์ด๋ผ๋ฉด ์ฆ์ค์ด ์๋๋ผ ๋์ด๋ ํธ๋ํฝ์ ๋ชจ๋ ์ฒ๋ฆฌํ์ง ์๋๋ก ๋์ํด์ผ ํ ํ์๊ฐ ์์ต๋๋ค. ๊ธฐ์กด์ Fluentd ๊ธฐ๋ฐ์ ๋ก๊ทธ ์์ง์์๋ ์ด๋ฐ ์ผ์ด ์์ ๋ ์ ๋ฅผ ๋จน์๊ธฐ ๋๋ฌธ์ Logriver์๋ ์ปค๋ฅ์ ๋น ํธ๋ํฝ์ ์ ์ดํ ์ ์๋ ๊ธฐ๋ฅ์ ์ถ๊ฐํด์ ์ด๋ฅผ ๋ง์๋ผ ์ ์๋๋ก ํ์ต๋๋ค.
๋ฉํธ๋ฆญ ์์ง ๋ฐ ํ์ธ ๋ฐฉ๋ฒ ๊ฐ์
ํ๋ซํผ์ ์ด์ํ๊ฒ ๋๋ฉด ํ์ํ ๊ฒ์ด ์ด์์ ํ์ํ ๋ฉํธ๋ฆญ ์ ๋ณด์ธ๋ฐ์. tag๋ณ ๋ก๊ทธ ์ฌ์ฉ๋(๊ฐ์/์ฌ์ด์ฆ)์ ์ธก์ ํ๊ธฐ ์ํด์ ๊ธฐ์กด์๋ ๋ณ๋์ Fluentd plugin์ ๊ฐ๋ฐํด์ ํ๋ก๋ฉํ ์ฐ์ค๋ก ์์งํด์ ์ฌ์ฉํ์๋๋ฐ, ์ด ๋ถ๋ถ์ Logriver์์๋ ๋ด์ฅํด์ ์ข ๋ ๋ฉํธ๋ฆญ ํ์ธ์ด ํธํ๊ฒ ๋ง๋ค์์ต๋๋ค.
์ค์๋น์ค ์ ์ฉ ๊ฒ์ฆ
๊ฐ๋ฐ ๊ณผ์ ๊ฒ์ฆ์ด ์ง๋ ํ ์ค์ ์๋น์ค ํ๊ฒฝ์ ์ ์ฉํ๊ธฐ ์ ์๋ ์ค์ ์ ๋์ผํ ๋ฐ์ดํฐ๋ฅผ ์ด์ฉํด์ ๋ฐ์ดํฐ ์ธ์ฝ๋ฉ/๋์ฝ๋ฉ์ ๋ฌธ์ ๊ฐ ์๋์ง ๊ฒ์ฆํด์ผ ํ์ต๋๋ค. ํธ๋ํฝ ์์ฒด๋ ๋ฏธ๋ฌ๋งํด์ ํ ์คํธ ํ๊ฒฝ์ผ๋ก ๋ฐ์ ์ ์์์ต๋๋ค. ํ์ง๋ง ์ค์ ์๋น์ค ํ๊ฒฝ์์๋ ์ํ๋ ๋งํผ์ ๋ฐ์ดํฐ๋ฅผ ์ ํ๋ ๋งํผ ์์ฑํ๊ณ ๋๋ ๊ฒ ์ด๋ ต๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์๊ฐํด์ผ ํ์ต๋๋ค. ์ฌ๋ฌ ๋์ ์๋ฒ๋ฅผ ์ด์ฉํด์ ์ต๋ํ ์ค์ ์ ๋์ผํ ํ๊ฒฝ์์ ํ ์คํธ๋ฅผ ํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ๊ฐ ๋ค์ด์ค๋ ์์๊ฐ ๋ณด์ฅ๋์ง ์์๊ณ ์ ์ฌ๋๋ ์์๋ ๋ณด์ฅ๋์ง ์์์ต๋๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์ ๊ฒ์ฆ๊ธฐ๋ฅผ ๋ค์ ๋ง๋ค์์ต๋๋ค. ๋ก๊ทธ์ ์๋ timestamp๋ฅผ ์ด์ฉํด์ 1๋ถ ๊ฐ๊ฒฉ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ชจ์์ ๊ฒ์ฆํ์ต๋๋ค. ๊ฒ์ฆ์ ์์ํ๋ฉด ์ค์ ์๋น์ค ํ๊ฒฝ๊ณผ ํ ์คํธ ํ๊ฒฝ์ ๋ฐ์ดํฐ๊ฐ ๋ค์ด์ค๋ ๊ฒ ์ฐจ์ด๊ฐ ์์์ง๋ง ๊ฒฐ๊ตญ ๋จ์ ์๊ฐ๋น ๋ค์ด์จ ๋ฐ์ดํฐ ๊ฑด์๊ฐ ๋์ผํด์ง๋ ๊ฑธ ํ์ธํ ์ ์์์ต๋๋ค.
์ดํ ๋ฐ์ดํฐ ๊ฑด์๋ฟ๋ง ์๋๋ผ ๋ฐ์ดํฐ ๋ด์ฉ ์์ฒด๋ ๊ฐ์์ง ๊ฒ์ฆํด์ผ ํ์ต๋๋ค. ๊ฒ์ฆ์ฉ์ผ๋ก ์ฌ์ฉํ๋ ๊ฒ์ kemi-log๊ฐ ์ฒ๋ฆฌํ๋ ์ผ๋ถ ๋ฐ์ดํฐ์ด๊ธด ํ์ง๋ง ๋ถ๋น ๋ค์ด์ค๋ ๋ฐ์ดํฐ๊ฐ 30๋ง ๊ฑด์ด ๋๋ ์์ด์์ต๋๋ค. ๋ฐ์ดํฐ๊ฐ ๋ง๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ๋ค๊ณ ์์ผ๋ฉด์ ์ค์๊ฐ์ผ๋ก 1:1 ๋งค์นญ์ ํ๋ ๊ฑด ๋ถ๊ฐ๋ฅํ๋ค๊ณ ์๊ฐํด์ ๋ฐ์ดํฐ๋ฅผ ํด์ํํด์ ๊ฒ์ฆํ์ต๋๋ค. ์์งํ ๋ก๊ทธ๋ ๋๋ถ๋ถ์ด JSON ํํ์๊ณ , ์ด๊ฑธ ๊ทธ๋๋ก ํด์ํ ํ๊ฒ ๋๋ฉด ์ค์ ๋ก๋ ๋์ผํ ๋ฐ์ดํฐ์ด์ง๋ง ๋ฉค๋ฒ์ ์์๊ฐ ๋ฐ๋ ๊ฒฝ์ฐ ๋ค๋ฅธ ํด์๊ฐ์ผ๋ก ๋ณ๊ฒฝ๋์ด ๋ฌธ์ ๊ฐ ์์์ต๋๋ค. ๊ทธ๋์ JSON ๋ฐ์ดํฐ๋ฅผ ํ๋์ ๋ฌธ์์ด๋ก ๋ง๋ค์ด์ ๊ทธ๊ฑธ ์ํ๋ฒณ์์ผ๋ก ์ ๋ ฌํ ๋ค์ ํด์๋ฅผ ํด์ ํด์๊ฐ์ ์ผ๊ด์ฑ์ ๋ณด์ฅํ๋๋ก ๋ง๋ค์์ต๋๋ค. ์ด ๊ณผ์ ์์ ๋ฐ์ดํฐ ์ธ์ฝ๋ฉ ์ด์๊ฐ ์์๋ ์ผ๋ถ ์ฌ๋ก๋ฅผ ์ฐพ์์ ์์ ํ ์ ์์์ต๋๋ค.
์ ์ฉ ํจ๊ณผ
์์ ์ฌ๋ฌ ๊ฐ์ง ๊ฐ์ ์ ๊ฒฐ๊ณผ Fluentd๋ณด๋ค ์์คํ ์ฌ์ฉ ํจ์จ์ฑ์ด ํฌ๊ฒ ๊ฐ์ ๋์๊ธฐ ๋๋ฌธ์ Logriver๋ก ์ ํํ๊ณ ๋์ ๊ธฐ์กด์ ์ฌ์ฉํ๋ ์๋ฒ ์ฌ์ฉ๋์ 50% ์ ๊ฐํ ์ ์์์ต๋๋ค.
๊ฒฐ๋ก
์คํ ์์ค์ ์ฅ์ ์ ์ํ๋ ๊ธฐ๋ฅ์ ์ด๊ธฐ ๊ตฌ์ถ์ ๋น ๋ฅด๊ฒ ํ ์ ์๋ค๋ ์ ์ ๋๋ค. ๊ทธ๋ฌ๋ ์ฌ๋ฌ ํด ๋์ ๊ตฌ์ถ๋ ์์คํ ์ ์ด์ํ๋ค ๋ณด๋ฉด ํ์ฌ ๋ด์์ ํ์ํ ์ ์ฑ ๊ณผ ๊ธฐ๋ฅ์ด ํ์ํด์ง๋ฉฐ, ์ด๋ฅผ ๊ธฐ์กด ์์คํ ์ ํตํฉํ ์ง์ ๋ํ ๊ณ ๋ฏผ์ ํ๊ฒ ๋ฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก๋ ํด๋น ์คํ ์์ค์ ๊ธฐ์ฌ๋ฅผ ํด ๋๊ฐ๋ฉด์ ํจ๊ป ๋ฐ์ ํด ๋๊ฐ๋ ๊ฑธ ๋ชฉํ๋ก ํ๊ณ ์์ง๋ง ํ์ค์ ์ธ ์ด๋ ค์ ๋ํ ์กด์ฌํฉ๋๋ค.
์คํ ์์ค์ ํ์ฑ๋๊ฐ ์ค์ด๋ค์ด์ ์ ์ง๋ณด์๊ฐ ์ ๋์ง ์์ ์๋ ์์ต๋๋ค. ์คํ์์ค์ ๋ฉ์ธ ๊ด๋ฆฌ์๊ฐ ์๋ ๊ฒฝ์ฐ ์ํ๋ ๊ธฐ๋ฅ์ ๊ฐ๋ฐํด์ ์ฝ๋ ๊ธฐ์ฌ๋ฅผ ํ๋ ค ํ๋๋ผ๋ ๊ฑฐ๋ถ๋นํ๊ฒ ๋ ์๋ ์์ต๋๋ค. ํ์ฌ ๋ด์์๋ง ํ์ํ ๊ธฐ๋ฅ์ ์ถ๊ฐํด์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๋ ์ฝ๋ ๊ธฐ์ฌ ์์ฒด๊ฐ ๋ถ๊ฐ๋ฅํฉ๋๋ค. ์ด๋ฐ ๊ฒฝ์ฐ ๊ทธ ์คํ ์์ค์ ๋ฉ์ธ์คํธ๋ฆผ๊ณผ๋ ๋ณ๋์ ๊ธฐ๋ฅ์ ๋ด๋ถ์์ ๊ณ์ํด์ ๋ณ๋๋ก ๊ด๋ฆฌํด์ผ ๋๋ ์ด์๊ฐ ์์ ์๋ ์์ต๋๋ค. ์ด๋ฌํ ์ ์ฝ ์ฌํญ ๋๋ฌธ์ ๊ฒฐ๊ตญ ์์ฒด ๊ฐ๋ฐ๊ณผ ์คํ ์์ค ํ์ฉ ๋ ๊ฐ์ง ๋ฐฉ์ ์ฌ์ด์์ ๊ณ ๋ฏผ์ ํ๊ฒ ๋ฉ๋๋ค.
์นด์นด์ค๋ Fluentd๋ฅผ ์๋ ๊ฐ ์ด์ํ ๊ฒฝํ์ ๋ฐํ์ผ๋ก, ๋ค์ํ ๊ธฐ๋ฅ ์ค์ ์ด๋ค ๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ณ ์๋์ง ํ์ ํ๊ณ ์์์ต๋๋ค. ๊ทธ๋ ๊ธฐ์ Fluentd์ ๋ชจ๋ ๊ธฐ๋ฅ๊ณผ ๋ค์ํ plugin๋ค์ ๋ชจ๋ ์์ฒด ๊ฐ๋ฐํ๋ ๊ฒ ์๋๋ผ, ์ด๋ฏธ ์ฌ์ฉ ์ค์ธ ํ์ ๊ธฐ๋ฅ๋ค๋ง์ ์ ๋ณ์ ์ผ๋ก ๋ด์ฌํํ๋ ์ ๋ต์ ์ฑํํจ์ผ๋ก์จ ํจ์จ์ ์ธ ์์คํ ๋ง์ด๊ทธ๋ ์ด์ ์ด ๊ฐ๋ฅํ์ต๋๋ค. ์ด ์ฌ๋ก๊ฐ ์คํ ์์ค๋ฅผ ์ฌ์ฉํ๊ณ ์๊ฑฐ๋ ๋์ ์ ๊ณ ๋ ค ์ค์ธ ์กฐ์ง์์ ์ฐธ๊ณ ํ ๋งํ ์ ์ฉํ ์ฌ๋ก๊ฐ ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.