Docker ๋ฐ Kubernetes์์ ๋ก๊น ์ ๊ธฐ๋ณธ ์ฌํญ์ ์ดํด๋ณธ ๋ค์ ํ๋ก๋์ ์์ ์์ ํ๊ฒ ์ฌ์ฉํ ์ ์๋ ๋ ๊ฐ์ง ๋๊ตฌ์ธ Grafana Loki ๋ฐ EFK ์คํ(Elasticsearch + Fluent Bit + Kibana)์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
๊ธฐ์ฌ์ ์์ฌ๋ ์ง๋ธ ๊ฒ์ ๋๋ค. . ์๋ง์ด ์๊ณ ์ ์์ด ํ์ํ ๊ฒฝ์ฐ ๋ ๋์๊ฐ ์ ์ฒด ๊ต์ก์๋ฐ์ ์ ์์ต๋๋ค. ๊ณผ์ ์ ๋ฑ๋กํ์ญ์์ค .

๋์ปค ๋ก๊น
Kubernetes ์์ค์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ํฌ๋์์ ์คํ๋์ง๋ง ๋ ๋ฎ์ ์์ค์์๋ ์ฌ์ ํ Docker์์ ์ ์์ ์ผ๋ก ์คํ๋ฉ๋๋ค. ๋ฐ๋ผ์ ์ปจํ ์ด๋์์ ๋ก๊ทธ๋ฅผ ์์งํ๋ ๋ฐฉ์์ผ๋ก ๋ก๊น ์ ๊ตฌ์ฑํด์ผ ํฉ๋๋ค. ์ปจํ ์ด๋๋ Docker์ ์ํด ์์๋๋ฏ๋ก Docker ์์ค์์ ๋ก๊น ์ด ๋ฐฐ์ด๋๋ ๋ฐฉ์์ ํ์ ํด์ผ ํฉ๋๋ค.
๋ชจ๋ ๋ ์๊ฐ ์๊ณ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ์์ฉ ํ๋ก๊ทธ๋จ ๋ก๊ทธ๋ ์ปจํ ์ด๋ ๋ด๋ถ๊ฐ ์๋ stdout/stderr์ ๊ธฐ๋ก๋์ด์ผ ํฉ๋๋ค. ๋ก๊ทธ๋ Docker Daemon์ ์ํด ์ง๊ณ๋๋ฉฐ stdout/stderr๋ก ์ ์ก๋๋ ๋ก๊ทธ์ ์ ํํ ์๋ํฉ๋๋ค. ๋ํ ์ปจํ ์ด๋ ๋ด๋ถ์ ๋ก๊ทธ๋ฅผ ์์ฑํ๋ ๊ฒ์ ๋ฌธ์ ๊ฐ ๋ง์ต๋๋ค. ๋ก๊ทธ๊ฐ ๋์ด๋๋ฉด ์ปจํ ์ด๋๊ฐ ํฝ์ฐฝํ๊ณ (์ปจํ ์ด๋์ Logrotate๊ฐ ์์ ๊ฐ๋ฅ์ฑ์ด ๋๊ธฐ ๋๋ฌธ์) Docker Daemon์ ์ด ๋ก๊ทธ๋ฅผ ์ธ์ํ์ง ๋ชปํฉ๋๋ค.
Docker์๋ ์ปจํ ์ด๋ ๋ก๊น ์ ์์งํ๊ธฐ ์ํ ์ฌ๋ฌ ๋ก๊น ๋๋ผ์ด๋ฒ ๋๋ ํ๋ฌ๊ทธ์ธ์ด ์์ต๋๋ค. ๋ฌด๋ฃ Docker Community Edition(CE)์๋ ์์ฉ Docker Enterprise Edition(EE)๋ณด๋ค ๋ก๊ทธ ๋๋ผ์ด๋ฒ ์๊ฐ ์ ์ต๋๋ค.

์ ๋ ์ค์ ๋ก Docker EE๋ฅผ ์ฌ์ฉํ ์ ์ด ์์ต๋๋ค. Southbridge์์๋ ์คํ ์์ค ์๋ฃจ์ ์ ๊ณ ์ํ๋ ค๊ณ ๋ ธ๋ ฅํ๋ฉฐ ๊ณ ๊ฐ์ Docker EE์ ์ถ๊ฐ ๊ธฐ๋ฅ ๋๋ถ๋ถ์ ํ์๋ก ํ์ง ์์ต๋๋ค.
Docker CE์ ๋ก๊ทธ ๋๋ผ์ด๋ฒ:
์ง๋ฐฉ์ - ๋ด๋ถ Docker Daemon ํ์ผ์ ๋ก๊ทธ ์ฐ๊ธฐ
json ํ์ผ - ๊ฐ ์ปจํ
์ด๋์ ํด๋์ json-log ์์ฑ
์ ๋๋ง - journald์ ๋ก๊ทธ๋ฅผ ๋ณด๋
๋๋ค.
Docker ๋ก๊น ์ค์ ์ daemon.json ํ์ผ์ ์์ต๋๋ค.
"log-driver" ํ๋๋ ํ๋ฌ๊ทธ์ธ์ ์ง์ ํ๊ณ "log-opts" ํ๋๋ ํด๋น ์ค์ ์ ์ง์ ํฉ๋๋ค. ์์ ์์์ "json-file" ํ๋ฌ๊ทธ์ธ์ด ์ง์ ๋๊ณ ๋ก๊ทธ ํฌ๊ธฐ ์ ํ์ "max-size": "10m"์ ๋๋ค. ํ์ผ ์ ์ ํ(ํ์ ์ค์ ) โ "max-file": "3"; ๋ฟ๋ง ์๋๋ผ ๋ก๊ทธ์ ์ฒจ๋ถ๋ ๊ฐ.

