ํฐ์คํ ๋ฆฌ ๋ทฐ
ํ์ฌ์ ๋ชจ๋ํฐ๋ง ์์คํ ์ธ datadog์ ๋์ ํ๊ฒ ๋๋ฉด์ ์ป์๋ ์ง์๋ค์ ๊ณต์ ํ๋ คํฉ๋๋ค. ML ์์ง๋์ด๋ก์จ ์์ํ๋ ๋ชจ๋ํฐ๋ง ์์คํ ์ด๋ผ ๊ณ ๊ตฐ๋ถํฌํ์ง๋ง ์๊ฐ์ด ์ง๋๊ณ ๋ณด๋ datadog ๊ณต์๋ฌธ์๊ฐ ๊ฝค ์ ๋์ด์๋ค๋ ๊ฑธ ๊นจ๋ฌ์๋ค์ ๐ฅ agent๋ฅผ ์ฌ์ด ๋ชจ๋ํฐ๋งํ๋ ๊ฒ์ด ์ฃผ์ ๊ธฐ๋ฅ์ด๊ธฐ ๋๋ฌธ์ ๋ชจ๋ํฐ๋ง ํ๊ณ ์ ํ๋ ์์คํ ์ ์ข ๋ฅ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๊ฒ ์ง๋ง ์กฐ๊ธ์ด๋ผ๋ ๋์์ด ๋๊ณ ์ ์์ฑํ์์ต๋๋ค. ์๋ ๋ด์ฉ์ ํธ์์ ํ์๋ฌธ์ผ๋ก ์์ฑํ์์ต๋๋ค.
Datadog์ด๋?
- SaaS ๊ธฐ๋ฐ ๋๊ท๋ชจ ์ ํ๋ฆฌ์ผ์ด์ ๋ฐ ์ธํ๋ผ๋ฅผ ์ํ ๋ชจ๋ํฐ๋ง ๋ฐ ๋ถ์ ํตํฉ ํ๋ซํผ
- ์๋ฒ์ ์์ด์ ํธ๋ฅผ ์ค์น ํ ๋ชจ๋ํฐ๋งํ๋ ๋จ์ํ ๊ธฐ๋ฅ์
- ์์ด์ ํธ์ ์ถ๊ฐ์ ์ธ ์ค์ ์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ฉ๋ชจ๋ฆฌ ์คํ ์ด ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ๋ฑ์ ์์ธํ๊ฒ ๋ชจ๋ํฐ๋งํ ์ ์์
- ์ธ๋ถ API ์ฐ๋์ด ๊ฐ๋ฅํ ๊ฒ์ด ํฐ ์ฅ์ ์(AWS, Microsoft Azure, Google cloud๋ ๊ฐ๋ฅํ๋ฉฐ ๊ฐ๋ฅํ API๋ ์ฝ 600๊ฐ๊ฐ ๋์)
- ์ฌ๋ฌ ์๋น์ค์ ๋ฆฌ์์ค์ agent๋ฅผ ์ค์นํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์์งํ๋ฉฐ ์ฃผ๋ก Go์ Python ์ธ์ด๋ก ์์ฑ๋์ด ์์
- datadog ์ฃผ์ ๊ธฐ๋ฅ ์ค๋ช
- log collection: API ๊ด๋ จ log ์ค์๊ฐ์ผ๋ก ํ์ธ ๊ฐ๋ฅ
- APM: Application Performance Monitoring, ์ ํ๋ฆฌ์ผ์ด์ ์ฑ๋ฅ์ ๊ฐ์ํ๋ ๊ธฐ๋ฅ
- infrastructure: host, container, process, cpu ๋ฑ ํ์ธ
- host: ์ฐ๋ฆฌ๊ฐ ๋ชจ๋ํฐ๋งํ๊ณ ์ถ์ ๋์, ์๋ฒ, API ๋ฑ
datadog agent
- agent(๋๋ฆฌ์ธ์ ๋ปํ๋ ๋ง๋ก ์ค๊ฐ๋ฅผ ํด์ฃผ๋ ์ฌ๋)๋? ์๋ฒ, ์ปดํจํฐ, ๋๋ ๋ค๋ฅธ ์ฅ์น์ ์ค์น๋์ด ํน์ ์์ ์ ์ํํ๊ฑฐ๋ ๋ฐ์ดํฐ๋ฅผ ์์งํ๋ ์ํํธ์จ์ด ์ปดํฌ๋ํธ๋ฅผ ์๋ฏธํจ. ๋ณดํต ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํ๋๋ฉฐ ์ฌ์ฉ์์ ์ง์ ์ ์ธ ๊ฐ์ ์์ด๋ ์๋์ผ๋ก ์์ ์ ์ํํ ์ ์์
- datadog agent๋ ์๋ฒ์ CPU ์ฌ์ฉ๋, ๋ฉ๋ชจ๋ฆฌ ์ํ, ๋์คํฌ ์ฌ์ฉ๋, ๋คํธ์ํฌ ํธ๋ํฝ ๋ฑ๊ณผ ๊ฐ์ ์์คํ ๋งคํธ๋ฆญ์ ์์งํ๋ฉฐ ์์งํ ๋ฐ์ดํฐ๋ ์ํธํ๋์ด datadog ์๋ฒ๋ก ์ ์ก๋จ
- agent๋ platform ๋ณ๋ก ์ค์นํ๋ ๋ฐฉ๋ฒ์ด ๋ค๋ฆ
ํ์ฌ์์๋ AI API๋ฅผ docker container๋ก ๊ด๋ฆฌํ๋ฉฐ agent ๋ํ container ํํ๋ก ๋์๋์ ์ํ. ๊ธฐ๋ณธ์ ์ผ๋ก datadog agent๋ TCP 8126๊ณผ UDP 8125 ํฌํธ๋ฅผ ์ฌ์ฉํ๊ณ ์๋๋ฐ TCP 8126์ ์ฃผ๋ก datadog์ APM ๊ธฐ๋ฅ์ ์ฌ์ฉ๋๋ฉฐ UDP 8125๋ StatsD ๋ฉํธ๋ฆญ์ ์์งํ๋๋ฐ ์ฌ์ฉ๋๋ค.
- TCP: ์ฐ๊ฒฐ ์งํฅ์ ์ด๊ณ ์ ๋ขฐ์ฑ์ด ๋์ ๋ฐ์ดํฐ ์ ์ก์ ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ ์ค์ํ ํธ๋ ์ด์ค ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ฒ ์ ์กํ๊ธฐ ์ํด์
- UDP: ๋จ์ํ๊ณ ํจ์จ์ ์ธ ํต๊ณ ์์ง์ ์ํ ํ๋กํ ์ฝ์ด๋ฉฐ ์ฐ๊ฒฐ์ ์ค์ ํ ํ์๊ฐ ์๊ณ ๋น ๋ฅด๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ์ ์์ด ๋๋์ ๊ฐ๋จํ ๋ฉํธ๋ฆญ์ ๋น ๋ฅด๊ฒ ์์งํ๋๋ฐ ์ ํฉํ๊ธฐ ๋๋ฌธ
docker agent ์ค์น ๋ฐฉ๋ฒ ๐ ์ฐธ๊ณ ํ ๋ฌธ์
- API key๋ฅผ ๋ฐ๊ธ๋ฐ๋๋ค.(ํ๋ฒ๋ง ํ๋ฉด ๋จ)
- datadog image๋ฅผ pull ํด์ค๋ค.
- docker run์ผ๋ก container๋ฅผ ์คํํ๋ค.
- AI API container์๋ ํ๊ฒฝ๋ณ์์ ์ต์ ์ธํ ์ ํด์ค๋ค.
docker pull gcr.io/datadoghq/agent
docker run -d --name datadog-agent \\
--cgroupns host \\
--pid host \\
-e DD_API_KEY=<DATADOG_API_KEY> \\
-e DD_LOGS_ENABLED=true \\
-e DD_LOGS_CONFIG_CONTAINER_COLLECT_ALL=true \\
-e DD_CONTAINER_EXCLUDE="name:datadog-agent" \\
-e DD_SITE=<DD_SITE>
-v /var/run/docker.sock:/var/run/docker.sock:ro \\
-v /var/lib/docker/containers:/var/lib/docker/containers:ro \\
-v /proc/:/host/proc/:ro \\
-v /opt/datadog-agent/run:/opt/datadog-agent/run:rw \\
-v /sys/fs/cgroup/:/host/sys/fs/cgroup:ro \\
gcr.io/datadoghq/agent:latest
์ต์ ๊ณผ ๊ด๋ จํ ๋ด์ฉ์ ๋งํฌ ์ฐธ๊ณ . datadog agents๋ ์ฌ๋ฌ๊ฐ์ ์๋ธ ์ปดํฌ๋ํธ๋ก ๊ตฌ์ฑ๋๋ฉฐ ๊ฐ ์ปดํฌ๋ํธ๋ ํน์ ์์ ์ ์ํํ๊ณ ๊ด๋ จ ๋ก๊ทธ๋ฅผ ์์ฑํจ.
agent.log: ์ฃผ ์ปดํฌ๋ํธ์ ๋ํ ๋ก๊ทธ. ๋ฉํธ๋ฆญ ์์ง, agent ์ํ, agent์ datadog ์๋ฒ ๊ฐ์ ํต์ ๋ฑ์ ๊ด๋ จ๋ ์ ๋ณด
init.log: agent ์ด๊ธฐํ ํ๋ก์ธ์ค์ ๋ํ ์ ๋ณด
process-agent.log: ์คํ์ค์ธ ํ๋ก์ธ์ค, ๋ฆฌ์์ค ์ฌ์ฉ๋, ํ๋ก์ธ์ค ๊ฐ์ ํต์ ๋ฑ์ ๊ดํ ์ ๋ณด
security-agent.log: ๋ณด์ ๊ด๋ จ ์ด๋ฒคํธ
system-probe.log: ๋คํธ์ํฌ ํธ๋ํฝ, ์ฐ๊ฒฐ ์ํ, ํฌํธ ์ฌ์ฉ ๋ฑ์ ๋คํธ์ํฌ ๊ด๋ จ ๋ฉํธ๋ฆญ ์์ง
trace-agent.log: APM๊ณผ ๊ด๋ จ๋ ๋ก๊ทธ. ์ฌ์ฉ์ค์ธ python ๋ฒ์ , tracing ๋ฐ์ ์, ์ฉ๋, ์ด๋ฒคํธ ์ถ์ถ ์ ๋ณด
Infrastructure
Infrastructure
Datadog, the leading service for cloud-scale monitoring.
docs.datadoghq.com
cpu, memory ์ฌ์ฉ๋์ด๋ container์ cpu, memory ๋ฑ์ ํ๋์ ๋ชจ๋ํฐ๋งํ ์ ์์
APM
Tracing Docker Applications
Datadog, the leading service for cloud-scale monitoring.
docs.datadoghq.com
- ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ์ ๊ฐ์ํ๋ ๊ธฐ๋ฅ
- python ์ฝ๋ ๋ด์ trace๋ฅผ ๋ณด๋ด๋ ์ฝ๋๋ฅผ ์ถ๊ฐํด์ค์ผํ๊ณ host name์ ip address์
- ์ธํ ๋ณ๋ก ๋ค๋ฅด์ง๋ง ํ์์ ๊ฒฝ์ฐ, 2๊ฐ์ container๋ฅผ ๊ฐ๊ฐ ๋์ฐ๊ธฐ ๋๋ฌธ์ ai container์์ datadog container๋ก ๋ณด๋ด๋ ip๋ฅผ ์ ์ ํด์ผํจ
- ์๋ ๋ช ๋ น์ด๋ก datadog container ip๋ฅผ ํ์ธํด์ผํจ. default๋ก 172.17.0.3
- docker inspect [container name]
- ํ์ด์ฌ ๋ฉ์ธ ์ฝ๋์์ ์๋์ ์ฝ๋๋ฅผ ๋ฃ์ด์ค
- from ddtrace import tracer tracer.configure(hostname='172.17.0.3', port=8126)
- trace๋ฅผ ์ ๋ฐ๊ณ ์๋์ง ํ์ธํ๊ธฐ ์ํด์ trace-agent.log ๋ณผ ๊ฒ
cd /var/log/datadog
tail -f trace-agent.log
2023-09-01 06:41:16 UTC | TRACE | INFO | (run.go:269 in Infof) | [lang:python lang_version:3.8.17 interpreter:CPython tracer_version:1.17.3 endpoint_version:v0.5] -> traces received: 1, traces filtered: 0, traces amount: 490 bytes, events extracted: 0, events sampled: 0
2023-09-01 06:42:26 UTC | TRACE | INFO | (run.go:269 in Infof) | [lang:python lang_version:3.8.17 interpreter:CPython tracer_version:1.17.3 endpoint_version:v0.5] -> traces received: 2, traces filtered: 0, traces amount: 914 bytes, events extracted: 0, events sampled: 0
2023-09-01 06:52:16 UTC | TRACE | INFO | (run.go:269 in Infof) | [lang:python lang_version:3.8.17 interpreter:CPython tracer_version:1.17.3 endpoint_version:v0.5] -> traces received: 1, traces filtered: 0, traces amount: 620 bytes, events extracted: 0, events sampled: 0
2023-09-01 07:01:06 UTC | TRACE | INFO | (run.go:269 in Infof) | [lang:python lang_version:3.8.17 interpreter:CPython tracer_version:1.17.3 endpoint_version:v0.5] -> traces received: 73, traces filtered: 0, traces amount: 28747 bytes, events extracted: 0, events sampled: 0
2023-09-01 07:02:06 UTC | TRACE | INFO | (run.go:269 in Infof) | [lang:python lang_version:3.8.17 interpreter:CPython tracer_version:1.17.3 endpoint_version:v0.5] -> traces received: 54, traces filtered: 0, traces amount: 21259 bytes, events extracted: 0, events sampled:
→ ์ ๋ฐ๊ณ ์๋ ๊ฒ์ ํ์ธํ ์ ์์
datadog์์๋ distributed tracing์ด detected ๋๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
์์์ ์ธํ ํ ๋ค service๋ฅผ ์ถ๊ฐํด์ค์ผ ํ๋ค.
- APM์์ setup & Config ํด๋ฆญ ํ create New Entry ํด๋ฆญ
- DD_SERVICE์ bentoml dockerfile์ ์ ํ์๋ DD_SERVICE ํ๊ฒฝ ๋ณ์ ์ด๋ฆ ์ ๊ณ save entry ํด๋ฆญ
log collection
Docker Log collection
Datadog, the leading service for cloud-scale monitoring.
docs.datadoghq.com
- ํ ์คํธ ์ ๋ณด๋ฅผ ๋ค๋ฃจ๋ ๋ก๊ทธ๋ฅผ ์์งํจ
- log๋ฅผ ๋ชจ์ผ๊ธฐ ์ํด์ datadog agent container ์คํ ์ ๋ช๊ฐ์ง ํ๊ฒฝ๋ณ์๋ฅผ ์ถ๊ฐํด์ฃผ์ด์ผ ํ๋ค.
docker run -d --name datadog-agent \
--cgroupns host \
--pid host \
-e DD_API_KEY=<DATADOG_API_KEY> \
-e DD_LOGS_ENABLED=true \
-e DD_LOGS_CONFIG_CONTAINER_COLLECT_ALL=true \
-e DD_CONTAINER_EXCLUDE="name:datadog-agent" \
-e DD_SITE=<DD_SITE>
-v /var/run/docker.sock:/var/run/docker.sock:ro \
-v /var/lib/docker/containers:/var/lib/docker/containers:ro \
-v /proc/:/host/proc/:ro \
-v /opt/datadog-agent/run:/opt/datadog-agent/run:rw \
-v /sys/fs/cgroup/:/host/sys/fs/cgroup:ro \
gcr.io/datadoghq/agent:latest
info๊ฐ default๋ก ๋์ด์์ด ๋ชจ๋ log๋ info๋ก ํ์๋๋ค. → datadog log configure์์ ์ ๊ทํํ์์ ์ด์ฉํด ์ธํ ์ด ํ์ํ๋ค.
์๋ add a new pipeline ํด๋ฆญ ํ filter๋ฅผ ๊ฑธ์ด์ค๋ค. ์ฐ๋ฆฌ๋ service๋ฅผ ๊ธฐ์ค์ผ๋ก ๋๋์ด์์ด service๋ฅผ ์ ํํจ
grok parser ์ธํ
Parse My Logs ๋ฒํผ์ ๋๋ฅด๋ฉด ์์์ ๋ก๊ทธ๋ฅผ ๊ฐ์ ธ์ ์ ๊ทํํ์์ ๊ฐ์ ธ์์ค๋ค.
์ฐ๋ฆฌ๋ log ํ์์ด ํ๋ ๋ ์์ด์ add ๋ฒํผ์ ๋๋ฌ ์ถ๊ฐํด์ฃผ๊ณ ์ ๊ทํํ์์ ์ถ๊ฐํด์ฃผ์๋ค. ์ ๊ทํํ์์ ์ด๊ณณ์ ์ฐธ๊ณ ํ๋ฉด ๋๋๋ฐ key: value ํ์์ด๋ค. ์์ฃผ ์ฌ์ฉํ๋ ๊ฑด date, word
log level ์ ์: status remapper
๊ฒฐ๊ณผ: info๋ง ์ฐํ๋๊ฒ python logger์ ๋ง์ถฐ error, debug, info๋ก ์ ๋๋๋ค!
Custom metric
- ์ ์ ๊ฐ ์ฌ์ฉํ๊ณ ์๋ AI ๋ชจ๋ธ์ด ์ ์์ธกํ๊ณ ์๋์ง ์น์ฐ์ณ์ ์์ธกํ๋ ํด๋์ค๊ฐ ์๋์ง ํ์ธํ๊ธฐ ์ํด metric์ ์ถ๊ฐํจ
- host๋ datadog container๋ฅผ ์๋ฏธํ๋ค. ์ฐ๋ฆฌ๋ container๋ก ๋์ ๊ธฐ ๋๋ฌธ์ docker inspect [contianer_id]๋ก ip address๋ฅผ ํ์ธ ํ ์ ์ด์ค๋ค.
- port๋ 8125๊ฐ ๊ธฐ๋ณธ๊ฐ์ด๋ค.
- ์ฐธ๊ณ datadog container์ ๊ธฐ๋ณธ ip๋ฅผ 172.17.0.3์ด๋ค.์ด๊ธฐ ์ธํ ์ service๊ฐ ์์ํ๋ ์คํฌ๋ฆฝํธ์ ์๋์ ์ฝ๋๋ฅผ ์ฌ์ด์ค๋ค.
from datadog import initialize, statsd
options = {
'statsd_host':'172.17.0.3',
'statsd_port':8125
}
initialize(**options)
์์งํ๊ณ ์ ํ๋ ์งํ๋ฅผ ์๋์ ๊ฐ์ด ์์ฑํ๋ค. tag๋ก ๊ตฌ๋ณํ ์ ์์ด ์นดํ ๊ณ ๋ฆฌ๋ฅผ ๋๋ ์ ์๋ค.
statsd.gauge('face_recovery.class', value, tags=['key':'value'])
๋ค์ํ ์งํ๋ฅผ ์ถ๊ฐํ ์ ์๋๋ฐ ์งํ์ type์ ๋ฐ๋ผ gauge, set, histogram, distribution ๋ฑ์ด ์์ผ๋ฉฐ ์์ธํ ๋ด์ฉ์ ์๋์์ ํ์ธํ ์ ์๋ค.
Metric Submission: DogStatsD
Submit custom metrics directly from your application.
docs.datadoghq.com
๊ฒฐ๊ณผ๋ metric tab์์ ํ์ธํ ์ ์์
AI container(host) ์ธํ
- docker container running ์ env์ service ์ด๋ฆ ๋ฑ์ ์ค์ ํด์ค์ผํ๊ณ API ๋ด ํ๊ฒฝ ๋ณ์๋ฅผ ์ถ๊ฐํด์ฃผ์ด์ผ ํ๋ค.
- ์ปจํ ์ด๋ ์ด๋ฆ์ ์ค์ ํด๋๋ฉด datadog์์ ๋ชจ๋ํฐ๋งํ๋๋ฐ ์ฝ๊ฒ ์๋ณํ ์ ์๋ค.
docker container run -t -d -p 8080:3000 \\ --name [container ์ด๋ฆ] \\ -l com.datadoghq.tags.env=[ํ๊ฒฝ stg, prd ๋ฑ] \\ -l com.datadoghq.tags.service=[service ์ด๋ฆ] \\ [docker image]
- ํ๊ฒฝ ๋ณ์
ENV DD_AGENT_HOST=datadog-agent
ENV DD_SERVICE=[service ์ด๋ฆ]
ENV DD_ENV=[ํ๊ฒฝ stg, prd ๋ฑ]
ENV DD_LOGS_INJECTION=true
Reference
๋งบ์๋ง
AI API๋ฅผ ์ํ ์ธํ ์ด๋ค๋ณด๋ ์ฐธ๊ณ ํ ๋งํ ๊ธ์ด ๋ง์ด ์์ด ์ด๋ฐ์ ๋ง์ด ํค๋งธ์ต๋๋ค. ๊ทธ๋๋ ์ธํ ํ๊ณ ๋๋ ์๋ฌ๋ฅผ ๋๋ฒ๊น ํ๊ฑฐ๋ ์ด๋ ์์ญ์์ ์๊ฐ์ ๋ง์ด ์ฐ๊ณ ์๋์ง ์ฐ๋ฆฌ์ ํ๊ฒฝ์ด ์ ํ์ฉ๋๊ณ ์๋์ง๋ฅผ ๋ณผ ์ ์์ด ์ข๋ค์. ์ด์ธ์๋ ํ์ฉํ ๋งํ ๊ธฐ๋ฅ๋ค์ด ๋ง๊ธฐ ๋๋ฌธ์ ์ ์์ด ๋๋ค๋ฉด ๋ค๋ฅธ ๊ธฐ๋ฅ๋ค๋ ์ ์ฉํด๋ณด๊ณ ์ถ๋ค์. ์ฝ์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ๋์์ด ๋์ จ๊ธธ ๋ฐ๋์! ๐ซง
'๐ค MLOps' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๐ฅ ์คํํธ์ MLOps ํ์ฉ๊ธฐ (0) | 2024.05.06 |
---|
- ๊ฐ๋ฐ์
- tmux
- ์ฑ ๋ฆฌ๋ทฐ
- GIT
- python
- Generative Model
- ๋ ํ๊ฐ
- Multiprocessing
- vscode
- ๋ฒ ์ด์ฆ ์ ๋ฆฌ
- ๊ธ๋
- Computer Vision
- ํ๊ณ
- ๋จธ์ ๋ฌ๋ ์ด๋ก
- linux
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- Total
- Today
- Yesterday