콘텐츠로 이동

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)로 태그가 지정됩니다.

이름 설명 Unit
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 활용률 %
RBLN_DEVICE_STATUS:HEALTH NPU 상태 0/1

참고: 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 펌웨어 버전.
smc_version VersionInfo.smc_version에서 반환되는 SMC(System Management Controller) 펌웨어 버전.

Kubernetes NPU 메트릭 라벨 속성

라벨 설명
namespace NPU를 사용하는 워크로드의 Pod.metadata.namespace.
container NPU를 소비하는 컨테이너 이름(Pod.spec.containers[].name).
pod NPU 할당을 보유한 파드 이름(Pod.metadata.name).

메트릭 예제

아래는 실제 메트릭 예시입니다.

# TYPE RBLN_DEVICE_STATUS:DRAM_TOTAL (GiB)
RBLN_DEVICE_STATUS:DRAM_TOTAL{card="RBLN-CA25",container="ubuntu",deviceID="1250",driver_version="2.0.1",firmware_version="2.0.1",hostname="sw-mpc-clsdk-bm-worker-01",name="rbln0",namespace="default",pod="rebel-device-plugin-testpod-1",smc_version="15.10.13.14",uuid="55668c63-d739-4193-8212-ad7ba933520c"} 15.71875
RBLN_DEVICE_STATUS:DRAM_TOTAL{card="RBLN-CA25",container="ubuntu",deviceID="1250",driver_version="2.0.1",firmware_version="2.0.1",hostname="sw-mpc-clsdk-bm-worker-01",name="rbln1",namespace="default",pod="rebel-device-plugin-testpod-1",smc_version="15.10.13.14",uuid="84389d45-ebf3-4b74-9d80-6ec8a09d8be4"} 15.71875
RBLN_DEVICE_STATUS:DRAM_TOTAL{card="RBLN-CA25",container="ubuntu",deviceID="1250",driver_version="2.0.1",firmware_version="2.0.1",hostname="sw-mpc-clsdk-bm-worker-01",name="rbln2",namespace="default",pod="rebel-device-plugin-testpod-1",smc_version="15.10.13.14",uuid="50e9c1d4-1d88-44ee-94e6-fc0dac081b1e"} 15.71875
RBLN_DEVICE_STATUS:DRAM_TOTAL{card="RBLN-CA25",container="ubuntu",deviceID="1250",driver_version="2.0.1",firmware_version="2.0.1",hostname="sw-mpc-clsdk-bm-worker-01",name="rbln3",namespace="default",pod="rebel-device-plugin-testpod-1",smc_version="15.10.13.14",uuid="8e65fc0d-df7d-4e21-a81b-a76a1a1e69ab"} 15.71875

# TYPE RBLN_DEVICE_STATUS:DRAM_USED (GiB)
RBLN_DEVICE_STATUS:DRAM_USED{card="RBLN-CA25",container="ubuntu",deviceID="1250",driver_version="2.0.1",firmware_version="2.0.1",hostname="sw-mpc-clsdk-bm-worker-01",name="rbln0",namespace="default",pod="rebel-device-plugin-testpod-1",smc_version="15.10.13.14",uuid="55668c63-d739-4193-8212-ad7ba933520c"} 0
RBLN_DEVICE_STATUS:DRAM_USED{card="RBLN-CA25",container="ubuntu",deviceID="1250",driver_version="2.0.1",firmware_version="2.0.1",hostname="sw-mpc-clsdk-bm-worker-01",name="rbln1",namespace="default",pod="rebel-device-plugin-testpod-1",smc_version="15.10.13.14",uuid="84389d45-ebf3-4b74-9d80-6ec8a09d8be4"} 0.140625
RBLN_DEVICE_STATUS:DRAM_USED{card="RBLN-CA25",container="ubuntu",deviceID="1250",driver_version="2.0.1",firmware_version="2.0.1",hostname="sw-mpc-clsdk-bm-worker-01",name="rbln2",namespace="default",pod="rebel-device-plugin-testpod-1",smc_version="15.10.13.14",uuid="50e9c1d4-1d88-44ee-94e6-fc0dac081b1e"} 0
RBLN_DEVICE_STATUS:DRAM_USED{card="RBLN-CA25",container="ubuntu",deviceID="1250",driver_version="2.0.1",firmware_version="2.0.1",hostname="sw-mpc-clsdk-bm-worker-01",name="rbln3",namespace="default",pod="rebel-device-plugin-testpod-1",smc_version="15.10.13.14",uuid="8e65fc0d-df7d-4e21-a81b-a76a1a1e69ab"} 0