์ผ๋ถ ๋ก๊ทธ ๋๋ผ์ด๋ฒ ์ค์ ์ ๋ช ๋ น์ค ์ ํธ๋ฆฌํฐ๋ฅผ ํตํด ์ค์ ํ ์ ์์ต๋๋ค. ๋ณ๋์ ์ปจํ ์ด๋๋ฅผ ๋ค๋ฅธ ๋ก๊ทธ ๋๋ผ์ด๋ฒ๋ก ์คํํด์ผ ํ๋ ๊ฒฝ์ฐ์ ์ ์ฉํฉ๋๋ค.
Docker์์ ๋ก๊น ์ฒด๊ณ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.

์ฒด๊ณ ์๋ ๋ฐฉ์: json-file๊ณผ ๊ฐ์ ๋ก๊ทธ ๋๋ผ์ด๋ฒ๋ ํ์ผ์ ์์ฑํฉ๋๋ค. ๋ก๊ทธ ์์ง๊ธฐ(Rsyslog, Fluentd, Logagent ๋ฐ ๊ธฐํ)๋ ์ด๋ฌํ ํ์ผ์ ์์งํ์ฌ Elastic, Sematext ๋๋ ๊ธฐํ ์ ์ฅ์์ ์ ์ฅ์๋ก ์ ์กํฉ๋๋ค.
Kubernetes ๋ก๊ทธ์ธ ๊ธฐ๋ฅ
๋จ์ํ๋ Kubernetes์ ๋ก๊น ์ฒด๊ณ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. Pod๊ฐ ์๊ณ ์ปจํ ์ด๋๊ฐ ์คํ ์ค์ด๋ฉฐ ์ปจํ ์ด๋๋ ๋ก๊ทธ๋ฅผ stdout/stderr๋ก ๋ณด๋ ๋๋ค. ๊ทธ๋ฐ ๋ค์ Docker๋ ํ์ผ์ ์์ฑํ๊ณ ๋ก๊ทธ๋ฅผ ์์ฑํ ๋ค์ ํ์ ํ ์ ์์ต๋๋ค.

