리소스 사용률 메트릭 수집하기
리소스 사용률 메트릭 수집하기 (Collect resource utilization metrics)
애플리케이션의 리소스 사용률을 이해하는 것은 중요하며, Nomad는 많은 드라이버에서 상세 통계 보고를 지원해요. 리소스 사용률을 출력하는 주요 인터페이스는 -stats 플래그가 있는 alloc status 명령이에요.
이 섹션은 "docs"라는 작업을 사용하지만, 이러한 작업과 명령은 Nomad의 모든 작업에 대체로 적용돼요.
출처: 문서
본문
"docs" 작업에 대한 run 명령의 출력은 다음과 같아요.
$ nomad job run docs.nomad.hcl
==> Monitoring evaluation "42d788a3"
Evaluation triggered by job "docs"
Allocation "04d9627d" created: node "a1f934c9", group "example"
Allocation "e7b8d4f5" created: node "012ea79b", group "example"
Allocation "5cbf23a1" modified: node "1e1aa1e0", group "example"
Evaluation status changed: "pending" -> "complete"
==> Evaluation "42d788a3" finished with status "complete"
상세 사용 통계를 가져오려면 다음 명령을 실행해요. 할당 ID는 다를 거예요. 04d9627d를 실행 중인 "docs" 작업의 할당 ID로 바꿔요:
$ nomad alloc status -stats 04d9627d
ID = 04d9627d
Eval ID = 42d788a3
Name = docs.example[2]
Node ID = a1f934c9
Job ID = docs
Client Status = running
Task "server" is "running"
Task Resources
CPU Memory Disk Addresses
75/100 MHz 784 KiB/10 MiB 300 MiB http: 10.1.1.196:5678
Memory Stats
Cache Max Usage RSS Swap
56 KiB 1.3 MiB 784 KiB 0 B
CPU Stats
Percent Throttled Periods Throttled Time
0.00% 0 0
Recent Events:
Time Type Description
<timestamp> Started Task started by client
<timestamp> Received Task received by client
출력은 작업이 구성된 CPU 한도 근처에서 실행 중이지만 메모리는 여유가 많음을 나타내요. 이 정보를 사용해 작업의 리소스를 실제 요구 사항을 더 잘 반영하도록 변경할 수 있어요:
resources {
cpu = 200
memory = 10
}
리소스를 조정하는 것은 여러 이유로 매우 중요해요:
- 애플리케이션이 메모리 한도에 도달할 때 OOM 킬되지 않도록 보장.
- 애플리케이션이 어느 정도의 CPU 여유를 가지도록 보장해 성능이 좋도록.
- 필요한 만큼만 예약하고 과도하게 할당하지 않아 클러스터 밀도를 최적화.
시점 스냅샷의 리소스 사용량 측정은 유용하지만, 시간에 따른 리소스 사용량을 그래프로 그려 리소스 사용량을 더 잘 이해하고 추정하는 것이 더 유용한 경우가 많아요. Nomad는 리소스 데이터를 statsite와 statsd로 출력하는 것을 지원하며 이것이 리소스 모니터링의 권장 방법이에요. 텔레메트리 출력에 대한 자세한 내용은 텔레메트리 가이드를 참조하세요.
더 고급 사용 사례의 경우 리소스 사용량 데이터는 클라이언트의 HTTP API로도 접근할 수 있어요. 자세한 내용은 allocation API 문서에서 확인하세요.