ํ์ฌ ์ฐ๋ฆฌ ํ๋ก์ ํธ์๋ ๋ชจ๋๋ฆฌ์ ์ฝ๋ ์ธ์๋ ์์ญ ๊ฐ์ ๋ง์ดํฌ๋ก์๋น์ค๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. ๊ฐ๊ฐ์ ๋ชจ๋ํฐ๋งํด์ผ ํฉ๋๋ค. DevOps ์์ง๋์ด๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฌํ ๊ท๋ชจ๋ก ์ด๋ฅผ ์ํํ๋ ๊ฒ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ๊ฐ๋ฐ์๋ฅผ ์ํ ์๋น์ค๋ก ์๋ํ๋ ๋ชจ๋ํฐ๋ง ์์คํ ์ ๊ฐ๋ฐํ์ต๋๋ค. ๋ชจ๋ํฐ๋ง ์์คํ ์ ์ธก์ ํญ๋ชฉ์ ๋ ๋ฆฝ์ ์ผ๋ก ์์ฑํ๊ณ , ์ด๋ฅผ ์ฌ์ฉํ๊ณ , ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋์๋ณด๋๋ฅผ ๊ตฌ์ถํ๊ณ , ์๊ณ๊ฐ์ ๋๋ฌํ๋ฉด ํธ๋ฆฌ๊ฑฐ๋๋ ๊ฒฝ๊ณ ๋ฅผ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค. DevOps ์์ง๋์ด์ ๊ฒฝ์ฐ ์ธํ๋ผ์ ๋ฌธ์๋ง ์ ๊ณต๋ฉ๋๋ค.
์ด ํฌ์คํ
์ ์ ๊ฐ ์ ํฌ์ ๋๋ ๋ํ๋ฅผ ๋
น์ทจํ ๊ฒ์
๋๋ค.
๊ณผ๊ฑฐ : ๊ณํ๊ณผ ๊ณํ
ํ์ฌ์ ๋ชจ๋ํฐ๋ง ์์คํ ์ ์ด๋ป๊ฒ ํ์ํ๊ฒ ๋์๋์? ์ด ์ง๋ฌธ์ ๋ตํ๋ ค๋ฉด 2015๋ ์ผ๋ก ๋์๊ฐ์ผ ํ๋ค. ๋น์์ ๋ชจ์ต์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋ชจ๋ํฐ๋ง์ ๋ด๋นํ๋ ๋
ธ๋๋ ์ฝ 24๊ฐ์์ต๋๋ค. ์ด๋ป๊ฒ๋ ๋ฌด์ธ๊ฐ๋ฅผ ๋ชจ๋ํฐ๋งํ๊ณ , ๋ฉ์์ง๋ฅผ ๋ณด๋ด๊ณ , ๊ธฐ๋ฅ์ ์ํํ๋ ๋ค์ํ ํฌ๋ผ์ด, ์คํฌ๋ฆฝํธ, ๋ฐ๋ชฌ์ ์ ์ฒด ํฉ์ด ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ๋ ๋์๊ฐ์๋ก ๊ทธ๋ฌํ ์์คํ
์ ์คํ ๊ฐ๋ฅ์ฑ์ด ๋ฎ์์ง ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ต๋๋ค. ๊ฐ๋ฐํ ํ์๊ฐ ์์ต๋๋ค. ๋๋ฌด ๋ฒ๊ฑฐ๋กญ๊ธฐ ๋๋ฌธ์
๋๋ค.
์ฐ๋ฆฌ๋ ์ ์งํ๊ณ ๊ฐ๋ฐํ ๋ชจ๋ํฐ๋ง ์์์ ํ๊ธฐํ ๋ชจ๋ํฐ๋ง ์์๋ฅผ ์ ํํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. 19๊ฐ๊ฐ ์์๋๋ฐ, ํ์ฐ๊ณผ ์ ๊ทธ๋ฆฌ๊ฒ์ดํฐ, ๋์๋ณด๋ ์ญํ ์ ํ๋ ๊ทธ๋ผํ๋๋ง ๋จ์์ต๋๋ค. ํ์ง๋ง ์๋ก์ด ์์คํ
์ ์ด๋ค ๋ชจ์ต์ผ๊น์? ์ด์ ๊ฐ์ด:
์ฐ๋ฆฌ๋ ๋ฉํธ๋ฆญ ์ ์ฅ์๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ด๊ฒ์ ๋น ๋ฅธ SSD ๋๋ผ์ด๋ธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ํ์ฐ์ด๋ฉฐ ๋ฉํธ๋ฆญ์ ๋ํ ํน์ ์ง๊ณ์์
๋๋ค. ๋ค์ - ๋์๋ณด๋๋ฅผ ํ์ํ๋ Grafana์ ๊ฒฝ๊ณ ๋ฅผ ์ํ Moira์
๋๋ค. ์ฐ๋ฆฌ๋ ๋ํ ์ด์ ์งํ๋ฅผ ๊ฒ์ํ๋ ์์คํ
์ ๊ฐ๋ฐํ๊ณ ์ถ์์ต๋๋ค.
ํ์ค: ๋ชจ๋ํฐ๋ง 2.0
2015๋ ๊ณํ์ ์ด๋ ์ต๋๋ค. ํ์ง๋ง ์ธํ๋ผ์ ์๋น์ค ์์ฒด๋ฟ ์๋๋ผ ์ด๋ฅผ ์ํ ๋ฌธ์๋ ์ค๋นํด์ผ ํ์ต๋๋ค. ์ฐ๋ฆฌ๋ ๋ชจ๋ํฐ๋ง 2.0์ด๋ผ๊ณ ๋ถ๋ฅด๋ ๊ธฐ์ ํ์ค์ ์ค์ค๋ก ๊ฐ๋ฐํ์ต๋๋ค. ์์คํ ์๊ตฌ์ฌํญ์ ๋ฌด์์ด์๋์?
- ์ง์์ ์ธ ๊ฐ์ฉ์ฑ;
- ๋ฉํธ๋ฆญ ์ ์ฅ ๊ฐ๊ฒฉ = 10์ด;
- ์ธก์ ํญ๋ชฉ ๋ฐ ๋์๋ณด๋์ ๊ตฌ์กฐํ๋ ์ ์ฅ
- SLA > 99,99%
- UDP(!)๋ฅผ ํตํ ์ด๋ฒคํธ ์ธก์ ํญ๋ชฉ ์์ง.
๋ฉํธ๋ฆญ์ ์์ฑํ๋ ํธ๋ํฝ๊ณผ ์ด๋ฒคํธ์ ํ๋ฆ์ด ๋ง๊ธฐ ๋๋ฌธ์ UDP๊ฐ ํ์ํ์ต๋๋ค. ํ๋ฒ์ ๋ค ํ์ฐ์ ์ฐ๋ฉด ์ ์ฅ๊ณต๊ฐ์ด ๋ฌด๋์ง๊ฑฐ๋ ์. ๋ํ ๋ชจ๋ ์งํ์ ๋ํด ์ฒซ ๋ฒ์งธ ์์ค ์ ๋์ฌ๋ฅผ ์ ํํ์ต๋๋ค.
๊ฐ ์ ๋์ฌ์๋ ๋ช ๊ฐ์ง ์์ฑ์ด ์์ต๋๋ค. ์๋ฒ, ๋คํธ์ํฌ, ์ปจํ
์ด๋, ๋ฆฌ์์ค, ์ ํ๋ฆฌ์ผ์ด์
๋ฑ์ ๋ํ ์ธก์ ํญ๋ชฉ์ด ์์ต๋๋ค. ๋ช
ํํ๊ณ ์๊ฒฉํ ์ ํ์ ํํฐ๋ง์ด ๊ตฌํ๋์ด ์ฒซ ๋ฒ์งธ ์์ค ์ธก์ ํญ๋ชฉ์ ํ์ฉํ๊ณ ๋๋จธ์ง๋ ์ญ์ ํฉ๋๋ค. ์ด๊ฒ์ด ์ฐ๋ฆฌ๊ฐ 2015๋
์ ์ด ์์คํ
์ ๊ณํํ ๋ฐฉ๋ฒ์
๋๋ค. ํ์ฌ์๋ ๋ฌด์์ด ์๋์?
ํ์ฌ: ๋ชจ๋ํฐ๋ง ๊ตฌ์ฑ ์์์ ์ํธ ์์ฉ ๋ค์ด์ด๊ทธ๋จ
์ฐ์ , ์ฐ๋ฆฌ๋ ์ ํ๋ฆฌ์ผ์ด์ , ์ฆ PHP ์ฝ๋, ์ ํ๋ฆฌ์ผ์ด์ ๋ฐ ๋ง์ดํฌ๋ก์๋น์ค, ์ฆ ๊ฐ๋ฐ์๊ฐ ์์ฑํ๋ ๋ชจ๋ ๊ฒ์ ๋ชจ๋ํฐ๋งํฉ๋๋ค. ๋ชจ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ UDP๋ฅผ ํตํด Brubeck ์ง๊ณ์(statsd, C๋ก ์ฌ์์ฑ๋จ)์ ๋ฉํธ๋ฆญ์ ๋ณด๋ ๋๋ค. ํฉ์ฑ ํ ์คํธ์์ ๊ฐ์ฅ ๋น ๋ฅธ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ฏธ ์ง๊ณ๋ ์ธก์ ํญ๋ชฉ์ TCP๋ฅผ ํตํด Graphite๋ก ๋ณด๋ ๋๋ค.
ํ์ด๋จธ๋ผ๋ ์ธก์ ํญ๋ชฉ ์ ํ์ด ์์ต๋๋ค. ์ด๊ฒ์ ๋งค์ฐ ํธ๋ฆฌํ ์ผ์ ๋๋ค. ์๋ฅผ ๋ค์ด, ์๋น์ค์ ๋ํ ๊ฐ ์ฌ์ฉ์ ์ฐ๊ฒฐ์ ๋ํด ์๋ต ์๊ฐ์ด ํฌํจ๋ ์งํ๋ฅผ Brubeck์ ๋ณด๋ ๋๋ค. ๋ฐฑ๋ง ๊ฐ์ ์๋ต์ด ๋ค์ด์์ง๋ง ์ง๊ณ์๋ 10๊ฐ์ ์ธก์ ํญ๋ชฉ๋ง ๋ฐํํ์ต๋๋ค. ์จ ์ฌ๋ ์, ์ต๋, ์ต์ ๋ฐ ํ๊ท ์๋ต ์๊ฐ, ์ค์๊ฐ ๋ฐ 4 ๋ฐฑ๋ถ์์๊ฐ ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ๋ฐ์ดํฐ๊ฐ Graphite๋ก ์ ์ก๋๊ณ ์ฐ๋ฆฌ๋ ๋ชจ๋ ๊ฒ์ ์ค์๊ฐ์ผ๋ก ๋ณผ ์ ์์ต๋๋ค.
๋ํ ํ๋์จ์ด, ์ํํธ์จ์ด, ์์คํ ์ธก์ ํญ๋ชฉ ๋ฐ ๊ธฐ์กด Munin ๋ชจ๋ํฐ๋ง ์์คํ ์ ๋ํ ์ธก์ ํญ๋ชฉ ์ง๊ณ ๊ธฐ๋ฅ๋ ์์ต๋๋ค(2015๋ ๊น์ง ์๋ํ์ต๋๋ค). ์ฐ๋ฆฌ๋ C ๋ฐ๋ชฌ CollectD๋ฅผ ํตํด ์ด ๋ชจ๋ ๊ฒ์ ์์งํฉ๋๋ค(์ด๊ฒ์ ๋ค์ํ ํ๋ฌ๊ทธ์ธ์ด ๋ด์ฅ๋์ด ์์ผ๋ฉฐ ์ค์น๋ ํธ์คํธ ์์คํ ์ ๋ชจ๋ ๋ฆฌ์์ค๋ฅผ ํด๋งํ ์ ์์ผ๋ฉฐ ๊ตฌ์ฑ์์ ๋ฐ์ดํฐ๋ฅผ ์ธ ์์น๋ฅผ ์ง์ ํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค). ๊ทธ๊ฒ์ ํตํด Graphite์ ๋ฐ์ดํฐ๋ฅผ ์๋๋ค. ๋ํ Python ํ๋ฌ๊ทธ์ธ๊ณผ ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ง์ํ๋ฏ๋ก ์ฌ์ฉ์ ์ ์ ์๋ฃจ์ ์ ์์ฑํ ์ ์์ต๋๋ค. CollectD๋ ๋ก์ปฌ ๋๋ ์๊ฒฉ ํธ์คํธ(Curl ๊ฐ์ )์์ ์ด ๋ฐ์ดํฐ๋ฅผ ์์งํ์ฌ Graphite๋ก ๋ณด๋ ๋๋ค.
๊ทธ๋ฐ ๋ค์ ์์งํ ๋ชจ๋ ์ธก์ ํญ๋ชฉ์ Carbon-c-relay๋ก ๋ณด๋ ๋๋ค. ์ด๊ฒ์ C๋ก ์์ ๋ Graphite์ Carbon Relay ์๋ฃจ์ ์ ๋๋ค. ์ด๋ ์ง๊ณ์๋ก๋ถํฐ ๋ณด๋ด๋ ๋ชจ๋ ์ธก์ ํญ๋ชฉ์ ์์งํ์ฌ ๋ ธ๋๋ก ๋ผ์ฐํ ํ๋ ๋ผ์ฐํฐ์ ๋๋ค. ๋ํ ๋ผ์ฐํ ๋จ๊ณ์์๋ ๋ฉํธ๋ฆญ์ ์ ํจ์ฑ์ ํ์ธํฉ๋๋ค. ์ฒซ์งธ, ์์ ๋ณด์ฌ๋๋ฆฐ ์ ๋์ฌ ์ฒด๊ณ์ ์ผ์นํด์ผ ํ๋ฉฐ, ๋์งธ, ํ์ฐ์ ์ ํจํด์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๋จ์ด์ง ๊ฒ์ ๋๋ค.
๊ทธ๋ฐ ๋ค์ Carbon-c-relay๋ ์ธก์ ํญ๋ชฉ์ Graphite ํด๋ฌ์คํฐ๋ก ๋ณด๋ ๋๋ค. ์ฐ๋ฆฌ๋ Go๋ก ๋ค์ ์์ฑ๋ Carbon-cache๋ฅผ ๋ฉํธ๋ฆญ์ ์ฃผ์ ์ ์ฅ์๋ก ์ฌ์ฉํฉ๋๋ค. Go-carbon์ ๋ฉํฐ์ค๋ ๋ฉ์ผ๋ก ์ธํด Carbon-cache๋ณด๋ค ์ฑ๋ฅ์ด ํจ์ฌ ๋ฐ์ด๋ฉ๋๋ค. ์์ญ์ ํจํค์ง(ํ์ค, Python์ผ๋ก ์์ฑ)๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ณ ๋์คํฌ์ ์๋๋ค. ์ ์ฅ์์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ธฐ ์ํด Graphite API๋ฅผ ์ฌ์ฉํฉ๋๋ค. ํ์ค Graphite WEB๋ณด๋ค ํจ์ฌ ๋น ๋ฆ ๋๋ค. ๋ค์ ๋ฐ์ดํฐ๋ ์ด๋ป๊ฒ ๋๋์?
๊ทธ๋ค์ ๊ทธ๋ผํ๋๋ก ๊ฐ๋๋ค. ์ฐ๋ฆฌ๋ ํ์ฐ ํด๋ฌ์คํฐ๋ฅผ ๋ฐ์ดํฐ์ ์ฃผ์ ์์ค๋ก ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ Grafana๋ฅผ ์งํ ํ์ ๋ฐ ๋์๋ณด๋ ๊ตฌ์ถ์ ์ํ ์น ์ธํฐํ์ด์ค๋ก ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ๊ฐ ์๋น์ค์ ๋ํด ๊ฐ๋ฐ์๋ ์์ ๋ง์ ๋์๋ณด๋๋ฅผ ๋ง๋ญ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ทธ๋ํ๋ฅผ ์์ฑํ๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์์ฑํ ์ธก์ ํญ๋ชฉ์ ํ์ํฉ๋๋ค. Grafana ์ธ์๋ SLAM๋ ์์ต๋๋ค. ์ด๊ฒ์ ํ์ฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก SLA๋ฅผ ๊ณ์ฐํ๋ Python ์ ๋ง์ ๋๋ค. ์ด๋ฏธ ๋งํ๋ฏ์ด ์ฐ๋ฆฌ์๊ฒ๋ ์์ญ ๊ฐ์ ๋ง์ดํฌ๋ก์๋น์ค๊ฐ ์์ผ๋ฉฐ ๊ฐ ๋ง์ดํฌ๋ก์๋น์ค์๋ ๊ณ ์ ํ ์๊ตฌ ์ฌํญ์ด ์์ต๋๋ค. SLAM์ ์ฌ์ฉํ์ฌ ๋ฌธ์๋ก ์ด๋ํ์ฌ Graphite์ ๋ด์ฉ๊ณผ ๋น๊ตํ๊ณ ์๊ตฌ ์ฌํญ์ด ์๋น์ค ๊ฐ์ฉ์ฑ๊ณผ ์ผ๋ง๋ ์ ์ผ์นํ๋์ง ๋น๊ตํฉ๋๋ค.
๋ ๋์๊ฐ ๋ณด๊ฒ ์ต๋๋ค. ๊ฒฝ๊ณ . ๊ฐ๋ ฅํ ์์คํ ์ธ Moira๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌ์ฑ๋ฉ๋๋ค. ํ๋ ์๋์ ์์ฒด ๊ทธ๋ํ์ดํธ๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋ ๋ฆฝ์ ์ ๋๋ค. Python๊ณผ Go๋ก ์์ฑ๋ SKB "Kontur" ์ง์์ด ๊ฐ๋ฐํ ์์ ์คํ ์์ค์ ๋๋ค. Moira๋ ํ์ฐ์ผ๋ก ๋ค์ด๊ฐ๋ ๊ฒ๊ณผ ๋์ผํ ํ๋ฆ์ ๋ฐ์ต๋๋ค. ์ด๋ค ์ด์ ๋ก ์คํ ๋ฆฌ์ง๊ฐ ์ค๋จ๋๋๋ผ๋ ์๋ฆผ์ ๊ณ์ ์๋ํฉ๋๋ค.
์ฐ๋ฆฌ๋ Kubernetes์ Moira๋ฅผ ๋ฐฐํฌํ๋๋ฐ, Redis ์๋ฒ ํด๋ฌ์คํฐ๋ฅผ ๊ธฐ๋ณธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ์ฌ์ฉํฉ๋๋ค. ๊ทธ ๊ฒฐ๊ณผ๋ ๋ด๊ฒฐํจ์ฑ ์์คํ ์ด์์ต๋๋ค. ๋ฉํธ๋ฆญ ์คํธ๋ฆผ์ ํธ๋ฆฌ๊ฑฐ ๋ชฉ๋ก๊ณผ ๋น๊ตํฉ๋๋ค. ์ธ๊ธ๋ ๋ด์ฉ์ด ์์ผ๋ฉด ๋ฉํธ๋ฆญ์ ์ญ์ ํฉ๋๋ค. ๋ฐ๋ผ์ ๋ถ๋น ๊ธฐ๊ฐ๋ฐ์ดํธ์ ์ธก์ ํญ๋ชฉ์ ์ํํ ์ ์์ต๋๋ค.
๋ํ ๊ธฐ์ ์์คํ ์ ๊ฐ ์ฌ์ฉ์๊ฐ ๊ธฐ์กด(๋๋ ์๋ก ์์ฑ๋) ํธ๋ฆฌ๊ฑฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ค์ค๋ก ์๋ฆผ์ ์์ฑํ ์ ์๋๋ก ๊ธฐ์ LDAP๋ฅผ ์ฐ๊ฒฐํ์ต๋๋ค. Moira์๋ Graphite๊ฐ ํฌํจ๋์ด ์์ผ๋ฏ๋ก ๋ชจ๋ ๊ธฐ๋ฅ์ ์ง์ํฉ๋๋ค. ๋ฐ๋ผ์ ๋จผ์ ํด๋น ์ค์ ๊ฐ์ ธ์ Grafana์ ๋ณต์ฌํฉ๋๋ค. ๋ฐ์ดํฐ๊ฐ ๊ทธ๋ํ์ ์ด๋ป๊ฒ ํ์๋๋์ง ํ์ธํ์ธ์. ๊ทธ๋ฐ ๋ค์ ๋์ผํ ์ค์ ์ ํํ์ฌ Moira์ ๋ณต์ฌํฉ๋๋ค. ํ๊ณ๋ฅผ ๋๊ณ ๋งค๋ฌ๊ณ ์ถ๋ ฅ ์ ๊ฒฝ๊ณ ๋ฅผ ๋ฐ์ต๋๋ค. ์ด ๋ชจ๋ ์์ ์ ์ํํ๋ ค๋ฉด ํน์ ์ง์์ด ํ์ํ์ง ์์ต๋๋ค. Moira๋ SMS, ์ด๋ฉ์ผ, Jira, Slack ๋ฑ์ ํตํด ๊ฒฝ๊ณ ํ ์ ์์ต๋๋ค. ๋ํ ์ฌ์ฉ์ ์ ์ ์คํฌ๋ฆฝํธ ์คํ๋ ์ง์ํฉ๋๋ค. ๊ทธ๋ ์๊ฒ ํธ๋ฆฌ๊ฑฐ๊ฐ ๋ฐ์ํ๊ณ ์ฌ์ฉ์ ์ ์ ์คํฌ๋ฆฝํธ ๋๋ ๋ฐ์ด๋๋ฆฌ๋ฅผ ๊ตฌ๋ ํ๋ฉด ์ด๋ฅผ ์คํํ๊ณ ์ด ๋ฐ์ด๋๋ฆฌ์ ๋ํ JSON์ stdin์ผ๋ก ๋ณด๋ ๋๋ค. ๋ฐ๋ผ์ ํ๋ก๊ทธ๋จ์์๋ ์ด๋ฅผ ๊ตฌ๋ฌธ ๋ถ์ํด์ผ ํฉ๋๋ค. ์ด JSON์ผ๋ก ์ํํ ์์ ์ ๊ทํ์๊ฒ ๋ฌ๋ ค ์์ต๋๋ค. ์ํ๋ค๋ฉด Telegram์ผ๋ก ๋ณด๋ด๊ณ , ์ํ๋ค๋ฉด Jira์์ ์์ ์ ์ด๊ณ ๋ฌด์์ด๋ ํ์ธ์.
์ฐ๋ฆฌ๋ ๋ํ ๊ฒฝ๊ณ ๋ฅผ ์ํด ์์ฒด ๊ฐ๋ฐํ Imagotag๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ฐ๋ฆฌ๋ ์ผ๋ฐ์ ์ผ๋ก ๋งค์ฅ์ ์ ์ ๊ฐ๊ฒฉํ์ ์ฌ์ฉ๋๋ ํจ๋์ ์ฐ๋ฆฌ์ ํ์์ ๋ง๊ฒ ์กฐ์ ํ์ต๋๋ค. Moira์์ ํธ๋ฆฌ๊ฑฐ๋ฅผ ๊ฐ์ ธ์์ต๋๋ค. ์ด๋ ํ์ฌ ์ํ์ ๋ฐ์ ์๊ธฐ๋ฅผ ๋ํ๋ ๋๋ค. ์ผ๋ถ ๊ฐ๋ฐ ๋ด๋น์๋ ์ด ํจ๋์ ์ ํธํ์ฌ Slack ๋ฐ ์ด๋ฉ์ผ ์๋ฆผ์ ํฌ๊ธฐํ์ต๋๋ค.
๊ธ์, ์ฐ๋ฆฌ๋ ์ง๋ณด์ ์ธ ํ์ฌ์ด๊ธฐ ๋๋ฌธ์ ์ด ์์คํ
์์ Kubernetes๋ ๋ชจ๋ํฐ๋งํ์ต๋๋ค. ํด๋ฌ์คํฐ์ ์ค์นํ Heapster๋ฅผ ์ฌ์ฉํ์ฌ ์์คํ
์ ํฌํจ์์ผฐ๊ณ , ๋ฐ์ดํฐ๋ฅผ ์์งํ์ฌ Graphite๋ก ๋ณด๋
๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ๋ค์ด์ด๊ทธ๋จ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋ชจ๋ํฐ๋ง ๊ตฌ์ฑ ์์
๋ค์์ ์ด ์์ ์ ์ฌ์ฉํ ๊ตฌ์ฑ ์์์ ๋ํ ๋งํฌ ๋ชฉ๋ก์ ๋๋ค. ๊ทธ๋ค ๋ชจ๋๋ ์คํ ์์ค์ ๋๋ค.
์๋ฌต:
- ๊ณ ์นด๋ณธ:
github.com/lomik/go-carbon - ์์ญ์:
github.com/graphite-project/whisper - ํ์ฐ API:
github.com/brutasse/graphite-api
์นด๋ณธ-C-๋ฆด๋ ์ด:
๋ธ๋ฃจ๋ฒก:
์์ง๋ ํญ๋ชฉ:
๋ชจ์ด๋ผ :
๊ทธ๋ผํ๋:
ํ์คํฐ:
ํต๊ณ
๋ค์์ ์์คํ ์ด ์ฐ๋ฆฌ์๊ฒ ์ด๋ป๊ฒ ์๋ํ๋์ง์ ๋ํ ๋ช ๊ฐ์ง ์์น์ ๋๋ค.
์ ๊ทธ๋ฆฌ๊ฒ์ดํฐ(๋ธ๋คผ๋ฒก)
์งํ ์: ~300/์ด
์งํ๋ฅผ Graphite๋ก ๋ณด๋ด๋ ๊ฐ๊ฒฉ: 30์ด
์๋ฒ ๋ฆฌ์์ค ์ฌ์ฉ๋: ~ 6% CPU(์์ ํ ์๋ฒ์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์์) ~ 1GB RAM; ~3Mbps LAN
ํ์ฐ(๊ณ ์นด๋ณธ)
์งํ ์: ~ 1/๋ถ
์งํ ์
๋ฐ์ดํธ ๊ฐ๊ฒฉ: 30์ด
์ธก์ ํญ๋ชฉ ์ ์ฅ ๋ฐฉ์: 30์ด 35์ผ, 5๋ถ 90์ผ, 10๋ถ 365์ผ(์ฅ๊ธฐ๊ฐ ๋์ ์๋น์ค์ ์ด๋ค ์ผ์ด ๋ฐ์ํ๋์ง ์ดํดํ ์ ์์)
์๋ฒ ๋ฆฌ์์ค ์ฌ์ฉ๋: ~10% CPU; ~ 20Gb RAM; ~30Mbps LAN
์ ์ฐ์ฑ
Avito๋ ๋ชจ๋ํฐ๋ง ์๋น์ค์ ์ ์ฐ์ฑ์ ๋งค์ฐ ์ค์ํ๊ฒ ์๊ฐํฉ๋๋ค. ๊ทธ๋ ์ค์ ๋ก ์ ์ด๋ ๊ฒ ๋์๋๊ฐ? ์ฒซ์งธ, ํด๋น ๊ตฌ์ฑ ์์๋ ๊ตฌ์ฑ ์์ ์์ฒด์ ํด๋น ๋ฒ์ ๋ชจ๋ ์ํธ ๊ตํ์ด ๊ฐ๋ฅํฉ๋๋ค. ๋์งธ, ์ง์ ๊ฐ๋ฅ์ฑ์ ๋๋ค. ์ ์ฒด ํ๋ก์ ํธ๊ฐ ์คํ ์์ค์ด๋ฏ๋ก ์ฝ๋๋ฅผ ์ง์ ํธ์งํ๊ณ , ๋ณ๊ฒฝํ๊ณ , ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ ๊ธฐ๋ฅ์ ๊ตฌํํ ์ ์์ต๋๋ค. ์ฃผ๋ก Go ๋ฐ Python๊ณผ ๊ฐ์ ๋งค์ฐ ์ผ๋ฐ์ ์ธ ์คํ์ด ์ฌ์ฉ๋๋ฏ๋ก ๋งค์ฐ ๊ฐ๋จํ๊ฒ ์ํ๋ฉ๋๋ค.
๋ค์์ ์ค์ ๋ฌธ์ ์ ์์ ๋๋ค. Graphite์ ๋ฉํธ๋ฆญ์ ํ์ผ์ ๋๋ค. ์ด๋ฆ์ด ์์ต๋๋ค. ํ์ผ ์ด๋ฆ = ์ธก์ ํญ๋ชฉ ์ด๋ฆ. ๊ทธ๋ฆฌ๊ณ ๊ฑฐ๊ธฐ๋ก ๊ฐ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. Linux์ ํ์ผ ์ด๋ฆ์ 255์๋ก ์ ํ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ (โ๋ด๋ถ ๊ณ ๊ฐโ์ผ๋ก์) ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ถ์ ์ง์์ด ์์ต๋๋ค. ๊ทธ๋ค์ ์ฐ๋ฆฌ์๊ฒ ์ด๋ ๊ฒ ๋งํฉ๋๋ค. โ์ฐ๋ฆฌ๋ SQL ์ฟผ๋ฆฌ๋ฅผ ๋ชจ๋ํฐ๋งํ๊ณ ์ถ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ 255์๊ฐ ์๋๋ผ ๊ฐ๊ฐ 8MB์ ๋๋ค. ์ฐ๋ฆฌ๋ ์ด๋ฅผ Grafana์ ํ์ํ๊ณ , ์ด ์์ฒญ์ ๋ํ ๋งค๊ฐ๋ณ์๋ฅผ ํ์ธํ๊ณ , ๋ ๋์๊ฐ ๊ทธ๋ฌํ ์์ฒญ์ ์๋จ์ ๋ณด๊ณ ์ถ์ต๋๋ค. ์ค์๊ฐ์ผ๋ก ๋ณด์ฌ์ฃผ๋ฉด ์ ๋ง ์ข์ ๊ฒ ๊ฐ์์. ๊ทธ๋ค์๊ฒ ๊ฒฝ๊ณ ๋ฅผ ๋ณด๋ด๋ ๊ฒ์ ์ ๋ง ๋ฉ์ง ๊ฒ์ ๋๋ค.โ
์์ SQL ์ฟผ๋ฆฌ๋
์ฐ๋ฆฌ๋ Redis ์๋ฒ๋ฅผ ์ค์ ํ๊ณ Postgres๋ก ์ด๋ํ์ฌ ๊ฑฐ๊ธฐ์์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ Graphite๋ก ๋ฉํธ๋ฆญ์ ๋ณด๋ด๋ Collectd ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํฉ๋๋ค. ํ์ง๋ง ์ธก์ ํญ๋ชฉ ์ด๋ฆ์ ํด์๋ก ๋ฐ๊ฟ๋๋ค. ๋์ผํ ํด์๋ฅผ Redis์ ํค๋ก ๋ณด๋ด๊ณ ์ ์ฒด SQL ์ฟผ๋ฆฌ๋ฅผ ๊ฐ์ผ๋ก ๋์์ ๋ณด๋ ๋๋ค. ์ฐ๋ฆฌ๊ฐ ํด์ผ ํ ์ผ์ Grafana๊ฐ Redis๋ก ์ด๋ํ์ฌ ์ด ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋์ง ํ์ธํ๋ ๊ฒ์ ๋๋ค. Graphite API๋ฅผ ๊ณต๊ฐํ๋ ์ด์ ๋... ์ด๋ ๋ชจ๋ ๋ชจ๋ํฐ๋ง ๊ตฌ์ฑ ์์์ ํ์ฐ์ ์ํธ ์์ฉ์ ์ํ ๊ธฐ๋ณธ ์ธํฐํ์ด์ค์ด๋ฉฐ ์ฌ๊ธฐ์ aliasByHash()๋ผ๋ ์ ํจ์๋ฅผ ์ ๋ ฅํฉ๋๋ค. Grafana์์ ๋ฉํธ๋ฆญ ์ด๋ฆ์ ๊ฐ์ ธ์ Redis์ ๋ํ ์์ฒญ์์ ํค๋ก ์ฌ์ฉํฉ๋๋ค. ์๋ต์ ํตํด ์ฐ๋ฆฌ๋ "SQL ์ฟผ๋ฆฌ"์ธ ํค ๊ฐ์ ์ป์ต๋๋ค. ๋ฐ๋ผ์ ์ฐ๋ฆฌ๋ ์ด๋ก ์ ์ผ๋ก ํ์ํ ์ ์๋ SQL ์ฟผ๋ฆฌ๋ฅผ Grafana์ ํต๊ณ(ํธ์ถ, ํ, total_time ๋ฑ)์ ํจ๊ป ํ์ํ์ต๋๋ค.
๊ฒฐ๊ณผ
๊ฐ์ฉ์ฑ ๋น์ฌ์ ๋ชจ๋ํฐ๋ง ์๋น์ค๋ ๋ชจ๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ์ฝ๋์์ ์ฐ์ค๋ฌดํด 24์๊ฐ ์ด์ฉ ๊ฐ๋ฅํฉ๋๋ค. ์คํ ๋ฆฌ์ง ์์ค์ ๋ํ ์ก์ธ์ค ๊ถํ์ด ์๋ ๊ฒฝ์ฐ ์๋น์ค์ ๋ฐ์ดํฐ๋ฅผ ์ธ ์ ์์ต๋๋ค. ์ธ์ด๋ ์ค์ํ์ง ์์ผ๋ฉฐ ๊ฒฐ์ ๋ ์ค์ํ์ง ์์ต๋๋ค. ์์ผ์ ์ฌ๋ ๋ฐฉ๋ฒ, ๊ฑฐ๊ธฐ์ ๋ฉํธ๋ฆญ์ ๋ฃ๊ณ ์์ผ์ ๋ซ๋ ๋ฐฉ๋ฒ๋ง ์๋ฉด ๋ฉ๋๋ค.
์ ๋ขฐ์ฑ. ๋ชจ๋ ๊ตฌ์ฑ ์์๋ ๋ด๊ฒฐํจ์ฑ์ด ์์ผ๋ฉฐ ๋ถํ๋ฅผ ์ ์ฒ๋ฆฌํฉ๋๋ค.
์ง์ ๋ฌธํฑ์ด ๋ฎ์ต๋๋ค. ์ด ์์คํ ์ ์ฌ์ฉํ๊ธฐ ์ํด Grafana์์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ์ฟผ๋ฆฌ๋ฅผ ๋ฐฐ์ธ ํ์๋ ์์ต๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด๊ณ Graphite์ ๋ฉํธ๋ฆญ์ ๋ณด๋ด๋ ์์ผ์ ์ ๋ ฅํ๊ณ ๋ซ์ ๋ค์ Grafana๋ฅผ ์ด๊ณ ๊ฑฐ๊ธฐ์ ๋์๋ณด๋๋ฅผ ์์ฑํ ๋ค์ ๋ฉํธ๋ฆญ์ ๋์์ ์ดํด๋ณด๊ณ Moira๋ฅผ ํตํด ์๋ฆผ์ ๋ฐ์ต๋๋ค.
๋ ๋ฆฝ. DevOps ์์ง๋์ด์ ๋์ ์์ด ์ด ๋ชจ๋ ์์ ์ ์ง์ ์ํํ ์ ์์ต๋๋ค. ์ด๋ ๋ฐ๋ก ์ง๊ธ ํ๋ก์ ํธ๋ฅผ ๋ชจ๋ํฐ๋งํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๊ตฌ์๊ฒ๋ ์์ ์ ์์ํ๊ฑฐ๋ ๋ณ๊ฒฝํ๋ผ๊ณ ์์ฒญํ ํ์๊ฐ ์๋ค๋ ์ฅ์ ์ด ์์ต๋๋ค.
์ฐ๋ฆฌ๋ ๋ฌด์์ ์ํด ๋ ธ๋ ฅํ๊ณ ์์ต๋๊น?
์๋์ ๋์ด๋ ๋ชจ๋ ๊ฒ์ ๋จ์ง ์ถ์์ ์ธ ์๊ฐ์ด ์๋๋ผ ์ ์ด๋ ์ฒซ ๋ฒ์งธ ๋จ๊ณ๊ฐ ์ทจํด์ง ๊ฒ์ ๋๋ค.
- ์ด์ ํ์ง๊ธฐ. ์ฐ๋ฆฌ๋ Graphite ์คํ ๋ฆฌ์ง๋ก ์ด๋ํ์ฌ ๋ค์ํ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ ๊ฐ ์งํ๋ฅผ ํ์ธํ๋ ์๋น์ค๋ฅผ ๋ง๋ค๊ณ ์ถ์ต๋๋ค. ์ฐ๋ฆฌ๊ฐ ๋ณด๊ณ ์ถ์ ์๊ณ ๋ฆฌ์ฆ๊ณผ ๋ฐ์ดํฐ๊ฐ ์ด๋ฏธ ์๊ณ , ์ฐ๋ฆฌ๋ ์ด๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์๊ณ ์์ต๋๋ค.
- ๋ฉํ๋ฐ์ดํฐ. ์ฐ๋ฆฌ๋ ๋ง์ ์๋น์ค๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, ๊ทธ ์๋น์ค๋ฅผ ์ด์ฉํ๋ ์ฌ๋๋ค๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ๋ณ๊ฒฝ๋ฉ๋๋ค. ์ง์์ ์ผ๋ก ๋ฌธ์๋ฅผ ์๋์ผ๋ก ์ ์งํ๋ ๊ฒ์ ์ ํ ์ฌํญ์ด ์๋๋๋ค. ์ด๊ฒ์ด ๋ฐ๋ก ์ฐ๋ฆฌ๊ฐ ํ์ฌ ๋ง์ดํฌ๋ก์๋น์ค์ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ๋ด์ฅํ๋ ์ด์ ์ ๋๋ค. ์ด๋ฅผ ๊ฐ๋ฐํ ์ฌ๋, ์ํธ ์์ฉํ๋ ์ธ์ด, SLA ์๊ตฌ ์ฌํญ, ์๋ฆผ์ ๋ณด๋ด์ผ ํ๋ ์์น ๋ฐ ๋์์ด ๋ช ์๋์ด ์์ต๋๋ค. ์๋น์ค๋ฅผ ๋ฐฐํฌํ ๋ ๋ชจ๋ ์ํฐํฐ ๋ฐ์ดํฐ๋ ๋ ๋ฆฝ์ ์ผ๋ก ์์ฑ๋ฉ๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ๋ ๊ฐ์ ๋งํฌ๊ฐ ์์ฑ๋ฉ๋๋ค. ํ๋๋ ํธ๋ฆฌ๊ฑฐ์ ๋ํ ๋งํฌ์ด๊ณ ๋ค๋ฅธ ํ๋๋ Grafana์ ๋์๋ณด๋์ ๋ํ ๋งํฌ์ ๋๋ค.
- ๋ชจ๋ ๊ฐ์ ์์ ๋ชจ๋ํฐ๋งํฉ๋๋ค. ์ฐ๋ฆฌ๋ ๋ชจ๋ ๊ฐ๋ฐ์๊ฐ ์ด๋ฌํ ์์คํ ์ ์ฌ์ฉํด์ผ ํ๋ค๊ณ ๋ฏฟ์ต๋๋ค. ์ด ๊ฒฝ์ฐ ํธ๋ํฝ์ด ์ด๋์ ์๋์ง, ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋์ง, ํธ๋ํฝ์ด ์ด๋์ ์๋์ง, ์ฝ์ ์ด ์ด๋์ ์๋์ง ํญ์ ์ดํดํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ด๋ค ์ผ์ด ๋ฐ์ํ์ฌ ์๋น์ค๊ฐ ์ค๋จ๋๋ ๊ฒฝ์ฐ ๊ด๋ฆฌ์์ ํตํ๊ฐ ์๋ ์๋ฆผ์ ํตํด ์ด์ ๋ํด ์๊ฒ ๋๋ฉฐ ์ฆ์ ์ต์ ๋ก๊ทธ๋ฅผ ์ด์ด ๋ฌด์จ ์ผ์ด ์ผ์ด๋ฌ๋์ง ํ์ธํ ์ ์์ต๋๋ค.
- ๊ณ ์ฑ๋ฅ. ์ฐ๋ฆฌ ํ๋ก์ ํธ๋ ์ง์์ ์ผ๋ก ์ฑ์ฅํ๊ณ ์์ผ๋ฉฐ ํ์ฌ ๋ถ๋น ์ฝ 2๊ฐ์ ์ธก์ ๊ฐ์ ์ฒ๋ฆฌํ๊ณ ์์ต๋๋ค. 000๋
์ ์ด ์์น๋ 000์ด์๊ณ ์ฑ์ฅ์ด ๊ณ์๋๊ณ ์์ผ๋ฉฐ ์ด๋ ์ผ์ ์๊ฐ์ด ์ง๋๋ฉด Graphite(์์ญ์)๊ฐ ๋์คํฌ ํ์ ์์คํ
์ ๊ณผ๋ํ ๋ถํ๋ฅผ ์ฃผ๊ธฐ ์์ํ ๊ฒ์์ ์๋ฏธํฉ๋๋ค. ์ด๋ฏธ ๋งํ๋ฏ์ด ์ด ๋ชจ๋ํฐ๋ง ์์คํ
์ ๊ตฌ์ฑ ์์์ ์ํธ ๊ตํ ๊ฐ๋ฅ์ฑ์ผ๋ก ์ธํด ๋งค์ฐ ๋ณดํธ์ ์
๋๋ค. ๋๊ตฐ๊ฐ Graphite๋ฅผ ์ํ ์ธํ๋ผ๋ฅผ ์ ์ง ๊ด๋ฆฌํ๊ณ ์ง์์ ์ผ๋ก ํ์ฅํ๊ณ ์์ง๋ง ์ฐ๋ฆฌ๋ ๋ค๋ฅธ ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค.
ํด๋ฆญ ํ์ฐ์ค ์ธก์ ํญ๋ชฉ์ ์ ์ฅ์๋ก ์ฌ์ฉ๋ฉ๋๋ค. ์ด ์ ํ์ ๊ฑฐ์ ์๋ฃ๋์์ผ๋ฉฐ ๊ณง ์ด ์์ ์ด ์ด๋ป๊ฒ ์ํ๋์๋์ง ์์ธํ ์ค๋ช ํ๊ฒ ์ต๋๋ค. ์ด๋ค ์ด๋ ค์์ด ์์๊ณ ์ด๋ป๊ฒ ๊ทน๋ณตํ๋์ง, ๋ง์ด๊ทธ๋ ์ด์ ํ๋ก์ธ์ค๊ฐ ์ด๋ป๊ฒ ์งํ๋์๋์ง, ๋ฐ์ธ๋ฉ์ผ๋ก ์ ํํ ๊ตฌ์ฑ ์์์ ํด๋น ๊ตฌ์ฑ์ ๋ํด ์ค๋ช ํ๊ฒ ์ต๋๋ค.
๊ด์ฌ์ ๊ฐ์ ธ์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค! ์ฃผ์ ์ ๋ํด ์ง๋ฌธ์ ํ์๋ฉด ์ฌ๊ธฐ๋ ๋ค์ ๊ฒ์๋ฌผ์์ ๋ต๋ณํด ๋๋ฆฌ๊ฒ ์ต๋๋ค. ์๋ง๋ ๋๊ตฐ๊ฐ ๋น์ทํ ๋ชจ๋ํฐ๋ง ์์คํ
์ ๊ตฌ์ถํ ๊ฒฝํ์ด ์๊ฑฐ๋ ๋น์ทํ ์ํฉ์์ Clickhouse๋ก ์ ํํ ๊ฒฝํ์ด ์์ ๊ฒ์
๋๋ค. ๋๊ธ๋ก ๊ณต์ ํด ์ฃผ์ธ์.
์ถ์ฒ : habr.com