Kubernetes ๋ก๊ทธ์ธ ๊ธฐ๋ฅ์ ๊ณ ๋ คํ์ญ์์ค.
๋ฐฐํฌ ๊ฐ ๋ก๊ทธ ์ ์ฅ. ์ด๋ ์ฌ๋ฐ๋ฅธ ๋ก๊น ์ค์ ์ ์ํ ์ ์ ์กฐ๊ฑด์ ๋๋ค. ๋ฐฐํฌ ์ฌ์ด์ ๋ก๊ทธ๋ฅผ ์ ์ฅํ์ง ์์ผ๋ฉด ์ ๋ฒ์ ์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ถ์๋ ๋ ์ด์ ๋ฒ์ ์ ๋ก๊ทธ๋ฅผ ๋ฎ์ด์ฐ๊ณ ์ปจํ ์ด๋๋ฅผ ๋ค์ ๋ก๋ํด๋ ๋ก๊ทธ๊ฐ ์์ค๋ฉ๋๋ค. Kubernetes์๋ --previous ํค๊ฐ ์์ต๋๋ค. ์ด ํค๋ฅผ ์ฌ์ฉํ๋ฉด ๋ง์ง๋ง ํฌ๋๊ฐ ๋ค์ ์์๋๊ธฐ ์ ์ ์ ํ๋ฆฌ์ผ์ด์ ๋ก๊ทธ๋ฅผ ๋ณผ ์ ์์ง๋ง ๊น์ด๋ ๋ณผ ์ ์์ต๋๋ค.
๋ชจ๋ ์ธ์คํด์ค์ ๋ก๊ทธ ์ง๊ณ. ๋ง์ดํฌ๋ก์๋น์ค๊ฐ ํด๋ผ์ฐ๋์์ ํธ์คํ ๋๋ ๊ฒฝ์ฐ ํด๋ผ์ฐ๋ ๊ณต๊ธ์๊ฐ ์์คํ ์ ์ด๋ฅผ ๋ด๋นํฉ๋๋ค. ๋ง์ดํฌ๋ก์๋น์ค๊ฐ ์์ฒด ํ๋์จ์ด์ ์๋ ๊ฒฝ์ฐ ์ปจํ ์ด๋์ ๋ก๊ทธ ์ธ์๋ ์์คํ ๋ก๊ทธ๋ ์์งํด์ผ ํฉ๋๋ค.
์ด์ ์๋ ์์คํ ๊ณผ ๋ง์ดํฌ๋ก์๋น์ค ๋ชจ๋์์ ๋ก๊ทธ๋ฅผ ์์งํ๋ ํธ๋ฆฌํ ๋๊ตฌ๊ฐ ์์์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์์คํ ๋ก๊ทธ๋ ํ๋์ ๋๊ตฌ(์: Rsyslog)๋ก ์์งํ๊ณ , Docker ๋ก๊ทธ๋ ๋ค๋ฅธ ๋๊ตฌ(์: journald๋ก ๊ตฌ์ฑ๋ Docker ๋ก๊ทธ ๋๋ผ์ด๋ฒ๋ฅผ ์ฌ์ฉํ๋ journal-bit)๋ก ์์งํ์ต๋๋ค. ์ ํฌ๋ journal-bit๋ฅผ ์ฌ์ฉํ์ฌ ์ปจํ ์ด๋(Docker ๋ก๊ทธ ๋๋ผ์ด๋ฒ์์ ๋ก๊ทธ๋ฅผ journald์ ๊ธฐ๋กํ๋๋ก ์ง์ )์ ์์คํ (docker-bit) ๋ชจ๋์์ ๋ก๊ทธ๋ฅผ ์์งํ๋ ค๊ณ ์๋ํ์ต๋๋ค. CentOS Windows 7์๋ ์ด๋ฏธ systemd์ journald๊ฐ ์์ต๋๋ค. ์ด ๋ฐฉ๋ฒ์ ์๋ํ์ง๋ง ์ด์์ ์ด์ง๋ ์์ต๋๋ค. ๋ก๊ทธ๊ฐ ๋ง์ผ๋ฉด journal-bit์ด ๋๋ ค์ง๊ณ ๋ฉ์์ง๊ฐ ์์ค๋ ์ ์์ต๋๋ค.
์คํ์ ๊ณ์๋์๊ณ , ๋ค๋ฅธ ๋ฐฉ๋ฒ์ด ๋ฐ๊ฒฌ๋์๋ค. CentOS 7๊ฐ์ง ์ฃผ์ ์์คํ ๋ก๊ทธ(๋ฉ์์ง, ๊ฐ์ฌ, ๋ณด์)๋ var log์ ํ์ผ๋ก ์ค๋ณต ์ ์ฅ๋ฉ๋๋ค. Docker๋ ๋ก๊ทธ๋ฅผ JSON ํ์ผ๋ก ์ ์ฅํ๋๋ก ๊ตฌ์ฑํ ์๋ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ด๋ฌํ ํ์ผ๋ค์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. CentOS Windows 7๊ณผ Docker๋ ํจ๊ป ๋น๋ํ ์ ์์ต๋๋ค.
์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ELK ์คํ ์๋ฃจ์ ์ด ๋์คํ๋์์ต๋๋ค. Elasticsearch, Logstash ๋ฐ Kibana์ ๊ฐ์ ์ฌ๋ฌ ๋๊ตฌ์ ์กฐํฉ์ ๋๋ค.
Elasticsearch๋ ์ปจํ ์ด๋์ ๋ก๊ทธ๋ฅผ ์ ์ฅํ๊ณ , Logstash๋ ์ธ์คํด์ค์ ๋ก๊ทธ๋ฅผ ์์งํ๋ฉฐ, Kibana๋ ์์ ๋ ๋ก๊ทธ๋ฅผ ์ฒ๋ฆฌํ๊ณ ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ทธ๋ํ๋ฅผ ์์ฑํ ์ ์๋๋ก ํฉ๋๋ค. ELK Stack์ ํ๋์ ํ๋ฐํ ์ฌ์ฉ๋์ด ์์ง๋ง ์ ์๊ฐ์๋ ์๊ฐ์ด ํ๋ฅด๊ณ ์์ต๋๋ค. ์ด์ ๋ ๋์ค์ ๋ง์๋๋ฆฌ๊ฒ ์ต๋๋ค.
๋ฉํ๋ฐ์ดํฐ ์ถ๊ฐ. ํฌ๋, ์ ํ๋ฆฌ์ผ์ด์ , ์ปจํ ์ด๋๋ ์ด๋์์๋ ์คํํ ์ ์์ต๋๋ค. ๋ํ ํ๋์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ๋ฌ ์ธ์คํด์ค๊ฐ ์์ ์ ์์ต๋๋ค. ๋ก๊ทธ๋ ๋์ผํ ํ์์ผ๋ก ์์ฑ๋๋ฉฐ ์ด๋ค ์ข ๋ฅ์ ๋ณต์ ๋ณธ์ธ์ง, ์ด๋ค ํฌ๋๊ฐ ์์ฑํ๋์ง, ์ด๋ค ๋ค์์คํ์ด์ค์ ์๋์ง ์ดํดํด์ผ ํฉ๋๋ค. ์ด๊ฒ์ด ๋ก๊ทธ์ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํด์ผ ํ๋ ์ด์ ์ ๋๋ค.
๊ตฌ๋ฌธ ๋ถ์ ๋ก๊ทธ. ์๊ธฐ์ง๋ง ๋ก๊น ๋ฐ ๋ชจ๋ํฐ๋ง ์์คํ ์ ์ง ๋น์ฉ์ด ๊ธฐ๋ณธ ์ ํ๋ฆฌ์ผ์ด์ ๋น์ฉ์ ์ด๊ณผํ ์ ์์ต๋๋ค. ์ด๋น ์๋ง, ์์ญ๋ง ๊ฐ์ ๋ก๊ทธ๊ฐ ๋ ์๊ฐ๋ ๊ฒฝ์ฐ ์ด๋ ๋น์ฐํด ๋ณด์ด์ง๋ง ์ฌ์ ํ ๋ผ์ธ์ ์์์ผ ํฉ๋๋ค. ์ด ์์ง๋ฅผ ์ฐพ๋ ํ ๊ฐ์ง ๋ฐฉ๋ฒ์ ๋ก๊ทธ๋ฅผ ๊ตฌ๋ฌธ ๋ถ์ํ๋ ๊ฒ์ ๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ๋ชจ๋ ๋ก๊ทธ๋ฅผ ์์งํ๊ณ ์ ์ฅํ ํ์๋ ์์ผ๋ฉฐ ์ ์ฅ์ ์ํด ์ผ๋ถ๋ง ๋ณด๋ด๋ฉด ๋ฉ๋๋ค(์: "๊ฒฝ๊ณ " ๋๋ "์ค๋ฅ" ์ํ์ ๋ก๊ทธ). nginx ๋๋ ingress ์ปจํธ๋กค๋ฌ ๋ก๊ทธ์ ๋ํด ์ด์ผ๊ธฐํ๋ ๊ฒฝ์ฐ ์ํ๊ฐ 200์ด ์๋ ๋ก๊ทธ๋ง ์คํ ๋ฆฌ์ง๋ก ๋ณด๋ผ ์ ์์ต๋๋ค.๊ทธ๋ฌ๋ ์ด๊ฒ์ ๋ณดํธ์ ์ธ ์กฐ์ธ์ด ์๋๋๋ค. Nginx ๋ก๊ทธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ถ์์ ๊ตฌ์ถํ๋ค๋ฉด ๋ถ๋ช ํ ์์งํ ๊ฐ์น๊ฐ ์์ต๋๋ค.
ํํฐ๋ง๋ ๋ฐ์ดํฐ๊ฐ ์ผ๋ฐ ๋ถ์์ ์ถฉ๋ถํ์ง ์์ ์ ์์ผ๋ฏ๋ก ๋ฌด๋ถ๋ณํ๊ฒ ๋ก๊ทธ๋ฅผ ํํฐ๋งํ๋ ๊ฒ์ ๊ถ์ฅ๋์ง ์์ต๋๋ค. ๋ฐ๋ฉด์ ๋ถ์์ ๋ก๊น ์์ค์ด ์๋๋ผ ๋ฉํธ๋ฆญ ์์ง ์์ค์์ ์ํ๋์ด์ผ ํ ์๋ ์์ต๋๋ค. ๊ทธ๋ฌ๋ฉด ์ฝ๋ 200์ผ๋ก ์์ญ๋ง ์ค์ ์ ์ฅํ ํ์๊ฐ ์์ต๋๋ค. ํ ๊ฐ์ง ์ ๊ทผ ๋ฐฉ์์ ์์ ์ปจํธ๋กค๋ฌ์ ๋ฉํธ๋ฆญ์์ ํธ๋ํฝ ๋ฐ ์ค๋ฅ์ ๋ํ ์ ๋ณด๋ฅผ ์ป๋ ๊ฒ์ ๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ์ฌ๊ธฐ์์ ์ ์คํ๊ฒ ์๊ฐํด์ผ ํฉ๋๋ค. ๋ฌด์์ ์ ์ฅํ๊ณ ์ถ์์ง, ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ก๊น ์์คํ ์ด ๊ธฐ๋ณธ ํ๋ก์ ํธ๋ณด๋ค ๋ ๋ง์ ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ๋ ์ํฉ์ด ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
์์ง ๋ก๊น ์ ๋ํ ํ์ค ์๋ฃจ์ ์ด ์์ต๋๋ค.. ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ Prometheus ์๋ฃจ์ ์ด ํ๋ ์๋ ๋ชจ๋ํฐ๋ง๊ณผ ๋ฌ๋ฆฌ ๋ก๊น ์๋ ํ์ค์ด ์์ต๋๋ค.
์ด ๊ฐ์์์๋ ๋ ๊ฐ์ง ๋๊ตฌ๋ฅผ ์ดํด๋ณผ ๊ฒ์ ๋๋ค. ํ๋๋ ์ธ๊ธฐ๊ฐ ์๊ณ ๋ ๋ฒ์งธ๋ ์ธ๊ธฐ๋ฅผ ์ป๊ณ ์์ต๋๋ค. ๊ทธ ์ธ์๋ ๋ค๋ฅธ ๊ฒ๋ค์ด ์์ง๋ง ์ด ๊ธฐ์ฌ์์๋ ๋ค๋ฃจ์ง ์๊ฒ ์ต๋๋ค.
์์์ ์ค๋ช ํ ๋ชจ๋ ๊ธฐ๋ฅ์ ๊ณ ๋ คํ ๋ Kubernetes ๋ก๊ทธ์ธ์ ์ด์ ๋ค์๊ณผ ๊ฐ์ ๋ฐฉ์์ผ๋ก ํ์๋ ์ ์์ต๋๋ค.

