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) 파드로 배포하세요.
| $ kubectl apply -f https://raw.githubusercontent.com/rebellions-sw/rbln-metrics-exporter/refs/heads/main/deployments/kubernetes/daemonset.yaml
|
제공된 매니페스트에는 Metrics Exporter가 RBLN NPU가 장착된 노드에만 배포되도록 하는 어피니티(affinity) 규칙이 포함되어 있습니다. 특히, nodeAffinity
를 사용하여 rebellions.ai/npu.present
레이블이 "true"
로 설정된 노드를 대상으로 하며, 이 레이블은 일반적으로 rbln-npu-feature-discovery에 의해 설정됩니다.
| affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: rebellions.ai/npu.present
operator: In
values:
- "true"
|
4단계: (선택 사항) Prometheus 메트릭 스크랩 설정
Prometheus가 RBLN Metrics Exporter에서 메트릭을 자동으로 찾아 스크랩하게 하려면, ServiceMonitor
리소스를 생성할 수 있습니다. Prometheus Operator를 사용한다면 특히 유용하게 사용할 수 있습니다. 다음은 ServiceMonitor
설정 예시입니다:
| ---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: rbln-metrics-exporter
namespace: monitoring
labels:
release: prometheus # Must match the serviceMonitorSelector you configured when installing Prometheus so that this ServiceMonitor is discovered
spec:
selector:
matchLabels:
app.kubernetes.io/name: rbln-metrics-exporter
namespaceSelector:
matchNames:
- kube-system
endpoints:
- port: metrics
path: /metrics
interval: 30s
scrapeTimeout: 10s
|
ServiceMonitor의 selector
레이블이 RBLN Metrics Exporter 파드의 레이블과 일치하는지, 그리고 release 레이블(사용하는 경우)이 Prometheus 배포와 일치하는지 확인하세요. 이 ServiceMonitor
는 kubectl apply -f your-servicemonitor.yaml
명령으로 적용할 수 있습니다.
5단계: (선택 사항) 그라파나 배포
프로메테우스 메트릭을 그라파나 대시보드로 시각화하려면, 쿠버네티스 클러스터에 그라파나를 헬름(Helm) 또는 오퍼레이터(Operator)를 사용하여 배포하세요.
메트릭 정보
다음 메트릭들은 각 NPU 디바이스에 대해 내보내지며, 디바이스 식별자(UUID), 카드 이름, 캐릭터 디바이스 노드(rblnN
)로 태그가 지정됩니다.
이름 |
설명 |
RBLN_DEVICE_STATUS:TEMPERATURE |
온도 (°C) |
RBLN_DEVICE_STATUS:CARD_POWER |
전력 사용량 (W) |
RBLN_DEVICE_STATUS:DRAM_USED |
사용 중인 DRAM (GiB) |
RBLN_DEVICE_STATUS:DRAM_TOTAL |
총 DRAM (GiB) |
RBLN_DEVICE_STATUS:UTILIZATION |
활용률 (%) |
메트릭 예제
아래는 실제 메트릭 예시입니다.
| # TYPE RBLN_DEVICE_STATUS:DRAM_TOTAL gauge
RBLN_DEVICE_STATUS:DRAM_TOTAL{card="RBLN-CA02",uuid="00000000-0000-0000-0000-000000000000",device="rbln1"} 15.71875
RBLN_DEVICE_STATUS:DRAM_TOTAL{card="RBLN-CA02",uuid="ffffffff-ffff-ffff-ffff-ffffffffffff",device="rbln1"} 15.71875
RBLN_DEVICE_STATUS:DRAM_TOTAL{card="RBLN-CA02",uuid="ffffffff-ffff-ffff-ffff-ffffffffffff",device="rbln0"} 15.71875
RBLN_DEVICE_STATUS:DRAM_TOTAL{card="RBLN-CA02",uuid="00000000-0000-0000-0000-000000000000",device="rbln0"} 15.71875
# TYPE RBLN_DEVICE_STATUS:TEMPERATURE gauge
RBLN_DEVICE_STATUS:TEMPERATURE{card="RBLN-CA02",uuid="ffffffff-ffff-ffff-ffff-ffffffffffff",device="rbln1"} 46
RBLN_DEVICE_STATUS:TEMPERATURE{card="RBLN-CA02",uuid="00000000-0000-0000-0000-000000000000",device="rbln0"} 46
RBLN_DEVICE_STATUS:TEMPERATURE{card="RBLN-CA02",uuid="00000000-0000-0000-0000-000000000000",device="rbln1"} 45
RBLN_DEVICE_STATUS:TEMPERATURE{card="RBLN-CA02",uuid="ffffffff-ffff-ffff-ffff-ffffffffffff",device="rbln0"} 51
# TYPE RBLN_DEVICE_STATUS:UTILIZATION gauge
RBLN_DEVICE_STATUS:UTILIZATION{card="RBLN-CA02",uuid="00000000-0000-0000-0000-000000000000",device="rbln0"} 0
RBLN_DEVICE_STATUS:UTILIZATION{card="RBLN-CA02",uuid="ffffffff-ffff-ffff-ffff-ffffffffffff",device="rbln1"} 0
RBLN_DEVICE_STATUS:UTILIZATION{card="RBLN-CA02",uuid="ffffffff-ffff-ffff-ffff-ffffffffffff",device="rbln0"} 0
RBLN_DEVICE_STATUS:UTILIZATION{card="RBLN-CA02",uuid="00000000-0000-0000-0000-000000000000",device="rbln1"} 0
# TYPE RBLN_DEVICE_STATUS:CARD_POWER gauge
RBLN_DEVICE_STATUS:CARD_POWER{card="RBLN-CA02",uuid="00000000-0000-0000-0000-000000000000",device="rbln0"} 0
RBLN_DEVICE_STATUS:CARD_POWER{card="RBLN-CA02",uuid="00000000-0000-0000-0000-000000000000",device="rbln1"} 0
RBLN_DEVICE_STATUS:CARD_POWER{card="RBLN-CA02",uuid="ffffffff-ffff-ffff-ffff-ffffffffffff",device="rbln1"} 32.7760009765625
RBLN_DEVICE_STATUS:CARD_POWER{card="RBLN-CA02",uuid="ffffffff-ffff-ffff-ffff-ffffffffffff",device="rbln0"} 35.777000427246094
# TYPE RBLN_DEVICE_STATUS:DRAM_USED gauge
RBLN_DEVICE_STATUS:DRAM_USED{card="RBLN-CA02",uuid="00000000-0000-0000-0000-000000000000",device="rbln1"} 0
RBLN_DEVICE_STATUS:DRAM_USED{card="RBLN-CA02",uuid="ffffffff-ffff-ffff-ffff-ffffffffffff",device="rbln0"} 0.140625
RBLN_DEVICE_STATUS:DRAM_USED{card="RBLN-CA02",uuid="ffffffff-ffff-ffff-ffff-ffffffffffff",device="rbln1"} 0
RBLN_DEVICE_STATUS:DRAM_USED{card="RBLN-CA02",uuid="00000000-0000-0000-0000-000000000000",device="rbln0"} 0
|