2019๋
์ธ๋ฐ ์์ง Kubernetes์ ๋ก๊ทธ ์ง๊ณ๋ฅผ ์ํ ํ์ค ์๋ฃจ์
์ด ์์ต๋๋ค. ์ด ๊ธฐ์ฌ์์๋ ์ค์ ์ฌ๋ก๋ฅผ ์ฌ์ฉํ์ฌ ๊ฒ์, ๋ฐ์ํ ๋ฌธ์ ๋ฐ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๊ณต์ ํ๊ณ ์ถ์ต๋๋ค.
ํ์ง๋ง ๋จผ์ ๋ก๊ทธ๋ฅผ ์์งํ์ฌ ๊ณ ๊ฐ๋ง๋ค ๋งค์ฐ ๋ค๋ฅธ ๊ฒ์ ์ดํดํ๋๋ก ์์ฝํ๊ฒ ์ต๋๋ค.
- ๋๊ตฐ๊ฐ ๋ณด์ ๋ฐ ๊ฐ์ฌ ๋ก๊ทธ๋ฅผ ๋ณด๊ณ ์ถ์ดํฉ๋๋ค.
- ๋๊ตฐ๊ฐ - ์ ์ฒด ์ธํ๋ผ์ ์ค์ ์ง์ค์ ๋ก๊น ;
- ์ผ๋ถ์ ๊ฒฝ์ฐ ๋ฐธ๋ฐ์ ๋ฑ์ ์ ์ธํ๊ณ ์ ํ๋ฆฌ์ผ์ด์ ๋ก๊ทธ๋ง ์์งํ๋ ๊ฒ์ผ๋ก ์ถฉ๋ถํฉ๋๋ค.
์๋๋ ๋ค์ํ '์์๋ฆฌ์คํธ'๋ฅผ ๊ตฌํํ ๋ฐฉ๋ฒ๊ณผ ์ด๋ค ์ด๋ ค์์ ์ง๋ฉดํ๋์ง์ ๋ํ ์ปท์
๋๋ค.
์ด๋ก : ๋ก๊น ๋๊ตฌ์ ๋ํด
๋ก๊น ์์คํ ์ ๊ตฌ์ฑ ์์์ ๋ํ ๋ฐฐ๊ฒฝ
๋ก๊น ์ ๋ง์ ๋ฐ์ ์ ์ด๋ฃจ์๊ณ ๊ทธ ๊ฒฐ๊ณผ ์ค๋๋ ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ๋ ๋ก๊ทธ ์์ง ๋ฐ ๋ถ์ ๋ฐฉ๋ฒ๋ก ์ด ๊ฐ๋ฐ๋์์ต๋๋ค. 1950๋ ๋์ Fortran์ ํ๋ก๊ทธ๋๋จธ๊ฐ ํ๋ก๊ทธ๋จ์ ๋๋ฒ๊น ํ๋ ๋ฐ ๋์์ด ๋๋ ํ์ค ์ ์ถ๋ ฅ ์คํธ๋ฆผ์ ์๋ ๋ก๊ทธ๋ฅผ ๋์ ํ์ต๋๋ค. ์ด๊ฒ์ ๋น์ ํ๋ก๊ทธ๋๋จธ์ ์ถ์ ๋ ์ฝ๊ฒ ๋ง๋ค์ด์ค ์ต์ด์ ์ปดํจํฐ ๋ก๊ทธ์์ต๋๋ค. ์ค๋ ์ฐ๋ฆฌ๋ ๋ก๊น ์์คํ ์ ์ฒซ ๋ฒ์งธ ๊ตฌ์ฑ ์์๋ฅผ ๋ณผ ์ ์์ต๋๋ค. ๋ก๊ทธ์ ์์ค ๋๋ "์์ฐ์".
์ปดํจํฐ ๊ณผํ์ ๊ฐ๋งํ ์์ง ์์์ต๋๋ค. ์ปดํจํฐ ๋คํธ์ํฌ๊ฐ ๋ฑ์ฅํ๊ณ ์ฒซ ๋ฒ์งธ ํด๋ฌ์คํฐ... ์ฌ๋ฌ ์ปดํจํฐ๋ก ๊ตฌ์ฑ๋ ๋ณต์กํ ์์คํ
์ด ์๋ํ๊ธฐ ์์ํ์ต๋๋ค. ์ด์ ์์คํ
๊ด๋ฆฌ์๋ ์ฌ๋ฌ ์์คํ
์์ ๋ก๊ทธ๋ฅผ ์์งํด์ผ ํ๋ฉฐ ํน๋ณํ ๊ฒฝ์ฐ ์์คํ
์ค๋ฅ๋ฅผ ์กฐ์ฌํด์ผ ํ๋ ๊ฒฝ์ฐ OS ์ปค๋ ๋ฉ์์ง๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค. ์ค์ ์ง์ค์ ๋ก๊ทธ ์์ง ์์คํ
์ ์ค๋ช
ํ๊ธฐ ์ํด 2000๋
๋ ์ด๋ฐ์ ์ถํ๋์์ต๋๋ค.
๋ก๊ทธ์ ์์ด ๋์ด๋๊ณ ์น ๊ธฐ์ ์ด ๋๋ฆฌ ๋ณด๊ธ๋๋ฉด์ ์ฌ์ฉ์์๊ฒ ์ด๋ค ๋ก๊ทธ๋ฅผ ํธ๋ฆฌํ๊ฒ ๋ณด์ฌ์ฃผ์ด์ผ ํ๋๊ฐ์ ๋ํ ์๋ฌธ์ด ์๊ฒผ์ต๋๋ค. ๊ฐ๋จํ ์ฝ์ ๋๊ตฌ(awk/sed/grep)๊ฐ ๊ณ ๊ธ ๋๊ตฌ๋ก ๋์ฒด๋์์ต๋๋ค. ๋ก๊ทธ ๋ทฐ์ด - ์ธ ๋ฒ์งธ ๊ตฌ์ฑ ์์.
๋ก๊ทธ ์์ ์ฆ๊ฐ๋ก ์ธํด ๋ ๋ค๋ฅธ ์ฌ์ค์ด ๋ถ๋ช ํด์ก์ต๋๋ค. ๋ก๊ทธ๊ฐ ํ์ํ์ง๋ง ์ ๋ถ๋ ์๋๋ผ๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ก๊ทธ๋ง๋ค ๋ณด์กด ์์ค์ด ๋ค๋ฆ ๋๋ค. ์ผ๋ถ๋ ํ๋ฃจ ๋ง์ ์์ค๋ ์ ์๊ณ ๋ค๋ฅธ ์ผ๋ถ๋ 5๋ ๋์ ์ ์ฅํด์ผ ํฉ๋๋ค. ๋ฐ๋ผ์ ๋ฐ์ดํฐ ํ๋ฆ์ ํํฐ๋งํ๊ณ ๋ผ์ฐํ ํ๋ ๊ตฌ์ฑ ์์๊ฐ ๋ก๊น ์์คํ ์ ์ถ๊ฐ๋์์ต๋๋ค. ์ด๋ฅผ ํธ์ถํ๊ฒ ์ต๋๋ค. ํํฐ.
์คํ ๋ฆฌ์ง๋ ์ผ๋ฐ ํ์ผ์์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก, ๊ทธ๋ฆฌ๊ณ ๋ฌธ์ ์ค์ฌ ์คํ ๋ฆฌ์ง(์: Elasticsearch)๋ก ํฐ ๋์ฝ์ ์ด๋ฃจ์์ต๋๋ค. ๊ทธ๋์ ์ ์ฅ์๊ฐ ์์ง๊ธฐ์ ๋ถ๋ฆฌ๋์์ต๋๋ค.
๊ถ๊ทน์ ์ผ๋ก ๋ก๊ทธ๋ผ๋ ๊ฐ๋ ์์ฒด๊ฐ ๊ธฐ๋ก์ ์ํด ๋ณด์กดํ๋ ค๋ ์ผ์ข ์ ์ถ์์ ์ธ ์ด๋ฒคํธ ์คํธ๋ฆผ์ผ๋ก ํ์ฅ๋์์ต๋๋ค. ์๋๋ฉด ์กฐ์ฌ๋ฅผ ์ํํ๊ฑฐ๋ ๋ถ์ ๋ณด๊ณ ์๋ฅผ ์์ฑํด์ผ ํ๋ ๊ฒฝ์ฐ...
๊ทธ ๊ฒฐ๊ณผ, ๋ก๊ทธ ์์ง์ ๋น๊ต์ ์งง์ ์๊ฐ ๋ด์ ๋น ๋ฐ์ดํฐ์ ํ์ ์น์ ์ค ํ๋๋ผ๊ณ ํ ์ ์๋ ์ค์ํ ํ์ ์์คํ ์ผ๋ก ๋ฐ์ ํ์ต๋๋ค.
์๋ ์๋ ์ผ๋ฐ ์ธ์๋ง์ผ๋ก๋ "๋ก๊น
์์คํ
"์ ์ถฉ๋ถํ ์ ์์์ง๋ง ์ด์ ๋ ์ํฉ์ด ๋ง์ด ๋ฐ๋์์ต๋๋ค.
Kubernetes ๋ฐ ๋ก๊ทธ
Kubernetes๊ฐ ์ธํ๋ผ์ ๋ฑ์ฅํ์ ๋ ์ด๋ฏธ ์กด์ฌํ๋ ๋ก๊ทธ ์์ง ๋ฌธ์ ๋ ์ด๋ฅผ ์ฐํํ์ง ๋ชปํ์ต๋๋ค. ์ด๋ค ๋ฉด์์๋ ํจ์ฌ ๋ ๊ณ ํต์ค๋ฌ์์ก์ต๋๋ค. ์ธํ๋ผ ํ๋ซํผ ๊ด๋ฆฌ๊ฐ ๋จ์ํ๋์์ ๋ฟ๋ง ์๋๋ผ ๋์์ ๋ณต์กํด์ก์ต๋๋ค. ๋ง์ ์ค๋๋ ์๋น์ค๊ฐ ๋ง์ดํฌ๋ก์๋น์ค๋ก ๋ง์ด๊ทธ๋ ์ด์ ๋๊ธฐ ์์ํ์ต๋๋ค. ๋ก๊ทธ์ ๋งฅ๋ฝ์์ ์ด๋ ๋ก๊ทธ ์์ค์ ์ฆ๊ฐ, ํน๋ณํ ์๋ช ์ฃผ๊ธฐ, ๋ก๊ทธ๋ฅผ ํตํด ๋ชจ๋ ์์คํ ๊ตฌ์ฑ ์์์ ๊ด๊ณ๋ฅผ ์ถ์ ํด์ผ ํ๋ ํ์์ฑ์ ๋ฐ์๋ฉ๋๋ค.
์์ ๋ด๋ค๋ณด๋ฉด ์ํ๊น๊ฒ๋ ์ง๊ธ์ ๋ค๋ฅธ ๋ชจ๋ ์ต์ ๊ณผ ๋น๊ตํ์ฌ Kubernetes์ ๋ํ ํ์คํ๋ ๋ก๊น ์ต์ ์ด ์๋ค๊ณ ๋งํ ์ ์์ต๋๋ค. ์ปค๋ฎค๋ํฐ์์ ๊ฐ์ฅ ์ธ๊ธฐ ์๋ ๊ณํ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๋๊ตฐ๊ฐ๊ฐ ์คํ์ ํผ์นฉ๋๋ค. EFK (Elasticsearch, Fluentd, Kibana);
- ๋๊ตฐ๊ฐ ์ต๊ทผ์ ์ถ์๋ ๊ฒ์ ์ํํด ๋ณด๊ณ ์์ด์
๋กํค ๋๋ ์ฌ์ฉ๋ก๊น ์ฐ์ฐ์ ; - ์ฐ๋ฆฌ (์๋ง๋ ์ฐ๋ฆฌ๋ฟ๋ง์ด ์๋์ง๋?..) ๋๋ ๋ด ์์ ์ ๋ฐ์ ์ ๋์ฒด๋ก ๋ง์กฑํ๋ค.
ํต๋๋ฌด ์ง ...
์ผ๋ฐ์ ์ผ๋ก K8s ํด๋ฌ์คํฐ์์๋ ๋ค์ ๋ฒ๋ค์ ์ฌ์ฉํฉ๋๋ค(์์ฒด ํธ์คํ ์๋ฃจ์ ์ฉ).
๊ทธ๋ฌ๋ ์ค์น ๋ฐ ๊ตฌ์ฑ์ ๋ํ ์ง์นจ์ ๋ค๋ฃจ์ง ์๊ฒ ์ต๋๋ค. ๋์ , ์ผ๋ฐ์ ์ธ ๋ก๊ทธ ์ํฉ์ ๋ํ ๋จ์ ๊ณผ ๋ณด๋ค ํฌ๊ด์ ์ธ ๊ฒฐ๋ก ์ ์ค์ ์ ๋ ๊ฒ์ ๋๋ค.
K8s์์ ๋ก๊ทธ ์ฐ์ต
"์ผ์๋ก๊ทธ" ์ฌ๋ฌ๋ถ์ ๋ช ๋ช ๊ณ์๋์..
์๋นํ ํฐ ์ธํ๋ผ์์ ๋ก๊ทธ๋ฅผ ์ค์ ์ง์ค์์ผ๋ก ์์งํ๋ ค๋ฉด ์๋นํ ๋ฆฌ์์ค๊ฐ ํ์ํ๋ฉฐ, ์ด๋ ๋ก๊ทธ ์์ง, ์ ์ฅ ๋ฐ ์ฒ๋ฆฌ์ ์ฌ์ฉ๋ฉ๋๋ค. ๋ค์ํ ํ๋ก์ ํธ๋ฅผ ์ด์ํ๋ ๋์ ์ฐ๋ฆฌ๋ ๋ค์ํ ์๊ตฌ ์ฌํญ๊ณผ ์ด๋ก ์ธํด ๋ฐ์ํ๋ ์ด์ ๋ฌธ์ ์ ์ง๋ฉดํ์ต๋๋ค.
ClickHouse๋ฅผ ์ฌ์ฉํด ๋ณด์ธ์
์ด๋น 5000์ค ์ด์์ ๋ก๊ทธ๋ฅผ ๋งค์ฐ ์ ๊ทน์ ์ผ๋ก ์์ฑํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์๋ ํ๋ก์ ํธ์ ์ค์ ์ง์ค์ ์ ์ฅ์๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ๊ทธ์ ๋ก๊ทธ ์์ ์ ์์ํ๊ณ ์ด๋ฅผ ClickHouse์ ์ถ๊ฐํด ๋ณด๊ฒ ์ต๋๋ค.
์ต๋ ์ค์๊ฐ์ด ์๊ตฌ๋์๋ง์ ClickHouse๊ฐ ์๋ 4์ฝ์ด ์๋ฒ๋ ์ด๋ฏธ ๋์คํฌ ํ์ ์์คํ ์ ๊ณผ๋ถํ๊ฐ ๊ฑธ๋ฆด ๊ฒ์ ๋๋ค.
์ด๋ฌํ ์ ํ์ ๋ก๋ฉ์ ClickHouse์์ ๊ฐ๋ฅํ ํ ๋นจ๋ฆฌ ์์ฑํ๋ ค๊ณ ํ๊ธฐ ๋๋ฌธ์
๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ฆ๊ฐ๋ ๋์คํฌ ๋ก๋๋ก ์ด์ ๋ฐ์ํ๋ฉฐ, ์ด๋ก ์ธํด ๋ค์๊ณผ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
DB::Exception: Too many parts (300). Merges are processing significantly slower than inserts
๊ทธ๊ฑด ์ฌ์ค์
๋๋ค
์ด๋ฌํ ๋์์ ๋ฐฉ์งํ๋ ค๋ฉด
์ฃผ์: ClickHouse๋ฅผ ์ฌ์ฉํ ์๋ฃจ์
์ ๋ ๋ค๋ฅธ ๋ฌธ์ ์ธก๋ฉด์ ์ฐ๋ฆฌ ์ฌ๋ก(๋ก๊ทธํ์ฐ์ค)์ ํํฐ์
๋์ด ์ฐ๊ฒฐ๋ ์ธ๋ถ ํ
์ด๋ธ์ ํตํด ๊ตฌํ๋๋ค๋ ์ฌ์ค๊ณผ ๊ด๋ จ์ด ์์์ต๋๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก ClickHouse์์ ์ค์๊ฐ์ผ๋ก ๋ก๊ทธ๋ฅผ ์์งํ ๋งํผ ๋ชจ๋ ํ๋ก์ ํธ์ ์ถฉ๋ถํ ๋ฆฌ์์ค๊ฐ ์๋ ๊ฒ์ ์๋๋ผ๋ ๊ฒ์ด ๋ถ๋ช ํด์ก์ต๋๋ค(๋ณด๋ค ์ ํํ๊ฒ๋ ๋ฐฐํฌ๊ฐ ์ ์ ํ์ง ์์ต๋๋ค). ๋ํ ๋ค์์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ์ถ ์๊ธฐ, ๋์ค์ ๋ค์ ์ค๋ช ํ๊ฒ ์ต๋๋ค. ์์์ ์ค๋ช ํ ์ฌ๋ก๋ ์ค์ ์ฌ๋ก์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ ๋น์ ์ฐ๋ฆฌ๋ ๊ณ ๊ฐ์๊ฒ ์ ํฉํ๊ณ ์ต์ํ์ ์ง์ฐ์ผ๋ก ๋ก๊ทธ๋ฅผ ์์งํ ์ ์๋ ์ ๋ขฐํ ์ ์๊ณ ์์ ์ ์ธ ์๋ฃจ์ ์ ์ ๊ณตํ ์ ์์์ต๋๋ค...
์๋ผ์คํฑ์์น๋ ์ด๋ป์ต๋๊น?
Elasticsearch๋ ๊ณผ๋ํ ์์ ๋ถํ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ฒ์ผ๋ก ์๋ ค์ ธ ์์ต๋๋ค. ๋์ผํ ํ๋ก์ ํธ์์ ์๋ํด ๋ณด๊ฒ ์ต๋๋ค. ์ด์ ๋ก๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
Elasticsearch๋ ๋ฐ์ดํฐ ์คํธ๋ฆผ์ ์ํํ ์ ์์์ง๋ง, ๊ทธ๋ฌํ ๋ณผ๋ฅจ์ ๊ธฐ๋กํ๋ฉด CPU๋ฅผ ํฌ๊ฒ ํ์ฉํ๊ฒ ๋ฉ๋๋ค. ์ด๋ ํด๋ฌ์คํฐ๋ฅผ ๊ตฌ์ฑํ์ฌ ๊ฒฐ์ ๋ฉ๋๋ค. ๊ธฐ์ ์ ์ผ๋ก๋ ๋ฌธ์ ๊ฐ ๋์ง ์์ง๋ง ๋ก๊ทธ ์์ง ์์คํ
์ ์๋ํ๊ธฐ ์ํด ์ฐ๋ฆฌ๋ ์ด๋ฏธ ์ฝ 8๊ฐ์ ์ฝ์ด๋ฅผ ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ ์์คํ
์ ๋ก๋์จ์ด ๋์ ์ถ๊ฐ ๊ตฌ์ฑ ์์๊ฐ ์๋ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค...
๊ฒฐ๋ก : ์ด ์ต์ ์ ์ ๋นํ๋ ์ ์์ง๋ง ํ๋ก์ ํธ ๊ท๋ชจ๊ฐ ํฌ๊ณ ํด๋น ๊ด๋ฆฌ๊ฐ ์ค์ ๋ก๊น ์์คํ ์ ์๋นํ ๋ฆฌ์์ค๋ฅผ ์๋นํ ์ค๋น๊ฐ ๋ ๊ฒฝ์ฐ์๋ง ๊ฐ๋ฅํฉ๋๋ค.
๊ทธ๋ฌ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์์ฐ์ค๋ฌ์ด ์ง๋ฌธ์ด ์๊น๋๋ค.
์ค์ ๋ก ์ด๋ค ๋ก๊ทธ๊ฐ ํ์ํฉ๋๊น?
์ ๊ทผ ๋ฐฉ์ ์์ฒด๋ฅผ ๋ณ๊ฒฝํด ๋ณด๊ฒ ์ต๋๋ค. ๋ก๊ทธ๋ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ฉด์๋ ๋์์ ๋ค๋ฃจ์ด์๋ ์ ๋ฉ๋๋ค. ๋ชจ๋ ์์คํ ์ ์ด๋ฒคํธ.
์ฐ๋ฆฌ๊ฐ ์ฑ๊ณต์ ์ธ ์จ๋ผ์ธ ์์ ์ ์ด์ํ๊ณ ์๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. ์ด๋ค ๋ก๊ทธ๊ฐ ์ค์ํฉ๋๊น? ์๋ฅผ ๋ค์ด ์ง๋ถ ๊ฒ์ดํธ์จ์ด ๋ฑ์์ ๊ฐ๋ฅํ ํ ๋ง์ ์ ๋ณด๋ฅผ ์์งํ๋ ๊ฒ์ ์ข์ ์๊ฐ์ ๋๋ค. ๊ทธ๋ฌ๋ ์ ํ ์นดํ๋ก๊ทธ์ ์๋ ์ด๋ฏธ์ง ๋ถํ ์๋น์ค์ ๋ชจ๋ ๋ก๊ทธ๊ฐ ์ฐ๋ฆฌ์๊ฒ ์ค์ํ ๊ฒ์ ์๋๋๋ค. ์ค๋ฅ์ ๊ณ ๊ธ ๋ชจ๋ํฐ๋ง๋ง ์์ผ๋ฉด ์ถฉ๋ถํฉ๋๋ค(์: ์ด ๊ตฌ์ฑ ์์๊ฐ ์์ฑํ๋ 500๊ฐ ์ค๋ฅ์ ๋น์จ).
๊ทธ๋์ ์ฐ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒฐ๋ก ์ ์ด๋ฅด๋ ์ต๋๋ค. ์ค์ ์ง์ค์ ๋ก๊น ์ด ํญ์ ์ ๋นํ๋๋ ๊ฒ์ ์๋๋๋ค. ํด๋ผ์ด์ธํธ๋ ๋ชจ๋ ๋ก๊ทธ๋ฅผ ํ๊ณณ์ ์์งํ๋ ค๊ณ ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ํ์ง๋ง ์ค์ ๋ก๋ ์ ์ฒด ๋ก๊ทธ์์ ๋น์ฆ๋์ค์ ์ค์ํ ๋ฉ์์ง ์ค ์กฐ๊ฑด๋ถ 5%๋ง ํ์ํฉ๋๋ค.
- ๋๋ก๋ ์ปจํ ์ด๋ ๋ก๊ทธ์ ํฌ๊ธฐ์ ์ค๋ฅ ์์ง๊ธฐ(์: Sentry)๋ง ๊ตฌ์ฑํ๋ ๊ฒ์ผ๋ก ์ถฉ๋ถํ ๋๋ ์์ต๋๋ค.
- ์ค๋ฅ ์๋ฆผ๊ณผ ๋๊ท๋ชจ ๋ก์ปฌ ๋ก๊ทธ ์์ฒด๋ง์ผ๋ก๋ ์ฌ๊ฑด์ ์กฐ์ฌํ๊ธฐ์ ์ถฉ๋ถํ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
- ์ฐ๋ฆฌ๋ ๊ธฐ๋ฅ ํ ์คํธ์ ์ค๋ฅ ์์ง ์์คํ ๋ง์ ๋ค๋ฃจ๋ ํ๋ก์ ํธ๋ฅผ ์งํํ์ต๋๋ค. ๊ฐ๋ฐ์๋ ๋ก๊ทธ๊ฐ ํ์ํ์ง ์์์ต๋๋ค. ์ค๋ฅ ์ถ์ ์์ ๋ชจ๋ ๊ฒ์ ๋ณด์์ต๋๋ค.
์ธ์์ ์ผ๋ฌ์คํธ๋ ์ด์
๋ ๋ค๋ฅธ ์ด์ผ๊ธฐ๊ฐ ์ข์ ์๊ฐ ๋ ์ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ Kubernetes๊ฐ ๋์ ๋๊ธฐ ์ค๋ ์ ์ ๊ฐ๋ฐ๋ ์์ฉ ์๋ฃจ์ ์ ์ด๋ฏธ ์ฌ์ฉํ๊ณ ์๋ ํด๋ผ์ด์ธํธ ์ค ํ ๊ณณ์ ๋ณด์ํ์ผ๋ก๋ถํฐ ์์ฒญ์ ๋ฐ์์ต๋๋ค.
๊ธฐ์
์ ๋ฌธ์ ๊ฐ์ง ์ผ์์ธ QRadar์ ์ค์ ์ง์ค์ ๋ก๊ทธ ์์ง ์์คํ
์ "์น๊ตฌ ๋ง๋ค๊ธฐ"๊ฐ ํ์ํ์ต๋๋ค. ์ด ์์คํ
์ syslog ํ๋กํ ์ฝ์ ํตํด ๋ก๊ทธ๋ฅผ ์์ ํ๊ณ FTP์์ ๊ฒ์ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ Fluentd์ฉ Remote_syslog ํ๋ฌ๊ทธ์ธ๊ณผ ์ฆ์ ํตํฉํ ์๋ ์์์ต๋๋ค. (๊ฒฐ๊ณผ์ ์ผ๋ก๋
๊ฒฐ๊ณผ์ ์ผ๋ก ๋น์ฆ๋์ค์ ์ค์ํ ๋ก๊ทธ์ ์ผ๋ถ๊ฐ FTP QRadar์ ์
๋ก๋๋์๊ณ , ๋ค๋ฅธ ๋ถ๋ถ์ ์๊ฒฉ syslog๋ฅผ ํตํด ๋
ธ๋์์ ์ง์ ๋ฆฌ๋๋ ์
๋์์ต๋๋ค. ์ด๋ฅผ ์ํด ์ฐ๋ฆฌ๋ ์ฌ์ง์ด ์ผ์ต๋๋ค
๋ ๋ค๋ฅธ ์๋ ๋ฌด์์ ํ์ง ๋ง์์ผ ํ๋์ง๋ฅผ ์ ๋ณด์ฌ์ค๋๋ค. ์ฒ๋ฆฌ๋ฅผ ์ํ ๊ณ ๊ฐ ์ค ํ ๋ช ๊ฐ ์ฌ์ฉ์๋ก๋ถํฐ ์ค๋ ์ด๋ฒคํธ๋ ์ฌ๋ฌ ์ค๋ก ๋ง๋ค์ด์ง๋๋ค. ๊ตฌ์กฐํ๋์ง ์์ ์ถ๋ ฅ ๋ก๊ทธ์ ์ ๋ณด. ์ง์ํ ์ ์๋ฏ์ด ์ด๋ฌํ ๋ก๊ทธ๋ ์ฝ๊ณ ์ ์ฅํ๋ ๋ฐ ๋งค์ฐ ๋ถํธํ์ต๋๋ค.
๋ก๊ทธ ๊ธฐ์ค
์ด๋ฌํ ์๋ ๋ก๊ทธ ์์ง ์์คํ ์ ์ ํํ๋ ๊ฒ ์ธ์๋ ๋ค์ ์ฌํญ์ด ํ์ํ๋ค๋ ๊ฒฐ๋ก ์ผ๋ก โโ์ด์ด์ง๋๋ค. ๋ํ ๋ก๊ทธ ์์ฒด๋ฅผ ๋์์ธํฉ๋๋ค.! ์ฌ๊ธฐ์ ์๊ตฌ ์ฌํญ์ ๋ฌด์์ ๋๊น?
- ๋ก๊ทธ๋ ๊ธฐ๊ณ๊ฐ ์ฝ์ ์ ์๋ ํ์(์: JSON)์ด์ด์ผ ํฉ๋๋ค.
- ๋ก๊ทธ๋ ์์ถ๋์ด์ผ ํ๋ฉฐ ๊ฐ๋ฅํ ๋ฌธ์ ๋ฅผ ๋๋ฒ๊น ํ๊ธฐ ์ํด ๋ก๊น ์์ค์ ๋ณ๊ฒฝํ ์ ์๋ ๊ธฐ๋ฅ์ ๊ฐ์ถ๊ณ ์์ด์ผ ํฉ๋๋ค. ๋์์ ํ๋ก๋์ ํ๊ฒฝ์์๋ ๋ค์๊ณผ ๊ฐ์ ๋ก๊น ์์ค์ผ๋ก ์์คํ ์ ์คํํด์ผ ํฉ๋๋ค. ๊ฒฝ๊ณ ๋๋ ์ค๋ฅ.
- ๋ก๊ทธ๋ ์ ๊ทํ๋์ด์ผ ํฉ๋๋ค. ์ฆ, ๋ก๊ทธ ๊ฐ์ฒด์์ ๋ชจ๋ ์ค์ ๋์ผํ ํ๋ ์ ํ์ ๊ฐ์ ธ์ผ ํฉ๋๋ค.
๊ตฌ์กฐํ๋์ง ์์ ๋ก๊ทธ๋ ๋ก๊ทธ๋ฅผ ์คํ ๋ฆฌ์ง์ ๋ก๋ํ๋ ๋ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ณ ์ฒ๋ฆฌ๊ฐ ์์ ํ ์ค์ง๋ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋ค์์ fluentd ๋ก๊ทธ์์ ๋ง์ ์ฌ๋๋ค์ด ํ์คํ ์ ํ ์ค๋ฅ 400์ ์์ ๋๋ค.
2019-10-29 13:10:43 +0000 [warn]: dump an error event: error_class=Fluent::Plugin::ElasticsearchErrorHandler::ElasticsearchError error="400 - Rejected by Elasticsearch"
์ด ์ค๋ฅ๋ ์ ํ์ด ๋ถ์์ ํ ํ๋๋ฅผ ๋ฏธ๋ฆฌ ๋ง๋ค์ด์ง ๋งคํ์ ์ฌ์ฉํ์ฌ ์ธ๋ฑ์ค๋ก ๋ณด๋ด๊ณ ์์์ ์๋ฏธํฉ๋๋ค. ๊ฐ์ฅ ๊ฐ๋จํ ์๋ ๋ณ์๊ฐ ์๋ nginx ๋ก๊ทธ์ ํ๋์
๋๋ค. $upstream_status
. ์ซ์๋ ๋ฌธ์์ด์ ํฌํจํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด:
{ "ip": "1.2.3.4", "http_user": "-", "request_id": "17ee8a579e833b5ab9843a0aca10b941", "time": "29/Oct/2019:16:18:57 +0300", "method": "GET", "uri": "/staffs/265.png", "protocol": "HTTP/1.1", "status": "200", "body_size": "906", "referrer": "https://example.com/staff", "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36", "request_time": "0.001", "cache_status": "-", "upstream_response_time": "0.001, 0.007", "upstream_addr": "127.0.0.1:9000", "upstream_status": "200", "upstream_response_length": "906", "location": "staff"}
{ "ip": "1.2.3.4", "http_user": "-", "request_id": "47fe42807f2a7d8d5467511d7d553a1b", "time": "29/Oct/2019:16:18:57 +0300", "method": "GET", "uri": "/staff", "protocol": "HTTP/1.1", "status": "200", "body_size": "2984", "referrer": "-", "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36", "request_time": "0.010", "cache_status": "-", "upstream_response_time": "0.001, 0.007", "upstream_addr": "10.100.0.10:9000, 10.100.0.11:9000", "upstream_status": "404, 200", "upstream_response_length": "0, 2984", "location": "staff"}
๋ก๊ทธ์๋ ์๋ฒ 10.100.0.10์ด 404 ์ค๋ฅ๋ก ์๋ตํ์ผ๋ฉฐ ์์ฒญ์ด ๋ค๋ฅธ ์ฝํ ์ธ ์ ์ฅ์๋ก ์ ์ก๋์์์ ๋ณด์ฌ์ค๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ๋ก๊ทธ์ ๊ฐ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
"upstream_response_time": "0.001, 0.007"
์ด๋ฌํ ์ํฉ์ ๋๋ฌด ํํด์ ๋ณ๋์ ์กฐ์น๊ฐ ํ์ํฉ๋๋ค.
์ ๋ขฐ์ฑ์ ์ด๋ป์ต๋๊น?
์์ธ ์์ด ๋ชจ๋ ๋ก๊ทธ๊ฐ ์ค์ํ ๋๊ฐ ์๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ก ์ธํด ์์์ ์ ์/๋ ผ์๋ K8์ ๋ํ ์ผ๋ฐ์ ์ธ ๋ก๊ทธ ์์ง ๋ฐฉ์์๋ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด fluentd๋ ์๋ช ์ด ์งง์ ์ปจํ ์ด๋์์ ๋ก๊ทธ๋ฅผ ์์งํ ์ ์์ต๋๋ค. ์ฐ๋ฆฌ ํ๋ก์ ํธ ์ค ํ๋์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ง์ด๊ทธ๋ ์ด์ ์ปจํ ์ด๋๋ ํด๋น ์ฃผ์์ ๋ฐ๋ผ 4์ด ๋ฏธ๋ง ๋์ ์ ์ง๋ ํ ์ญ์ ๋์์ต๋๋ค.
"helm.sh/hook-delete-policy": hook-succeeded
์ด๋ก ์ธํด ๋ง์ด๊ทธ๋ ์ด์
์คํ ๋ก๊ทธ๊ฐ ์คํ ๋ฆฌ์ง์ ํฌํจ๋์ง ์์์ต๋๋ค. ์ด ๊ฒฝ์ฐ์๋ ์ ์น๊ฐ ๋์์ด ๋ ์ ์์ต๋๋ค. before-hook-creation
.
๋ ๋ค๋ฅธ ์๋ Docker ๋ก๊ทธ ํ์ ์ ๋๋ค. ๋ก๊ทธ์ ์ ๊ทน์ ์ผ๋ก ์ฐ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. ์ ์์ ์ธ ์กฐ๊ฑด์์๋ ๋ชจ๋ ๋ก๊ทธ๋ฅผ ์ฒ๋ฆฌํ ์ ์์ง๋ง ์์์ ์ค๋ช ํ ์๋ชป๋ ํ์๊ณผ ๊ฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ์ฆ์ ์ฒ๋ฆฌ๊ฐ ์ค์ง๋๊ณ Docker๊ฐ ํ์ผ์ ํ์ ํฉ๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ๋น์ฆ๋์ค์ ์ค์ํ ๋ก๊ทธ๊ฐ ์์ค๋ ์ ์์ต๋๋ค.
๊ทธ ์ด์ ๋ ๋ก๊ทธ ์คํธ๋ฆผ์ ๋ถ๋ฆฌํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค, ๊ฐ์ฅ ๊ฐ์น ์๋ ์ ๋ณด๋ฅผ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ง์ ์ ์กํ์ฌ ์์ ์ ๋ณด์ฅํฉ๋๋ค. ๋ํ ์ผ๋ถ๋ฅผ ๋ง๋๋ ๊ฒ์ ๋ถํ์ํ ์ผ์ด ์๋๋๋ค. ๋ก๊ทธ์ "๋์ ๊ธฐ", ์ค์ํ ๋ฉ์์ง๋ฅผ ์ ์ฅํ๋ ๋์ ์ ์ ๋์ ์ ์ฅ ๊ณต๊ฐ์ ์ฌ์ฉํ ์ ์๋ ๊ฒฝ์ฐ์๋ ์ด์๋จ์ ์ ์์ต๋๋ค.
๋ง์ง๋ง์ผ๋ก, ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ์์ง ๋ง์์ผ ํฉ๋๋ค. ๋ชจ๋ ํ์ ์์คํ
์ ์ ์ ํ๊ฒ ๋ชจ๋ํฐ๋งํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.. ๊ทธ๋ ์ง ์์ผ๋ฉด fluentd๊ฐ ์๋ฑํ ์ํ์ ๋น ์ง๊ธฐ ์ฝ์ต๋๋ค. CrashLoopBackOff
์๋ฌด ๊ฒ๋ ๋ณด๋ด์ง ์์ผ๋ฉฐ ์ด๋ก ์ธํด ์ค์ํ ์ ๋ณด๊ฐ ์์ค๋ ์ ์์ต๋๋ค.
์กฐ์ฌ ๊ฒฐ๊ณผ
์ด ๊ธฐ์ฌ์์๋ Datadog๊ณผ ๊ฐ์ SaaS ์๋ฃจ์ ์ ์ดํด๋ณด์ง ์์ต๋๋ค. ์ฌ๊ธฐ์ ์ค๋ช ๋ ๋ง์ ๋ฌธ์ ๋ ๋ก๊ทธ ์์ง์ ์ ๋ฌธ์ผ๋ก ํ๋ ์์ ํ์ฌ์ ์ํด ์ด๋ฏธ ์ด๋ค ๋ฐฉ์์ผ๋ก๋ ํด๊ฒฐ๋์์ง๋ง ๋ค์ํ ์ด์ ๋ก ๋ชจ๋ ์ฌ๋์ด SaaS๋ฅผ ์ฌ์ฉํ ์ ์๋ ๊ฒ์ ์๋๋๋ค. (์ฃผ์ํ ๊ฒ์ ๋น์ฉ๊ณผ 152-FZ ์ค์์ ๋๋ค).
์ค์ ์ง์ค์ ๋ก๊ทธ ์์ง์ ์ฒ์์๋ ๊ฐ๋จํ ์์ ์ฒ๋ผ ๋ณด์ด์ง๋ง ์ ํ ๊ทธ๋ ์ง ์์ต๋๋ค. ๋ค์ ์ฌํญ์ ๊ธฐ์ตํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
- ์ค์ํ ๊ตฌ์ฑ์์๋ง ์์ธํ ๊ธฐ๋กํ๋ฉด ๋๋ฉฐ, ๋ค๋ฅธ ์์คํ ์ ๋ํด์๋ ๋ชจ๋ํฐ๋ง ๋ฐ ์ค๋ฅ ์์ง์ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
- ๋ถํ์ํ ๋ถํ๋ฅผ ์ถ๊ฐํ์ง ์๋๋ก ํ๋ก๋์ ๋ก๊ทธ๋ฅผ ์ต์ํ์ผ๋ก ์ ์งํด์ผ ํฉ๋๋ค.
- ๋ก๊ทธ๋ ๊ธฐ๊ณ๊ฐ ์ฝ์ ์ ์๊ณ ์ ๊ทํ๋์ด์ผ ํ๋ฉฐ ์๊ฒฉํ ํ์์ ๊ฐ์ ธ์ผ ํฉ๋๋ค.
- ์ ๋ง ์ค์ํ ๋ก๊ทธ๋ ๊ธฐ๋ณธ ๋ก๊ทธ์ ๋ถ๋ฆฌ๋ ๋ณ๋์ ์คํธ๋ฆผ์ผ๋ก ์ ์ก๋์ด์ผ ํฉ๋๋ค.
- ๋์ ๋ก๋๊ฐ ๊ธ์ฆํ๋ ๊ฒ์ ๋ฐฉ์งํ๊ณ ์คํ ๋ฆฌ์ง์ ๋ก๋๋ฅผ ๋ณด๋ค ๊ท ์ผํ๊ฒ ๋ง๋ค ์ ์๋ ๋ก๊ทธ ๋์ฐ๊ธฐ๋ฅผ ๊ณ ๋ คํด ๋ณผ ๊ฐ์น๊ฐ ์์ต๋๋ค.
์ด๋ฌํ ๊ฐ๋จํ ๊ท์น์ ๋ชจ๋ ๊ณณ์ ์ ์ฉํ๋ฉด ์์ ์ค๋ช
๋ ํ๋ก๊ฐ ์ค์ํ ๊ตฌ์ฑ ์์(๋ฐฐํฐ๋ฆฌ)๊ฐ ๋๋ฝ๋ ๊ฒฝ์ฐ์๋ ์๋ํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์์น์ ์ค์ํ์ง ์์ผ๋ฉด ์์
์ผ๋ก ์ธํด ๊ทํ์ ์ธํ๋ผ๊ฐ ์์คํ
์ ๋ถํ๊ฐ ๋์(๋์์ ๋นํจ์จ์ ์ธ) ๋ค๋ฅธ ๊ตฌ์ฑ ์์๋ก ์ฝ๊ฒ ์ด๋ํ๊ฒ ๋ฉ๋๋ค.
PS
๋ธ๋ก๊ทธ์์๋ ์ฝ์ด๋ณด์ธ์.
- ยซ
Loghouse ์๊ฐ - Kubernetes์์ ๋ก๊ทธ ์์ ์ ์ํ ์คํ ์์ค ์์คํ "; - ยซ
KubeCon'19์ Kubernetes ์ํ๊ณ ๋ฆด๋ฆฌ์ค: JFrog Container Registry, IBM์ Kui, Loki 1.0.0โฆ "; - ยซ
๋ชจ๋ํฐ๋ง ๋ฐ Kubernetes(๋ฆฌ๋ทฐ ๋ฐ ๋์์ ๋ณด๊ณ ) ".
์ถ์ฒ : habr.com