์ปจํ ์ด๋ ๋ก๊ทธ๋ ์ ์ง๋๊ณ ํ์ ๋์ง๋ง ์์ง๊ธฐ ์์ด์ ํธ๊ฐ ๋ํ๋ ๋ก๊ทธ๋ฅผ ์ ํํ๊ณ ์ ์ฅ์ ์ํด ์ ์กํฉ๋๋ค(๋ค์ด์ด๊ทธ๋จ - ๋ก๊น ๋ฐฑ์๋). ์์ด์ ํธ๋ ๊ฐ ๋ ธ๋์์ ์คํ๋๋ฉฐ ์ผ๋ฐ์ ์ผ๋ก Kubernetes์์ ์คํ๋ฉ๋๋ค.
์ด์ ๋ก๊น ๋๊ตฌ๋ฅผ ๊ณ ๋ คํ์ญ์์ค.
๊ทธ๋ผํ๋ ๋กํค
์ต๊ทผ์ ๋ฑ์ฅํ์ง๋ง ์ด๋ฏธ ๊ฝค ์ ๋ช ํด์ก์ต๋๋ค. ์ฅ์ : ์ค์น๊ฐ ์ฝ๊ณ , ๋ฆฌ์์ค๋ฅผ ๊ฑฐ์ ์ฌ์ฉํ์ง ์์ผ๋ฉฐ, TSDB(์๊ณ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค)์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ฏ๋ก Elasticsearch๋ฅผ ์ค์นํ ํ์๊ฐ ์์ต๋๋ค. ์ง๋ ๊ธ์์ ํ๋ก๋ฉํ ์ฐ์ค๊ฐ ์ด๋ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ค๊ณ ์ผ๋๋ฐ, ์ด๊ฒ์ด ๋ ์ ํ ์ฌ์ด์ ๋ง์ ์ ์ฌ์ ์ค ํ๋์ ๋๋ค. ๊ฐ๋ฐ์๋ค์ ์ฌ์ง์ด Loki๊ฐ "๋ก๊น ์ธ๊ณ๋ฅผ ์ํ ํ๋ก๋ฉํ ์ฐ์ค"๋ผ๊ณ ์ฃผ์ฅํฉ๋๋ค.
์ฝ์ง ์์ ์ฌ๋๋ค์ ์ํ TSDB์ ๋ํ ์ฝ๊ฐ์ ์ฌ๋ด : TSDB๋ ๋ง์ ์์ ๋ฐ์ดํฐ, ์๊ณ์ด์ ์ ์ฅํ๋ ์์ ์ ํ๋ฅญํ๊ฒ ์ํํ์ง๋ง ์ฅ๊ธฐ ์ ์ฅ์ฉ์ผ๋ก ์ค๊ณ๋์ง ์์์ต๋๋ค. ์ด๋ค ์ด์ ๋ก ๋ก๊ทธ๋ฅผ XNUMX์ฃผ ์ด์ ์ ์ฅํด์ผ ํ๋ ๊ฒฝ์ฐ ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก์ ์ ์ก์ ๊ตฌ์ฑํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
Loki์ ๋ ๋ค๋ฅธ ์ฅ์ ์ Grafana๊ฐ ๋ฐ์ดํฐ ์๊ฐํ์ ์ฌ์ฉ๋๋ค๋ ๊ฒ์ ๋๋ค. ๋งค์ฐ ํธ๋ฆฌํฉ๋๋ค. Grafana์์๋ ๋ชจ๋ํฐ๋ง ๋ฐ์ดํฐ๋ฅผ ๋ณด๊ณ ๊ฐ์ ์์น์์ Loki๋ฅผ ์ฐ๊ฒฐํ์ฌ ๋ก๊ทธ๋ฅผ ๋ด ๋๋ค. ๋ก๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ๊ทธ๋ํ๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
Loki ์ํคํ ์ฒ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.

