19์ฅ ๋์ปค๋ฅผ ์ด์ฉํ ๋ก๊ทธ ์์ฑ ๋ฐ ๊ด๋ฆฌ
19.1 ํ์ค ์๋ฌ ์คํธ๋ฆผ๊ณผ ํ์ค ์ถ๋ ฅ ์คํธ๋ฆผ
- ๋์ปค ์ด๋ฏธ์ง๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ฐ์ด๋๋ฆฌ ๋ฐ ์์กด์ฑ, ๊ทธ๋ฆฌ๊ณ ์ปจํ ์ด๋๋ฅผ ์์ํ ๋ ๋์ปค๊ฐ ์คํํ ํ๋ก์ธ์ค์ ๋ํ ์ ๋ณด ๋ฑ์ ๋ด์ ํ์ผ ์์คํ ์ ์ค๋ ์ท์ด๋ค.
- ์ปจํ ์ด๋๋ฅผ ์์ํ ๋ ์คํ๋๋ ํ๋ก์ธ์ค๋ ํฌ์ด๊ทธ๋ผ์ด๋๋ก ๋์ํ๋ค.
- ์คํ๋ ํ๋ก์ธ์ค์์ ์์ฑํ ๋ก๊ทธ ์ํธ๋ฆฌ๋ ํ์ค ์ถ๋ ฅ ๋ฐ ํ์ค ์ค๋ฅ ์คํธ๋ฆผ์ผ๋ก ์ถ๋ ฅ๋๋ค.
- ๋์ปค๋ ๊ฐ ์ปจํ ์ด๋์ stdout ๊ณผ stderr ์คํธ๋ฆผ์ ์ฃผ์ํ๋ฉฐ ์คํธ๋ฆผ์ ํตํด ์ถ๋ ฅ๋๋ ๋ด์ฉ์ ์์งํ๋ค.
ํฌ์ด๊ทธ๋ผ์ด๋(Foreground) ๋? ํฐ๋ฏธ๋์์ ์ง์ ๋ช ๋ น์ ๋ด๋ฆฌ๊ณ , ์คํ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ๋ก ํ์ธํ ์ ์๋ ์ํ. ์ฆ, ํฐ๋ฏธ๋๊ณผ ํ๋ก์ธ์ค๊ฐ ๊ธด๋ฐํ๊ฒ ์ฐ๊ฒฐ๋์ด ์๋ ์ํ.
$ docker container logs --tail 1 timecheck
Environment: DEV; version: 3.0; time check: 12:02.51
$ docker container inspect --format='{{.LogPath}}' timecheck
/var/lib/docker/containers/cffcd1c2efffae434bc7179bbfd55ab1de44792bff6c7476c7ad0188af540bb0/cffcd1c2efffae434bc7179bbfd55ab1de44792bff6c7476c7ad0188af540bb0-json.log
- ํฐ๋ฏธ๋ ์ธ์ ๊ณผ ๋ถ๋ฆฌ๋ ์ปจํ ์ด๋์ ์ข ๋ฃ๋ ์ปจํ ์ด๋์ ๋ก๊ทธ๋ฅผ ์์งํ ์ ์๋๋ก ๋ก๊ทธ๋ฅผ JSON ํ์ผ๋ก ์ ์ฅํ๋ค.
- ํด๋น JSON ํ์ผ์ ๋์ปค๊ฐ ์ง์ ์ปจํ ์ด๋์ ๋์ผํ ์์ ์ฃผ๊ธธ๋ฅด ๊ฐ๋๋ก ๊ด๋ฆฌํ๋ค.
- ๊ธฐ๋ณธ์ ์ผ๋ก ์ปจํ ์ด๋๋ง๋ค JSON ๋ก๊ทธ ํ์ผ ํ๋๊ฐ ์์ฑ๋๋ฉฐ, ํ ๋์คํฌ ์ฉ๋์ด ์ฐฐ ๋๊น์ง ์ด ํ์ผ์ ํฌ๊ธฐ๊ฐ ์ฆ๊ฐํ๋ค.
- ์์ง ์ค์ ์ผ๋ก ์ ์ฒด ์ค์ ํน์ ์ปจํ ์ด๋ ๋จ์์ ์ค์ ๋ ๊ฐ๋ฅํ๋ค.
19.2 ๋ค๋ฅธ ๊ณณ์ผ๋ก ์ถ๋ ฅ๋ ๋ก๊ทธ๋ฅผ stdout ์คํธ๋ฆผ์ ์ ๋ฌํ๊ธฐ
ํ์ค ๋ก๊ทธ ๋ชจ๋ธ์ ์ ์ฉํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ
- ํ์ค ๋ก๊ทธ ๋ชจ๋ธ์ ์ ์ฉํ๊ธฐ ์ด๋ ค์ด ์ ํ๋ฆฌ์ผ์ด์
๋ ์๋ค.
- ex) ์ถ๋ ฅ ์คํธ๋ฆผ์ผ๋ก ์๋ฌด ๋ด์ฉ์ ์ถ๋ ฅํ์ง ์๋ ์ ํ๋ฆฌ์ผ์ด์
- ๋ํ, ๋ณ๋์ ๋ก๊ทธ ํ๋ ์์ํฌ๋ฅผ ๊ฒฝ์ ํด ๋ค๋ฅธ ๊ณณ์ ๋ก๊ทธ๋ฅผ ์ํ๋ ๊ฒฝ์ฐ๊ฐ ์๋ค.
- ex) ๋ฆฌ๋ ์ค์ syslog, ์๋์ฐ์ ์ด๋ฒคํธ ๋ก๊ทธ
- ์ด๋ค ๋ชจ๋ ์ปจํ ์ด๋ ์์ ํ๋ก์ธ์ค์์ ์ถ๋ ฅ๋๋ ๋ก๊ทธ๊ฐ ์์ผ๋ฏ๋ก ๋์ปค๊ฐ ๋ก๊ทธ๋ฅผ ์์งํ์ง ๋ชปํ๋ค.
๋ก๊ทธ ์ ํธ๋ฆฌํฐ
- ํ์ค ๋ก๊ทธ๋ชจ๋ธ์ ์ ์ฉํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ์๋ ๋ก๊ทธ ์ ๋ฌ์ฉ ์ ํธ๋ฆฌํฐ๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
- ๋ก๊ทธ ์ ๋ฌ์ฉ ์ ํธ๋ฆฌํฐ๋ ๋ก๊ทธ ํ์ผ์ ๋ด์ฉ์ ์ฝ์ด ํ์ค ์ถ๋ ฅ์ผ๋ก ๋ด๋ณด๋ด ์ฃผ๋ ์ญํ ์ ํ๋ค.
- ์ปจํ ์ด๋ ์์๋ช ๋ น์์ ๋ณ๋์ ๋ก๊ทธ ์ ๋ฌ์ฉ ์ ํธ๋ฆฌํฐ๋ฅผ ์คํํด์ผ ํ๋ค.
๋ก๊ทธ ์ ํธ๋ฆฌํฐ ๋จ์
- ๋ก๊ทธ ์ ๋ฌ์ฉ ์ ํฐ๋ฆฌํฐ๋ ํฌ์ด๊ทธ๋ผ์ด๋๋ก ๋์ํ๋ค.
- ํด๋น ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ํจ๊ป ์ปจํ ์ด๋๊น์ง ์ข ๋ฃ๋ ์ ์๋ค.
- ๋ํ, ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ค๋ฅ๋ก ์ข ๋ฃ๋์ด๋ ํฌ์ด๊ทธ๋ผ์ด๋๋ก ๋์ ์ค์ธ ์ ํธ๋ฆฌํฐ๊ฐ ๊ณ์ ์คํ๋๋ฏ๋ก ์ปจํ ์ด๋๋ ๊ทธ๋๋ก ์คํ๋๋ค.
- ๋ฐ๋ผ์, ํฌ์ค ์ฒดํฌ๋ฅผ ์ ์ฉํ์ง ์๋ ์ปจํ ์ด๋์ ์ด์ ์ํ๋ฅผ ๊ฐ์งํ ์ ์๋ค.
- ๋ง์ง๋ง์ผ๋ก, ์ ํธ๋ฆฌํฐ์ ๊ฒฝ์ฐ ๋์คํฌ ์ฌ์ฉ ํจ์จ์ด ๋จ์ด์ง๋ค.
FROM diamol/dotnet-runtime AS base
...
WORKDIR /app
COPY --from=builder /out/ .
COPY --from=utility /out/ .
FROM base AS linux
CMD dotnet TimeCheck.dll & dotnet Tail.dll /logs timecheck.log
- ๋ง์ง๋ง CMD ์ธ์คํธ๋ญ์ ์ ํ์ธํ๋ฉด, dotnet ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐฑ๊ทธ๋ผ์ด๋๋ก ์คํํ๊ณ , Tail ์ ์คํํ๋ค.
- tail ์ ๋ก๊ทธ ํ์ผ์ ๊ฐ์ํ๋ค๊ฐ, ์๋ก์ด ๋ด์ฉ์ด ์ถ๊ฐ๋๋ฉด stdout ์คํธ๋ฆผ์ผ๋ก ์ ๋ฌํด ์ปจํ ์ด๋ ๋ก๊ทธ๋ก ์์ง๋๋๋ก ํ๋ ์ญํ ์ ํ๋ค.
19.3 ์ปจํ ์ด๋ ๋ก๊ทธ ์์ง ๋ฐ ํฌ์๋ฉํ๊ธฐ
- ํตํฉ ๋ก๊น ์์คํ ์ผ๋ก๋ ์คํ์์ค์ธ fluentd๊ฐ ๋ง์ด ์ฌ์ฉ๋๋ค.
- fluentd ๋ ํตํฉ ๋ก๊น ๊ณ์ธต์ผ๋ก, ๋ค์ํ ๊ณณ์์ ์์ฐ๋๋ ๋ก๊ทธ๋ฅผ ๋ชจ์ผ๊ณ , ํํฐ๋ง๊ณผ ๊ฐ๊ณต์ ๊ฑฐ์ณ ๋ค์ ์ฌ๋ฌ ๋์์ผ๋ก ์์ง๋ ๋ก๊ทธ๋ฅผ ํฌ์๋ฉ ํ๋ ์ญํ ์ ํ๋ค.
$ docker container run -d -p 24224:24224 --name fluentd -v "$(pwd)/conf:/fluentd/etc" -e FLUENTD_CONF=stdout.conf diamol/fluentd
$ docker container run -d --log-driver=fluentd --name timecheck5 diamol/ch19-timecheck:5.0
$ docker container logs --tail 1 fluentd
- fluentd ๋ ์์งํ ๋ก๊ทธ์ ์์ฒด ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํด์ ์ ์ฅํ๋ค.
- ๋ฉํ๋ฐ์ดํฐ์๋ ์ปจํ ์ด๋ ID ์ ์ด๋ฆ ๋ฑ์ด ํฌํจ๋๋ค.
- fluentd ๋ ์์ง๋ ๋ก๊ทธ์ ์ปจํ ์คํธ๋ฅผ ํ์ ํ๊ธฐ ์ํด ์ด๋ฌํ ๋ฉํ๋ฐ์ดํฐ๊ฐ ํ์ํ๋ค.
- ์์ง๋ ๋ก๊ทธ๋ ์ค์ ๋ฐ์ดํฐ ์คํ ์ด( elastic search ) ๋ก ์ ์ก๋๊ณ , ์๊ฐํ๋ฅผ ์ ๊ณตํ๋ Kibana ์ ํจ๊ป ์ฌ์ฉํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ด๋ค.
EFK ์คํ์ ์ฌ์ฉํ ๋ ์ฅ์
- Kibana
- ๋ชจ๋ ์ปจํ ์ด๋์ ๋ก๊ทธ ์ค์์ ํน์ ํค์๋๋ฅผ ํฌํจํ๋ ๋ก๊ทธ๋ฅผ ๊ฒ์ํ๊ฑฐ๋ ์๊ฐ ๋ฑ์ ๊ธฐ์ค์ผ๋ก ๋ก๊ทธ๋ฅผ ํํฐ๋ง ํ ์ ์๋ค.
- Elastic Search
- ์ํ ํ์ฅ์ด ๋งค์ฐ ์ฉ์ดํ๋ฏ๋ก ์ด์ ํ๊ฒฝ์์ ์์ฑ๋๋ ๋๋์ ๋ก๊ทธ๋ฅผ ์ฒ๋ฆฌํ๋๋ฐ ์ ํฉํ๋ค.
- Fluentd
- ๋ชจ๋ ์ปจํ ์ด๋๋ฅผ ๋ชจ์ ํ๋ฒ์ ๋ณผ ์ ์๊ธฐ ๋๋ฌธ์ ๋ก๊ทธ๋ฅผ ํธํ๊ฒ ํ์ธํ ์ ์๋ค.
Fluentd ๋ก๊ทธ์ ํ๊ทธ ์ถ๊ฐ
services:
accesslog:
iamge: diamol/ch18-access-log
logging:
dirver: "fluentd"
options:
tag: "gallery.access-log.{{.ImageName}}"
iotd:
image: diamol/ch18-image-of-the-day
logging:
dirver: "fluentd"
options:
tag: "gallery.iotd.{{.ImageName}}"
image-gallery:
image: diamol/ch18-image-gallery
logging:
dirver: "fluentd"
options:
tag: "gallery.image-gallery.{{.ImageName}}"
- Fluentd ๋ก๊ทธ์ ํ๊ทธ๋ฅผ ์ถ๊ฐํ๊ธฐ ์ํด์๋ ๋ก๊น ๋๋ผ์ด๋ฒ์ ์ค์ ์ ์ถ๊ฐํด์ผ ํ๋จ.
- ๊ณ ์ ๋ ์ด๋ฆ์ ์ฌ์ฉํ๊ฑฐ๋, ๋ณ๋์ ์๋ณ์๋ฅผ ์ธ๋ถ์์ ์ฃผ์ ํ ์ ์๋ค.
- ์์ ๊ฐ์ด ์ปดํฌ๋ํธ ์ด๋ฆ๊ณผ ์ด๋ฏธ์ง ์ด๋ฆ์ ์ฐ๊ฒฐํ ํ๊ทธ์ ๊ฒฝ์ฐ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ์ปดํฌ๋ํธ๋ฅผ ํ๋์ ์ ์ ์๋ ์ข์ ํ๊ทธ ์์์ด๋ค.
์ด์ฒ๋ผ, ์ค์ ์ง์ค์ ๋ก๊ทธ ๋ชจ๋ธ์ ๊ฒ์ ๊ฐ๋ฅํ ๋ฐ์ดํฐ ์คํ ์ด์ ๋ฐ์ดํฐ ์๊ฐํ UI๋ ์ด์ํ๊ฒฝ์์ ํ์์ ์ด๋ค.
๊ธฐ๋ณธ ๋ก๊น ๋๋ผ์ด๋ฒ๋ ๋์ปค ์์ง ์ค์ ์ผ๋ก ์ง์ ํ์ง๋ง, ์ ํ๋ฆฌ์ผ์ด์ ๋งค๋ํ์คํธ์์ ๋ก๊น ์์คํ ์ ๋ช ์์ ์ ์ง์ ํ๋๊ฒ ์ข๋ค.
๋ก๊น ์์คํ ์ ๋ํ ๊ฒฝํ์ด ๋ง์ง ์๋ค๋ฉด Fluentd ๋ฅผ ์ฌ์ฉํ EFK ์คํ์ ์ถ์ฒํ๋ค.
ํด๋ฌ์คํฐ ํ๊ฒฝ ํ์ฅ์ด ์ด๋ ต์ง ์์ผ๋ฉฐ, ์ ์ฉ์ด ๊ฐ๋จํ๊ณ , ๋ฉํ๋ฐ์ดํฐ๋ ํํฐ ๊ธฐ๋ฅ์ ํตํด ์ ํ๋ณ ๋ถ๋ฆฌ ๋ฐ ์ ์ฅ์ด ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ด๋ค.
19.4 ๋ก๊ทธ ์ถ๋ ฅ ๋ฐ ๋ก๊ทธ ์ปฌ๋ ์ ๊ด๋ฆฌํ๊ธฐ
- ๋ก๊ทธ๋ ๋๋์ ๋ถํ์ํ ๋ฐ์ดํฐ ์ ์ฅ๊ณผ ๋ฌธ์ ์ง๋จ์ ํ์ํ ์ ๋ณด ํ๋ณด ์ฌ์ด์์ ํ์ํ ์ ๋ณด๋ค๋ง ํ์ธํ ์ ์์ด์ผ ๋๋ค.
- ์ปจํ ์ด๋์์ ์์ธํ ๋ก๊ทธ๋ฅผ ์์ฐํ๋ฉด์ ๋ก๊ทธ๋ฅผ ์ ์ฅํ ๋๋ ํํฐ๋ง์ ์ ์ฉํ์ฌ ๊ท ํ์ ์ก์ ์ ์๋ค.
- ๋ก๊ทธ ํํฐ๋ง์ fluentd ์ค์ ํ์ผ์์ ์ ์ํ ์ ์๋ค.
<match gallery.access-log.**>
@type copy
<store>
@type stdout
</store>
</match>
<match gallery.**>
@type copy
<store>
@type elasticsearch
...
</store>
</match
- match ๋ธ๋ญ์ ์ด์ฉํ์ฌ ํํฐ ํ๋ผ๋ฏธํฐ์ ํ๊ทธ๊ฐ ์ผ์นํ๋ ๋ก๊ทธ๋ฅผ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ ์ง ์ ์ํ ์ ์๋ค.
- ์์ ์ค์ ์ access-log ๋ ์ปจํ ์ด๋์ ๋ก๊ทธ์์ ํ์ธํ๊ณ , ๋๋จธ์ง๋ elasticsearch ์์ ํ์ธํ ์ ์๋๋ก ํ๋ ์ค์ ์ด๋ค.
- ์ด๋ฅผ ํตํด ๊ฐ ์ปดํฌ๋ํธ๋ง๋ค ๋ก๊ทธ ์ ์ฅ์๋ฅผ ๋ถ๋ฆฌํด์ ์ ์ฅํ๊ฑฐ๋, ์ค์ํ ๋ก๊ทธ๋ฅผ ๋ฐ๋ก ์ถ์ถํ๋ ํ์๊ฐ ๊ฐ๋ฅํ๋ค.
- ๊ทธ๋ฌ๋, ๋ก๊ทธ๋ ์ ์ค๋ ์ ์์์ ํญ์ ์๊ฐํด์ผ ํ๋ค.
- ์ค์ ๋ด์ฉ์ ๋ฐ๊พธ๊ธฐ ์ํด fluentd ๋ง ์ฌ๋ฐฐํฌํ๋ ๊ณผ์ ์์ ์ปจํ ์ด๋๊ฐ ์์ฑํ ๋ก๊ทธ๊ฐ ์์ง๋์ง ๋ชปํ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ์ฃผ์ํด์ผ ํ๋ค.
19.5 ์ปจํ ์ด๋์ ๋ก๊น ๋ชจ๋ธ
- ๋์ปค์ ๋ก๊น ๋ชจ๋ธ์ ๋งค์ฐ ์ ์ฐ์ฑ์ด ๋ฐ์ด๋๋ค.
- ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ก๊ทธ๋ฅผ ์ปจํ ์ด๋ ๋ก๊ทธ๋ก ๋ณด๋ผ๋๋ง ์ ์ฉ๋๋ค.
- ๋ง์ฝ, ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ฐ๋ก ๋ก๊ทธ๋ฅผ ์ถ๋ ฅํ์ง ์๋๋๋ฉด ๋ณ๋์ ๋ก๊น ์ ํธ๋ฆฌํฐ๋ฅผ ํตํด stdout ์ผ๋ก ์ถ๋ ฅํด์ค์ผ ํ๋ค.
- EFK ์คํ์ ์ฌ์ฉํ ๊ฒฝ์ฐ ์ปจํ ์ด๋ ๋ก๊ทธ๋ฅผ ์ค์ ์ง์ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ๊ด๋ฆฌํ ์ ์๋ค.
- ๋จ์ผ ๋จธ์ ์์๋ ๋ฌด๋ฆฌ ์์ด ๋์ํ๋ฉฐ, ์ด์ ํ๊ฒฝ์ ๋ง์ถฐ ์ํ ํ์ฅ์๋ ์ฉ์ดํ๋ค.
- ์ด๋ค ์กฐ์ง์ fluentd ๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ์คํ์ ๊ตฌ์ฑํ๋๊ฒ์ ์ ํธํ๊ธฐ๋ ํ๋ค.
- ํ์ง๋ง, ์ด๋ ๋ก๊ทธ ์ ์ฐ์ฑ์ ์๊ฒ๋๊ณ , ์ ํ๋ฆฌ์ผ์ด์ ์ด ์์ค ์ฝ๋ ๋ฐ ํน์ ๋ก๊น ๊ธฐ์ ์ ํฌ๊ฒ ์์กดํ๊ฒ ๋๋ฏ๋ก ์ถ์ฒํ์ง ์๋๋ค.