# TYPE RBLN_DEVICE_STATUS:TEMPERATURE NPU temperature (C)
RBLN_DEVICE_STATUS:TEMPERATURE{card="RBLN-CA25",container="ubuntu",deviceID="1250",driver_version="2.0.1",firmware_version="2.0.1",hostname="sw-mpc-clsdk-bm-worker-01",name="rbln0",namespace="default",pod="rebel-device-plugin-testpod-1",smc_version="15.10.13.14",uuid="55668c63-d739-4193-8212-ad7ba933520c"} 51
RBLN_DEVICE_STATUS:TEMPERATURE{card="RBLN-CA25",container="ubuntu",deviceID="1250",driver_version="2.0.1",firmware_version="2.0.1",hostname="sw-mpc-clsdk-bm-worker-01",name="rbln1",namespace="default",pod="rebel-device-plugin-testpod-1",smc_version="15.10.13.14",uuid="84389d45-ebf3-4b74-9d80-6ec8a09d8be4"} 54
RBLN_DEVICE_STATUS:TEMPERATURE{card="RBLN-CA25",container="ubuntu",deviceID="1250",driver_version="2.0.1",firmware_version="2.0.1",hostname="sw-mpc-clsdk-bm-worker-01",name="rbln2",namespace="default",pod="rebel-device-plugin-testpod-1",smc_version="15.10.13.14",uuid="50e9c1d4-1d88-44ee-94e6-fc0dac081b1e"} 41
RBLN_DEVICE_STATUS:TEMPERATURE{card="RBLN-CA25",container="ubuntu",deviceID="1250",driver_version="2.0.1",firmware_version="2.0.1",hostname="sw-mpc-clsdk-bm-worker-01",name="rbln3",namespace="default",pod="rebel-device-plugin-testpod-1",smc_version="15.10.13.14",uuid="8e65fc0d-df7d-4e21-a81b-a76a1a1e69ab"} 32

# TYPE RBLN_DEVICE_STATUS:UTILIZATION (%)
RBLN_DEVICE_STATUS:UTILIZATION{card="RBLN-CA25",container="ubuntu",deviceID="1250",driver_version="2.0.1",firmware_version="2.0.1",hostname="sw-mpc-clsdk-bm-worker-01",name="rbln0",namespace="default",pod="rebel-device-plugin-testpod-1",smc_version="15.10.13.14",uuid="55668c63-d739-4193-8212-ad7ba933520c"} 0
RBLN_DEVICE_STATUS:UTILIZATION{card="RBLN-CA25",container="ubuntu",deviceID="1250",driver_version="2.0.1",firmware_version="2.0.1",hostname="sw-mpc-clsdk-bm-worker-01",name="rbln1",namespace="default",pod="rebel-device-plugin-testpod-1",smc_version="15.10.13.14",uuid="84389d45-ebf3-4b74-9d80-6ec8a09d8be4"} 0
RBLN_DEVICE_STATUS:UTILIZATION{card="RBLN-CA25",container="ubuntu",deviceID="1250",driver_version="2.0.1",firmware_version="2.0.1",hostname="sw-mpc-clsdk-bm-worker-01",name="rbln2",namespace="default",pod="rebel-device-plugin-testpod-1",smc_version="15.10.13.14",uuid="50e9c1d4-1d88-44ee-94e6-fc0dac081b1e"} 0
RBLN_DEVICE_STATUS:UTILIZATION{card="RBLN-CA25",container="ubuntu",deviceID="1250",driver_version="2.0.1",firmware_version="2.0.1",hostname="sw-mpc-clsdk-bm-worker-01",name="rbln3",namespace="default",pod="rebel-device-plugin-testpod-1",smc_version="15.10.13.14",uuid="8e65fc0d-df7d-4e21-a81b-a76a1a1e69ab"} 0