DaemonSet๋ฅผ ์ฌ์ฉํ๋ฉด Promtail ๋๋ Fluent Bit์ ๊ฐ์ ๋ชจ๋ ํด๋ฌ์คํฐ ์๋ฒ์ ์์ด์ ํธ๊ฐ ๋ฐฐํฌ๋ฉ๋๋ค. ์์ด์ ํธ๋ ๋ก๊ทธ๋ฅผ ์์งํฉ๋๋ค. Loki๋ ๊ทธ๊ฒ๋ค์ ์ง์ด ์์ ์ TSDB์ ์ ์ฅํฉ๋๋ค. ๋ฉํ๋ฐ์ดํฐ๋ ์ฆ์ ๋ก๊ทธ์ ์ถ๊ฐ๋๋ฏ๋ก ํธ๋ฆฌํฉ๋๋ค. ํฌ๋, ๋ค์์คํ์ด์ค, ์ปจํ ์ด๋ ์ด๋ฆ, ์ฌ์ง์ด ๋ผ๋ฒจ๋ก๋ ํํฐ๋งํ ์ ์์ต๋๋ค.
Loki๋ ์น์ํ Grafana ์ธํฐํ์ด์ค์์ ์คํ๋ฉ๋๋ค. Loki์๋ Prometheus์ PromQL๊ณผ ์ด๋ฆ ๋ฐ ๊ตฌ๋ฌธ์ด ์ ์ฌํ LogQL์ด๋ผ๋ ์์ฒด ์ฟผ๋ฆฌ ์ธ์ด๋ ์์ต๋๋ค. Loki ์ธํฐํ์ด์ค์๋ ์ฟผ๋ฆฌ๊ฐ ํฌํจ๋ ํ๋กฌํํธ๊ฐ ์์ผ๋ฏ๋ก ์ด๋ฅผ ์๊ธฐํ ํ์๋ ์์ต๋๋ค.

