์์ฌ
์ด ๊ธฐ๋ฅ์ ์์ง ๊ฐ๋ฐ ์ค์ด์ง๋ง ๊ผญ ์ฌ์ฉํด ๋ณด์๊ธฐ ๋ฐ๋๋๋ค!
์ด ๊ธฐ๋ฅ์ ํ์ฌ ์ถ์ ์ ์ ์ฑ ์ ๋ฐ๋ผ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ํ๋ก๊ทธ๋จ์ ์ผ๋ถ๋ก ์ ๊ณต๋ฉ๋๋ค.
OpenTelemetry ์ฉ ์ต์ ๋ฒ๋น๋ฆฌํฐ๋ ๋ ์ ์ ์ธ Kubernetes ๋ฆฌ์์ค์ Kubernetes UI ์ด๋ฏธ ํธํ๋๋ ์ต๊ณ ์์ค์ ์ ๊ฒฐํฉ๋ ์์ ํ ์คํ ์์ค ์ค์ ์ Kubernetes ์ ๊ณตํฉ๋๋ค. Kubernetes UI๋ ๊ณต๊ธ์์ ๊ด๊ณ์์ด ์ค๊ณ๋์ด ์ฌ์ฉ์์ ์๊ตฌ ์ฌํญ์ ๋ฐ๋ผ OpenTelemetry ๋๋ NewRulestics๋ฅผ ์ ํํ ์ ์์ต๋๋ค.
์ด ๋ฌธ์์์๋ OpenTelemetry ์ฌ์ฉํ์ฌ ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๋ฅผ ๋ชจ๋ํฐ๋งํ๋ ํ๋ก์ธ์ค๋ฅผ ๊ฐ๋ตํ๊ฒ ์ค๋ช
ํฉ๋๋ค. ํด๋ฌ์คํฐ ๋ด์ nr-k8s-otel-collector
Helm ์ฐจํธ ์ค์น์ ์ผ๋ฅ ์ต์ ๋ฒ๋น๋ฆฌํฐ๋ฅผ ํ์ฑํํ๋ ๋ฐ ํ์ํ ์์ง๊ธฐ ๋ฐฐํฌ๊ฐ ํฌํจ๋ฉ๋๋ค.
Kubernetes ๊ตฌ์ฑ ์์๋ฅผ OpenTelemetry ์์ง๊ธฐ์ ํตํฉํ์ฌ ์งํ, ์ด๋ฒคํธ, ๋ก๊ทธ๋ฅผ ๋ด๋ ๋ฆญ์ ์ง์ ์ ์กํ ์ ์์ต๋๋ค. ์ด๋ฌํ ํ ๋ ๋ฉํธ๋ฆฌ ์ ํธ๋ Kubernetes Navigator, ๊ฐ์ ๋์๋ณด๋, Kubernetes ์ด๋ฒคํธ ๋๋ Kubernetes APM ์์ฝ ํ์ด์ง ์ ๊ฐ์ ๊ธฐ๋ณธ ์ ๊ณต ํ๊ฒฝ์ ์๋์ผ๋ก ํฅ์์ํต๋๋ค.
์ด๋ป๊ฒ ์๋ํ๋์?
nr-k8s-otel-collector
Helm ์ฐจํธ๋ฅผ ๊ตฌํํ๋ค, ๋ฐฐํฌํ๋ค ์ด๋ฌํ OpenTelemetry ์์ง๊ธฐ:
Deamonset Collector: ๊ตฌํํ๋ค, ๋ฐฐํฌํ๋ค ๊ฐ ์์ ์ ๋ ธ๋์ ์์ผ๋ฉฐ ๋ ธ๋์ ๊ธฐ๋ณธ ํธ์คํธ์ธ
cAdvisor
,Kubelet
์์ ์งํ๋ฅผ ์์งํ๊ณ ์ปจํ ์ด๋์์ ๋ก๊ทธ๋ฅผ ์์งํ๋ ์ผ์ ๋ด๋นํฉ๋๋ค.๋ฐฐํฌ ์์ง๊ธฐ: ๊ตฌํํ๋ค, ๋ฐฐํฌํ๋ค ์ปจํธ๋กค ํ๋ ์ธ ๋ ธ๋์ ์์ผ๋ฉฐ Kube ์ํ ์งํ ๋ฐ ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ ์ด๋ฒคํธ์ ์งํ๋ฅผ ์์งํ๋ ์ญํ ์ ๋ด๋นํฉ๋๋ค.
์๊ตฌ ์ฌํญ
Kubernetes ํ
๋ฆฌ๋ฉํธ๋ฆฌ ๋ฐ์ดํฐ๋ฅผ ๋ด๋ ๋ฆญ์ผ๋ก ๋ณด๋ด๋ ค๋ฉด OpenTelemetry ์์ง๊ธฐ๊ฐ ํ์ํฉ๋๋ค. ์ฐ๋ฆฌ์ OpenTelemetry (NRDOT) ๋ฐฐํฌํ์ ์ด๋ฏธ ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๋ฅผ ์๋์ผ๋ก ๋ชจ๋ํฐ๋งํ๋๋ก ์ค์ ๋์ด ์์ต๋๋ค. nr-k8s-otel-collector
Helm ์ฐจํธ๋ฅผ ํตํด ๋ชจ๋ ํ์ ๊ตฌ์ฑ ์์๋ฅผ ๊ตฌํ, ๋ฐฐํฌํ์ฌ ์ด๋ฅผ ์ํํฉ๋๋ค.
๋ค๋ฅธ OpenTelemetry ์์ง๊ธฐ๋ก ์ ํํ๋ ๊ฒฝ์ฐ ํ์ํ ๋ชจ๋ ์ฃผ์ ๊ตฌ์ฑ ์์๊ฐ ์๋์ง ํ์ธํ์ธ์.
- ์์ฑ ํ๋ก์ธ์
- ํํฐ ํ๋ก์ธ์
- ํ์ผ๋ก๊ทธ ์์ ๊ธฐ
- GroupByAttrs ํ๋ก์ธ์
- ํธ์คํธ๋ฉํธ๋ฆญ์ค ์์ ๊ธฐ
- K8s์์ฑ ํ๋ก์ธ์
- K8events ์์ ๊ธฐ
- Kubelet ์์ ๊ธฐ
- MetricsTransform ํ๋ก์ธ์
- ํ๋ก๋ฉํ ์ฐ์ค ์์ ๊ธฐ
- ResourceDetection ํ๋ก์ธ์
- ๋ฆฌ์์ค ํ๋ก์ธ์
- ๋ณํ ํ๋ก์ธ์
ํ
Kubernetes OpenTelemetry ์ต์ ๋ฒ๋น๋ฆฌํฐ๋ฅผ ์ฌ์ฉํ๊ณ ์ถ์ง๋ง Helm ์ฐจํธ๋ฅผ ์ค์นํ๊ณ ์ถ์ง ์์ผ์ ๊ฐ์?
- ์์ง๊ธฐ์ ์ด์ ์ ๊ฐ์กฐ ํ์๋ ๊ตฌ์ฑ ์์๊ฐ ํฌํจ๋์ด ์๋์ง ํ์ธํ์ธ์.
- ์ด ๋ฌธ์ ์ ์ ๊ณต๋ ์ค์ ์ง์นจ์ ๋ฐ๋ผ ์์ง๊ธฐ๋ฅผ ์ ์ ํ ๊ตฌ์ฑํ์ธ์.
OpenTelemetry๋ก ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๋ฅผ ์ค์นํ์ธ์
ํด๋ฌ์คํฐ์์ OpenTelemetry๋ฅผ ์์ํ๊ณ ์คํํ๋ ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ๋ฐ๋ฅด์ธ์.
Helm ์ฐจํธ ๊ฐ ํ์ผ์ ๋ค์ด๋ก๋ํ์ฌ ํน์ ์๊ตฌ ์ฌํญ์ ๋ง๊ฒ ์กฐ์ ํ์ธ์.
ํด๋ฌ์คํฐ ์ด๋ฆ๊ณผ ํ์์ ๋๋ค.
์ค์ ์์ ์ ์ ์ฒด ๋ชฉ๋ก์ ํ์ธํ์ธ์.
๊ฐ ํ์ผ๊ณผ ํจ๊ป Helm ์ฐจํธ๋ฅผ ์ค์นํฉ๋๋ค.
bash$helm repo add newrelic https://helm-charts.newrelic.com$helm upgrade nr-k8s-otel-collector newrelic/nr-k8s-otel-collector -f your-custom-values.yaml -n newrelic --create-namespace --installํจ๋๊ฐ ์ฑ๊ณต์ ์ผ๋ก ํ์ ๋์๋์ง ํ์ธํ์ญ์์ค.
bash$kubectl get pods -n newrelic --watch์ฌ๋ฐ๋ฅธ ์ฟผ๋ฆฌ๋ฅผ ์คํํ์ฌ ๋ด๋ ๋ฆญ์ด ๋ฉํธ๋ฆญ, ์ด๋ฒคํธ, ๋ก๊ทธ ๋ฑ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ณ ์๋์ง ํ์ธํ์ธ์. ์์ธํ ๋ด์ฉ์ ์ฟผ๋ฆฌ ๋น๋ ์๊ฐ๋ฅผ ์ฐธ์กฐํ์ธ์.
FROM Metric SELECT * WHERE k8s.cluster.name='<CLUSTER_NAME>'FROM InfrastructureEvent SELECT * WHERE k8s.cluster.name='<CLUSTER_NAME>'FROM Log SELECT * WHERE k8s.cluster.name='<CLUSTER_NAME>'GKE AutoPilot์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ OpenTelemetry ์์ง๊ธฐ์ ํธํ์ฑ๊ณผ ์ ์ ํ ๊ธฐ๋ฅ์ ๋ณด์ฅํ๊ธฐ ์ํด
values.yaml
ํ์ผ์ ๋ค์ ์ค์ ์ ์ ์ฉํด์ผ ํฉ๋๋ค.privileged: falsereceivers:filelog:enabled: falsedaemonset:containerSecurityContext:privileged: false
OpenTelemetry๋ก ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ ์ ๊ฑฐ
OpenTelemetry ๋ก ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ ๋ชจ๋ํฐ๋ง์ ์ค์งํ๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ ์คํํ์ธ์.
$helm uninstall nr-k8s-otel-collector -n newrelic
๋ฐ์ดํฐ ์์ง ์ค์ด๊ธฐ
LowDataMode
์ต์
์ ๊ธฐ๋ณธ์ ์ผ๋ก Kubernetes UI์ ํ์ํ ์งํ๋ง ์์งํ๋๋ก ํ์ฑํ๋์ด ์์ต๋๋ค.
๋ฐ์ดํฐ ์์ง์ ๋ ์ค์ฌ์ผ ํ๋ ๊ฒฝ์ฐ ๊ฐ ๊ตฌํํ๋ค, ๋ฐฐํฌํ๋ค ๊ตฌ์ฑ ์์์ ๋ํ nr-k8s-otel-collector
์ฐจํธ ๊ฐ ์์ ์คํฌ๋ ์ดํ ๊ฐ๊ฒฉ์ ๋๋ฆฝ๋๋ค.
๋ฉํธ๋ฆญ
๋ฐ์ดํฐ ์ฐพ๊ธฐ ๋ฐ ์ฌ์ฉ
๋ฐ์ดํฐ๋ฅผ ์ฐพ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์ธํ ์์๋ณด๋ ค๋ฉด ๋ค์ ๋ฌธ์๋ฅผ ํ์ธํ์ธ์.
์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๋ฅผ ํ์ํ์ฌ ์ปจํธ๋กค ํ๋ ์ธ๋ถํฐ ๋ ธ๋ ๋ฐ ํ๋๊น์ง ํด๋ฌ์คํฐ์ ์ํ๋ฅผ ์์๋ณด์ธ์.
๋ชจ๋ํฐ์ ํจ๊ป ํตํฉ์ ์ธ์ฌ์ดํธ๋ฅผ ์ ๊ณตํ๋Kubernetes APM ์์ฝ ํ์ด์ง์ ๋๋ค . Kubernetes
๋ฌธ์ ์ ํด๊ฒฐ
๋ฌธ์ ๊ฐ ๋ฐ์ํ ์์ง๊ธฐ ํจ๋์ ๋ก๊ทธ๋ฅผ ํ์ธํด ๋ณด์ธ์. ๋ค์ ๋ช ๋ น์ ์คํํ์ธ์:
$kubectl logs <otel-pod-name> -n newrelic
nr-k8s-otel-collector
Helm ์ฐจํธ์์ verboseLog
๋ณด๊ณ ์๋ฅผ true
๋ก ์ค์ ํ ์๋ ์์ต๋๋ค.
์ผ๋ฐ์ ์ธ ์ค๋ฅ
GitHub ์ ์ฅ์์ ์ผ๋ฐ์ ์ธ ์ค๋ฅ ์น์ ์ ํ์ธํ์ธ์.
์ง์ํ๋ค
์ฉ OpenTelemetry ์ต์ ๋ฒ๋น๋ฆฌํฐ์ ๋ฌธ์ ๊ฐ ์๋ Kubernetes ๊ฒฝ์ฐ:
- ๋น์ทํ ๋ฌธ์ ๊ฐ ์๋์ง GitHub์ ๋ฌธ์ ์น์ ์ ์ดํด๋ณด๊ฑฐ๋ ์ ๋ฌธ์ ๋ฅผ ์ฌ๋ ๊ฒ์ ๊ณ ๋ คํด ๋ณด์ธ์.