# TYPE RBLN_DEVICE_STATUS:CARD_POWER usage (w)
RBLN_DEVICE_STATUS:CARD_POWER{card="RBLN-CA25",container="ubuntu",deviceID="1250",driver_version="2.0.1",firmware_version="2.0.1",hostname="sw-mpc-clsdk-bm-worker-01",name="rbln0",namespace="default",pod="rebel-device-plugin-testpod-1",smc_version="15.10.13.14",uuid="55668c63-d739-4193-8212-ad7ba933520c"} 59.33700180053711
RBLN_DEVICE_STATUS:CARD_POWER{card="RBLN-CA25",container="ubuntu",deviceID="1250",driver_version="2.0.1",firmware_version="2.0.1",hostname="sw-mpc-clsdk-bm-worker-01",name="rbln1",namespace="default",pod="rebel-device-plugin-testpod-1",smc_version="15.10.13.14",uuid="84389d45-ebf3-4b74-9d80-6ec8a09d8be4"} 59.33700180053711
RBLN_DEVICE_STATUS:CARD_POWER{card="RBLN-CA25",container="ubuntu",deviceID="1250",driver_version="2.0.1",firmware_version="2.0.1",hostname="sw-mpc-clsdk-bm-worker-01",name="rbln2",namespace="default",pod="rebel-device-plugin-testpod-1",smc_version="15.10.13.14",uuid="50e9c1d4-1d88-44ee-94e6-fc0dac081b1e"} 59.33700180053711
RBLN_DEVICE_STATUS:CARD_POWER{card="RBLN-CA25",container="ubuntu",deviceID="1250",driver_version="2.0.1",firmware_version="2.0.1",hostname="sw-mpc-clsdk-bm-worker-01",name="rbln3",namespace="default",pod="rebel-device-plugin-testpod-1",smc_version="15.10.13.14",uuid="8e65fc0d-df7d-4e21-a81b-a76a1a1e69ab"} 59.33700180053711

# HELP RBLN_DEVICE_STATUS:HEALTH NPU health status
RBLN_DEVICE_STATUS:HEALTH{card="RBLN-CA25",container="ubuntu",deviceID="1250",driver_version="2.0.1",firmware_version="2.0.1",hostname="sw-mpc-clsdk-bm-worker-01",name="rbln0",namespace="default",pod="rebel-device-plugin-testpod-1",smc_version="15.10.13.14",uuid="55668c63-d739-4193-8212-ad7ba933520c"} 0
RBLN_DEVICE_STATUS:HEALTH{card="RBLN-CA25",container="ubuntu",deviceID="1250",driver_version="2.0.1",firmware_version="2.0.1",hostname="sw-mpc-clsdk-bm-worker-01",name="rbln1",namespace="default",pod="rebel-device-plugin-testpod-1",smc_version="15.10.13.14",uuid="84389d45-ebf3-4b74-9d80-6ec8a09d8be4"} 0
RBLN_DEVICE_STATUS:HEALTH{card="RBLN-CA25",container="ubuntu",deviceID="1250",driver_version="2.0.1",firmware_version="2.0.1",hostname="sw-mpc-clsdk-bm-worker-01",name="rbln2",namespace="default",pod="rebel-device-plugin-testpod-1",smc_version="15.10.13.14",uuid="50e9c1d4-1d88-44ee-94e6-fc0dac081b1e"} 0
RBLN_DEVICE_STATUS:HEALTH{card="RBLN-CA25",container="ubuntu",deviceID="1250",driver_version="2.0.1",firmware_version="2.0.1",hostname="sw-mpc-clsdk-bm-worker-01",name="rbln3",namespace="default",pod="rebel-device-plugin-testpod-1",smc_version="15.10.13.14",uuid="8e65fc0d-df7d-4e21-a81b-a76a1a1e69ab"} 0