리소스 사용률 메트릭 수집하기

리소스 사용률 메트릭 수집하기 (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 문서에서 확인하세요.

더 알아보기 (Learn more)