RBLN 메트릭 게시자¶
RBLN SDK는 Rebellions NPU 디바이스와 관련된 상세 메트릭을 Prometheus 형식으로 노출하는 Metrics Exporter를 제공합니다. 이 메트릭들은 Prometheus가 쉽게 수집하고 Grafana를 사용하여 시각화할 수 있도록 설계되어, Rebellions NPU 디바이스를 전반적으로 모니터링할 수 있도록 돕습니다.
배포¶
1단계: NPU 노드 준비¶
디바이스 플러그인 문서에 설명된 대로 RBLN NPU가 장착된 쿠버네티스 노드를 준비하고 RBLN 드라이버를 설치하세요.
2단계: 프로메테우스 배포¶
쿠버네티스 클러스터에 프로메테우스를 헬름(Helm) 또는 오퍼레이터(Operator)를 사용하여 배포하세요.
프로메테우스를 미리 배포하지 않아도 RBLN 메트릭 게시자를 배포할 수 있습니다.
3단계: RBLN 메트릭 게시자 배포¶
각 노드에 RBLN 메트릭 게시자를 데몬셋(DaemonSet) 파드로 배포하세요.
제공된 매니페스트에는 Metrics Exporter가 RBLN NPU가 장착된 노드에만 배포되도록 하는 어피니티(affinity) 규칙이 포함되어 있습니다. 특히, nodeAffinity를 사용하여 rebellions.ai/npu.present 레이블이 "true"로 설정된 노드를 대상으로 하며, 이 레이블은 일반적으로 rbln-npu-feature-discovery에 의해 설정됩니다.
Kubernetes 모드¶
Kubernetes 환경이 아닐 때는 pod 리소스 조회와 라벨 의존성을 비활성화할 수 있습니다.
- 매니페스트 env:
RBLN_METRICS_EXPORTER_KUBERNETES_MODE=off - 바이너리 플래그:
./rbln-metrics-exporter --kubernetes-mode=off
Prometheus 규약 메트릭 이름¶
Exporter는 Prometheus 명명 규약을 따르는 메트릭 이름(예: 기존 RBLN_DEVICE_STATUS:TEMPERATURE 대신 rbln_npu_temperature)을 내보낼 수 있습니다. 하위 호환성을 위해 기본값은 여전히 기존 이름이지만, 기존 이름은 deprecated 상태이며 향후 릴리스에서 제거될 예정입니다.
- 매니페스트 env:
PROMETHEUS_METRIC_NAMES=true - 효과: 아래 메트릭 정보에 정리된
rbln_npu_*메트릭 세트를 사용합니다.
4단계: (선택 사항) Prometheus 메트릭 스크랩 설정¶
Prometheus가 RBLN Metrics Exporter에서 메트릭을 자동으로 찾아 스크랩하게 하려면, ServiceMonitor 리소스를 생성할 수 있습니다. Prometheus Operator를 사용한다면 특히 유용하게 사용할 수 있습니다. 다음은 ServiceMonitor 설정 예시입니다:
selector 레이블이 RBLN Metrics Exporter 파드의 레이블과 일치하는지, 그리고 release 레이블(사용하는 경우)이 Prometheus 배포와 일치하는지 확인하세요. 이 ServiceMonitor는 kubectl apply -f your-servicemonitor.yaml 명령으로 적용할 수 있습니다.
5단계: (선택 사항) 그라파나 배포¶
프로메테우스 메트릭을 그라파나 대시보드로 시각화하려면, 쿠버네티스 클러스터에 그라파나를 헬름(Helm) 또는 오퍼레이터(Operator)를 사용하여 배포하세요.
메트릭 정보¶
다음 메트릭들은 각 NPU 디바이스에 대해 내보내지며, 디바이스 식별자(UUID), 카드 이름, 캐릭터 디바이스 노드(rblnN)로 태그가 지정됩니다.
| 이름 | 기존 별칭(제거 전까지 기본값) | 설명 | 단위 |
|---|---|---|---|
rbln_npu_temperature |
RBLN_DEVICE_STATUS:TEMPERATURE |
온도 | °C |
rbln_npu_power |
RBLN_DEVICE_STATUS:CARD_POWER |
전력 사용량 | W |
rbln_npu_memory_used |
RBLN_DEVICE_STATUS:DRAM_USED |
사용 중인 DRAM | Bytes |
rbln_npu_memory_total |
RBLN_DEVICE_STATUS:DRAM_TOTAL |
총 DRAM | Bytes |
rbln_npu_utilization |
RBLN_DEVICE_STATUS:UTILIZATION |
활용률 | % |
rbln_npu_health |
RBLN_DEVICE_STATUS:HEALTH |
NPU 상태 | 0/1 |
참고:
rbln_npu_health(기존RBLN_DEVICE_STATUS:HEALTH)는 이진 상태 지표입니다.0은 NPU가 활성 상태임을,1은 비활성 상태임을 의미합니다.
공통 NPU 메트릭 라벨 속성¶
| 라벨 | 설명 |
|---|---|
name |
커널 드라이버가 노출하는 캐릭터 디바이스 노드(Device.name, 예: rbln0). |
uuid |
NPU 디바이스의 전역 고유 식별자(Device.uuid). |
card |
DeviceInfo.name에서 노출되는 카드 식별 문자열(예: RBLN-CA25). |
deviceID |
프로토에 보고된 PCIe 디바이스 ID(Device.dev_id, 예: 1250). |
hostname |
해당 NPU를 사용하는 파드가 스케줄된 쿠버네티스 노드 이름. |
driver_version |
VersionInfo.drv_version에서 반환되는 커널 드라이버 버전. |
firmware_version |
VersionInfo.fw_version에서 반환되는 NPU 펌웨어 버전. |
Kubernetes NPU 메트릭 라벨 속성¶
| 라벨 | 설명 |
|---|---|
namespace |
NPU를 사용하는 워크로드의 Pod.metadata.namespace. |
container |
NPU를 소비하는 컨테이너 이름(Pod.spec.containers[].name). |
pod |
NPU 할당을 보유한 파드 이름(Pod.metadata.name). |
메트릭 예제¶
다음은 Exporter가 생성하는 메트릭 텍스트 형식의 예시입니다(Prometheus 규약 이름이며, 기존 이름도 동일한 형태를 따릅니다).