Grafana ์ธํฐํ์ด์ค์ Loki
ํํฐ๋ฅผ ์ฌ์ฉํ์ฌ Loki๋ ์ฝ๋("400", "404" ๋ฐ ๊ธฐํ)๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค. ์ ์ฒด ๋ ธ๋์์ ๋ก๊ทธ๋ฅผ ๋ด ๋๋ค. "์ค๋ฅ"๋ผ๋ ๋จ์ด๊ฐ ํฌํจ๋ ๋ชจ๋ ๋ก๊ทธ๋ฅผ ํํฐ๋งํฉ๋๋ค. ๋ก๊ทธ๋ฅผ ํด๋ฆญํ๋ฉด ์ด๋ฒคํธ์ ๋ํ ๋ชจ๋ ์ ๋ณด๊ฐ ํฌํจ๋ ์นด๋๊ฐ ์ด๋ฆฝ๋๋ค.
Loki์๋ ํ์ํ ๋ก๊ทธ๋ฅผ ์ถ์ถํ ์ ์๋ ๋๊ตฌ๊ฐ ์ถฉ๋ถํ ์์ต๋๋ค. ์์งํ ๋งํด์ ๊ธฐ์ ์ ์ผ๋ก๋ ๋ ์์ ์ ์์ต๋๋ค. ์ด์ Loki๋ ์ ๊ทน์ ์ผ๋ก ๊ฐ๋ฐํ๊ณ ์ธ๊ธฐ๋ฅผ ์ป๊ณ ์์ต๋๋ค.
Elastic + Fluent Bit + Kibana(EFK ์คํ)
EFK ์คํ์ ๋ ๊ณ ์ ์ ์ด์ง๋ง ๋๊ฐ์ด ์ธ๊ธฐ ์๋ ๋ก๊น ๋๊ตฌ์ ๋๋ค.
๊ธฐ์ฌ ์์ ๋ถ๋ถ์์ ELK(Elasticsearch + Logstash + Kibana)์ ๋ํด ์ธ๊ธํ์ง๋ง ์ด ์คํ์ ์์ฐ์ฑ์ด ๋ฎ๊ณ ๋์์ ๋ฆฌ์์ค ์ง์ฝ์ ์ธ Logstash๋ก ์ธํด ๊ตฌ์์ ๋๋ค. ๋์ ๊ทธ๋ค์ ๋ ๊ฐ๋ณ๊ณ ์์ฐ์ ์ธ Fluentd๋ฅผ ์ฌ์ฉํ๊ธฐ ์์ํ๊ณ ์ผ๋ง ํ ๊ทธ๋ ๊ตฌ์กฐ์ ๋์ฐ์ต๋๋ค. - ํจ์ฌ ๋ ๊ฐ๋ณ๊ณ ๋ ์์ฐ์ ์ธ ์์ด์ ํธ ์์ง๊ธฐ.
๊ฐ๋ฐ์์ ๋ฐ๋ฅด๋ฉด Fluent Bit๋ Fluentd๋ณด๋ค ์ฑ๋ฅ์ด 100๋ฐฐ ์ด์ ๋ฐ์ด๋ฉ๋๋ค. ์ด๋ฅผ ๋ณด๋ฉด Fluent Bit๊ฐ ๋ ๋๋ฆฌ ์ฌ์ฉ๋์์ต๋๋ค.
Fluent Bit๋ Fluentd๋ณด๋ค ๊ธฐ๋ฅ์ด ์ ์ง๋ง ์ฃผ์ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํ๋ฏ๋ก ์ฃผ๋ก Fluent Bit๋ฅผ ์ฌ์ฉํฉ๋๋ค.
EFK ์คํ ์๋ ๋ฐฉ์: ์์ด์ ํธ๋ ๋ชจ๋ ํฌ๋(์ผ๋ฐ์ ์ผ๋ก ๋ชจ๋ ํด๋ฌ์คํฐ ์๋ฒ์์ ์คํ๋๋ DaemonSet)์์ ๋ก๊ทธ๋ฅผ ์์งํ์ฌ ์คํ ๋ฆฌ์ง(Elasticsearch, PostgreSQL ๋๋ Kafka)๋ก ๋ณด๋ ๋๋ค. Kibana๋ ์ ์ฅ์์ ์ฐ๊ฒฐํ๊ณ ๊ฑฐ๊ธฐ์์ ํ์ํ ๋ชจ๋ ์ ๋ณด๋ฅผ ๊ฒ์ํฉ๋๋ค.

