콘텐츠로 이동

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에 의해 설정됩니다.

1
2
3
4
5
6
7
8
9
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 배포와 일치하는지 확인하세요. 이 ServiceMonitorkubectl 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