์ฌ์ฉ์ ์นํ์ ์ธ ์น ์ธํฐํ์ด์ค๋ก ์ ๋ณด๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ฐจํธ, ํํฐ ๋ฑ์ด ์์ต๋๋ค.

๋ก๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ฒด ๋์๋ณด๋๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.

์ ์ฐฝํ ๋นํธ ๊ธฐ๋ฅ
Fluent Bit๋ ์ผ๋ฐ์ ์ผ๋ก Logstash๋ณด๋ค ๋ ๋ค๋ฆฌ๋ฏ๋ก ์์ธํ ์ดํด๋ณด๊ฒ ์ต๋๋ค. Fluent Bit๋ ๋ ผ๋ฆฌ์ ์ผ๋ก 6๊ฐ์ ๋ชจ๋๋ก ๋๋ ์ ์์ผ๋ฉฐ Fluent Bit์ ๊ธฐ๋ฅ์ ํ์ฅํ๋ ์ผ๋ถ ๋ชจ๋์ ํ๋ฌ๊ทธ์ธ์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.

์ ๋ ฅ ๋ชจ๋ ํ์ผ, ์์คํ ์๋น์ค, ์ฌ์ง์ด tcp-socket์์๋ ๋ก๊ทธ๋ฅผ ์์งํฉ๋๋ค(์๋ํฌ์ธํธ๋ง ์ง์ ํ๋ฉด Fluent Bit๊ฐ ๊ทธ๊ณณ์ผ๋ก ์ด๋ํ๊ธฐ ์์ํฉ๋๋ค). ์ด๋ฌํ ๊ธฐ๋ฅ์ ์์คํ ๊ณผ ์ปจํ ์ด๋ ๋ชจ๋์์ ๋ก๊ทธ๋ฅผ ์์งํ๊ธฐ์ ์ถฉ๋ถํฉ๋๋ค.
ํ๋ก๋์ ์์๋ ํ๋ฌ๊ทธ์ธ์ ๊ฐ์ฅ ์์ฃผ ์ฌ์ฉํฉ๋๋ค. (๋ก๊ทธ๊ฐ ์๋ ํด๋์ ์ค์ ๊ฐ๋ฅ) ๋ฐ (๊ทธ๋ ๋ก๊ทธ๋ฅผ ์์งํ ์๋น์ค๋ฅผ ์ ์ ์์ต๋๋ค).
ํ์ ๋ชจ๋ ๋ก๊ทธ๋ฅผ ๊ณตํต ๋ณด๊ธฐ๋ก ๊ฐ์ ธ์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก Nginx ๋ก๊ทธ๋ ๋ฌธ์์ด์ ๋๋ค. ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ๋ฉด ์ด ๋ฌธ์์ด์ JSON์ผ๋ก ๋ณํํ ์ ์์ต๋๋ค. ํ๋์ ํด๋น ๊ฐ์ ์ค์ ํฉ๋๋ค. JSON์ ๋ ์ ์ฐํ ์ ๋ ฌ ์ต์ ์ด ์๊ธฐ ๋๋ฌธ์ ๋ฌธ์์ด ๋ก๊ทธ๋ณด๋ค ์์ ํ๊ธฐ๊ฐ ํจ์ฌ ์ฝ์ต๋๋ค.
ํํฐ ๋ชจ๋. ์ด ์์ค์์๋ ๋ถํ์ํ ๋ก๊ทธ๊ฐ ์ ๊ฑฐ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด ๋ก๊ทธ๋ ๊ฐ์ด "๊ฒฝ๊ณ "์ด๊ฑฐ๋ ํน์ ๋ ์ด๋ธ์ด ์๋ ์ ์ฅ์๋ก๋ง ์ ์ก๋ฉ๋๋ค. ์ ํํ ๋ก๊ทธ๊ฐ ๋ฒํผ๋ง๋ฉ๋๋ค.
๋ฒํผ ๋ชจ๋. Fluent Bit์๋ ๋ฉ๋ชจ๋ฆฌ ๋ฒํผ์ ๋์คํฌ ๋ฒํผ์ ๋ ๊ฐ์ง ์ ํ์ ๋ฒํผ๊ฐ ์์ต๋๋ค. ๋ฒํผ๋ ์ค๋ฅ๋ ์ฅ์ ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ์ ํ์ํ ์์ ๋ก๊ทธ ์ ์ฅ์์ ๋๋ค. ๋๊ตฌ๋ RAM์ ์ ์ฅํ๊ธฐ๋ฅผ ์ํ๋ฏ๋ก ์ผ๋ฐ์ ์ผ๋ก ๋์คํฌ ๋ฒํผ๋ฅผ ์ ํํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋์คํฌ๋ก ์ด๋ํ๊ธฐ ์ ์ ๋ก๊ทธ๊ฐ ์ฌ์ ํ ๋ฉ๋ชจ๋ฆฌ๋ก ์ธ๋ก๋๋๋ค๋ ์ ์ ๋ช ์ฌํ์ญ์์ค.
๋ผ์ฐํ /์ถ๋ ฅ ๋ชจ๋ ๋ก๊ทธ ์ ์ก์ ์ํ ๊ท์น ๋ฐ ์ฃผ์๋ฅผ ํฌํจํฉ๋๋ค. ์ด๋ฏธ ์ธ๊ธํ๋ฏ์ด ๋ก๊ทธ๋ Elasticsearch, PostgreSQL ๋๋ ์๋ฅผ ๋ค์ด Kafka๋ก ๋ณด๋ผ ์ ์์ต๋๋ค.
ํฅ๋ฏธ๋กญ๊ฒ๋ Fluent Bit์์ Fluentd๋ก ๋ก๊ทธ๋ฅผ ๋ณด๋ผ ์ ์์ต๋๋ค. ์ฒซ ๋ฒ์งธ๋ ๋ ๊ฐ๋ณ๊ณ ๊ธฐ๋ฅ์ด ๋จ์ด์ง๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ํตํด ๋ก๊ทธ๋ฅผ ์์งํ๊ณ Fluentd๋ก ๋ณด๋ผ ์ ์์ผ๋ฉฐ ์ถ๊ฐ ํ๋ฌ๊ทธ์ธ์ ๋์์ ๋ฐ์ ์ถ๊ฐ๋ก ์ฒ๋ฆฌํ๊ณ ์ ์ฅ์๋ก ๋ณด๋ผ ์ ์์ต๋๋ค.
Elasticsearch๋ฅผ ์ฌ์ฉํ ๊ณํ์ด๋ผ๋ฉดโฆ
๋ง์ง๋ง์ผ๋ก Elasticsearch๋ฅผ ํ๋ก๋์ ์์ ๋ก๊ทธ ๋ฆฌํฌ์งํ ๋ฆฌ๋ก ์ฌ์ฉํ๋ ค๋ ์ฌ๋๋ค์ ์ํ ๋ ๊ฐ์ง ํ์ ๋๋ค.
- ์๋ฆผ ์ค์ . ์ด ํ๋ก๊ทธ๋จ์ ์ผ๋ฐ ๋ก๊ทธ ์คํธ๋ฆผ์์ ์ค์ํ ๋ฉ์์ง๋ฅผ ๋ถ๋ฆฌํ๊ณ ๋ฉ์ผ ๋๋ ๊ธฐํ ์ฑ๋์์ ์ด์ ๋ํด ๊ฒฝ๊ณ ํฉ๋๋ค. ๋ง์์ ์ผ๋ง ์๋จ์์ด์ .
- ์ฑ์ผ๋ก ๋ก๊ทธ ํ์ ๋๋ Elasticsearch API์ ๋ํ ํธ์ถ. ์์น์ ์ผ๋ก Elastic ์์ฒด๋ ์ด์ ํ์ฌ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ์ธ๋ฑ์ค ์๋ช ์ ๊ด๋ฆฌํ๊ธฐ ์ํด ์ค์ํ ์กฐ์น๋ฅผ ์ทจํ๊ณ ์์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๋ก๊ทธ๋ฅผ ์ค๋ซ๋์ ๋ณด๊ดํ๋ ๊ฒ์ ์๋ฏธ๊ฐ ์์ต๋๋ค. 5์ฃผ ํ์๋ ๋ก๊ทธ๊ฐ ํ์ํ์ง ์์ ๊ฒ์ ๋๋ค. ์ ๋ง ์ค์ํ ๊ฒฝ์ฐ XNUMX์ฃผ ์์ ํ์คํ ํด๊ฒฐ๋ ๊ฒ์ ๋๋ค. ๊ทน๋จ์ ์ธ ๊ฒฝ์ฐ ์ค๋๋ ๋ก๊ทธ๋ฅผ ๋ณด๊ดํ๊ณ ์ฅ๊ธฐ ์ ์ฅ์ ์ํด ์ด๋๊ฐ๋ก ๋ณด๋ผ ์ ์์ต๋๋ค. ๋ฒ์ ์ผ๋ก ์ต๋ XNUMX๋ ๋์ ๋ณด๊ดํด์ผ ํ๋ ํน์ ๋ก๊ทธ์ ๋ํด ๋ค์์ต๋๋ค. ๊ฐ์ธ์ ์ผ๋ก ๋๋ ์ด๊ฒ์ ๋ณธ ์ ์ด ์์ง๋ง ๊ทธ๋ฌํ ์ ๋ณด๋ฅผ ์ผ๋ฐ ๋ก๊ทธ์ ๋์ผ์ํ์ง ์๊ณ ๋ณ๋๋ก ์ ์ฅํ ์๋ ์์ต๋๋ค.
๊ณ์ ๋ ...
์์ฑ์: Marcel Ibraev, ์ธ์ฆ๋ Kubernetes ๊ด๋ฆฌ์, ํ์ฌ์์ ์ค์ต ์์ง๋์ด , ์ฐ์ฌ ๋ฐ ์ฝ์ค ๊ฐ๋ฐ์ .
์ถ์ฒ : habr.com
