콘텐츠로 이동

RBLN System Management Daemon

개요

RSMD (Rebellions System Management Daemon) 는 RBLN NPU 장치를 모니터링하고 제어하는 시스템 관리 데몬입니다. 커널 드라이버 인터페이스와 상위 관리 도구 사이에서 동작하며, 장치 관리 작업을 위한 통합 gRPC 기반 API를 제공합니다.

RSMD는 온도, 전력 소비, 메모리 사용량, 클럭 주파수, 사용률 등 주요 장치 상태 메트릭을 실시간으로 모니터링합니다. 또한 netlink 소켓을 통해 커널 이벤트를 수집하고, 진단을 위한 이벤트 이력과 코어덤프를 유지합니다. 리셋·RSD 그룹 관리·런타임 설정 변경과 같은 장치 제어 작업은 gRPC 인터페이스를 통해 제공됩니다.

RSMD는 대화형 장치 관리를 위한 명령줄 인터페이스인 rbln-smdi를 함께 제공합니다. systemd 서비스로 동작하여 프로덕션 환경에서 여러 NPU 장치에 대한 중앙화된 관리 기능을 제공하며, mTLS와 IP/CN 기반 접근 제어를 통해 원격 운영도 안전하게 노출할 수 있습니다.


아키텍처

RSMD 는 데몬–클라이언트 모델을 따릅니다. 단일 rbln-smd 프로세스가 호스트의 모든 NPU 접근을 담당하고 하나의 gRPC 인터페이스로 노출하며, rbln-smdi CLI·원격 클라이언트·자동화 도구는 커널에 직접 접근하지 않고 이 인터페이스에 연결합니다. 접근을 단일 엔드포인트로 집중하면 온디맨드 도구라면 놓칠 커널 이벤트를 지속적으로 기록하고, 모든 원격 작업을 단일 mTLS·allowlist 경계 뒤에 둘 수 있습니다.

RSMD architecture

구성 요소 역할
rbln-smd 백그라운드 데몬 — 커널 이벤트 수집, 장치 텔레메트리 조회, 장치 제어를 수행하고 이를 gRPC 로 노출합니다.
rbln-smdi 명령줄 클라이언트 — 대화형 조회·제어를 제공하며, 원격 호스트의 데몬에 연결할 수 있습니다.
rbln_smd.proto gRPC 계약 — 클라이언트가 언어별 바인딩을 생성할 때 사용하는 서비스·메시지 정의입니다.

핵심 구성 요소

데몬 (rbln-smd)

rbln-smd 는 백그라운드에서 지속적으로 실행되는 핵심 서비스로, gRPC 인터페이스를 통해 장치 관리 기능을 제공합니다.

Deprecation

동일한 바이너리의 복사본이 호환성을 위해 rbln_daemon 이름으로도 함께 설치됩니다. 이 레거시 이름은 v4.0 에서 제거될 예정이므로, 스크립트와 운영 도구는 rbln-smd 로 마이그레이션하세요.

기능

rbln-smd 은 다음 기능을 수행합니다:

  • netlink 소켓을 통해 커널 이벤트를 모니터링하고 로그로 저장
  • 온도, 전력 소비, 메모리 사용량, 클럭 주파수, 사용률 등의 장치 텔레메트리를 gRPC 인터페이스로 노출
  • 리셋과 같은 장치 제어 작업 처리
  • RSD 그룹 생성·소멸 등 그룹 관리 작업 처리
  • mTLS와 IP/CN 기반 접근 제어 시행

특징

  • 자동 시작 및 생명주기 관리를 위한 systemd 서비스(rbln-smd.service)로 동작
  • 클라이언트 연결을 위한 TCP(기본 포트 50051) 및 Unix 도메인 소켓 지원
  • 구성 가능한 이벤트·코어덤프 보존 및 자동 로테이션

설정

환경 변수로 데몬 동작을 제어합니다:

  • RBLN_SMD_PORT (기본값: 50051): gRPC 서버 TCP 포트
  • RSMD_MAX_EVENTS_PER_DEV (기본값: 1000): 장치당 보존되는 최대 이벤트 수. 한도 도달 시 가장 오래된 이벤트부터 자동 삭제됩니다.
  • RSMD_MAX_COREDUMPS_PER_DEV (기본값: 200): 장치당 보존되는 최대 코어덤프 디렉터리 수. 한도 도달 시 가장 오래된 항목부터 자동 삭제됩니다.
  • RSMD_CERT_PATH: mTLS 활성화 시 서버 인증서 디렉터리. --cert 플래그가 우선합니다.

명령줄 플래그

데몬은 다음 플래그를 지원합니다 (systemd 유닛의 ExecStart= 에 추가하거나 systemctl edit 으로 override):

  • --mtls: mTLS 모드 활성화.
  • --allow-reset: 장치 리셋(resetDevice, resetAllDevice) 허용.
  • --cert <dir>: TLS 서버 인증서 디렉터리.
  • -a, --allowlist <file>: 클라이언트 IP / CN 기반 접근 제한 파일.
  • --uri <uri>: 대체 바인딩 (예: unix:///var/run/rbln.sock).
  • --pid-file <path>: PID 파일 경로 (기본 /run/rbln-smd.pid).

Info

보안 관련 플래그 (--mtls, --allow-reset, --cert, -a, --allowlist) 의 자세한 동작은 접근 제어 및 mTLS 를 참고하세요.

서비스 관리

데몬은 systemd 서비스로 실행됩니다. 서비스 상태는 다음 명령으로 확인할 수 있습니다:

sudo systemctl status rbln-smd

로그는 systemd 저널을 통해 확인할 수 있습니다:

sudo journalctl -u rbln-smd -f

데몬은 systemd 서비스 설정에서 --uri 옵션을 지정하여 TCP 포트 외에 Unix 도메인 소켓을 사용하도록 구성할 수 있습니다:

rbln-smd --uri unix:///var/run/rbln.sock

Info

rbln-smd.servicerbln_daemon.service 는 동일한 바이너리를 가리키며 systemd Conflicts= 로 상호 배제됩니다. 두 유닛을 동시에 enable 한 경우 한쪽만 실행됩니다.

이벤트 로그

장치 이벤트는 CSV 파일 형식으로 다음 경로에 저장됩니다:

/var/log/rebellions/rsmd_<device>.event

이 로그에는 다음이 포함됩니다:

  • 이벤트 유형 및 소스
  • 타임스탬프 (UTC 및 커널 시간)
  • 이벤트 데이터 및 하위 값

Protobuf API

Protobuf API는 모든 RSMD 클라이언트가 사용하는 gRPC 서비스 인터페이스를 정의합니다. Protobuf 스키마(rbln_smd.proto)는 언어 중립적인 인터페이스를 제공하여 Python, C++, Go, Java 등 다양한 언어의 클라이언트를 생성할 수 있게 지원합니다. 엄격한 데이터 타입 정의를 통해 데이터 무결성을 보장하며, gRPC의 바이너리 직렬화를 통해 효율적인 통신 성능을 제공합니다.

사용 가능한 서비스

RBLNServices gRPC 서비스는 다음 RPC 메서드를 제공합니다:

메서드 설명 반환값
getDeviceList 감지된 모든 장치 목록 조회 Device 스트림
getServiceableDeviceList 작업 준비가 된 장치 목록 조회 Device 스트림
resetDevice 특정 장치 리셋 StatusMsg
resetAllDevice 시스템의 모든 장치 리셋 StatusMsg
getVersion 펌웨어, 드라이버, SMC 버전 조회 VersionInfo
getHWInfo 온도 및 전력 소비 조회 HWInfo
getMemoryInfo 전체 및 사용 중인 메모리 조회 MemoryInfo
getClockInfo 장치 클럭 주파수 조회 ClockInfo
getEventInfo 커널에서 하드웨어 이벤트 조회 EventInfo 스트림
getTotalInfo 종합 장치 정보 조회 DeviceInfo 스트림
getUtilization NPU 사용률 백분율 조회 UtilInfo
RblnListTopology 장치 토폴로지 조회 (NUMA, CPU affinity, RSD 그룹, PCIe 링크) RblnListTopologyResponse
RblnListCoredumps 장치 코어덤프 항목 조회 RblnListCoredumpsResponse
RblnGetConfig 런타임 설정 값 조회 RblnGetConfigResponse
RblnSetConfig 런타임 설정 값 변경 RblnSetConfigResponse
RblnListGroups 활성 RSD 그룹 목록 조회 RblnListGroupsResponse
RblnCreateGroup 지정한 장치로 RSD 그룹 생성 RblnGroupOpResponse
RblnDestroyGroup 그룹 ID 로 RSD 그룹 소멸 (-1 은 전체 소멸) RblnGroupOpResponse

메시지 타입

주요 메시지 타입:

  • Device: 장치 식별자 (이름, UUID, PCI 버스 ID, 장치 ID, 카드 이름)
  • DeviceInfo: 완전한 장치 상태 (메모리, 온도, 전력, 버전, 사용률, 상태, P-state)
  • HWInfo: 하드웨어 텔레메트리 (온도: 밀리-섭씨, 전력: 마이크로-와트)
  • MemoryInfo: 메모리 사용량 (GB 단위의 전체 및 사용량)
  • ClockInfo: CP, DNC, Bus, SHM, DRAM 클럭 주파수 (MHz)
  • EventInfo: 타임스탬프가 포함된 커널 보고 이벤트
  • VersionInfo: 펌웨어, 드라이버, SMC 버전
  • UtilInfo: 장치 사용률 백분율
  • TopologyEntry: NUMA 노드, CPU affinity, RSD 그룹, PCIe 링크 속도/폭
  • CoredumpEntry: 코어덤프 디렉터리 경로와 타임스탬프
  • GroupEntry: RSD 그룹 ID, 이름, 멤버 장치
  • DeviceFilter: 서버 측 디바이스 필터 (device_ids / group_ids, 상호 배타적)
  • ErrorDetail: 항목별 오류 코드와 메시지 (성공 시 비어 있음)

프로토콜 정의

프로토콜 버퍼 정의 파일(rbln_smd.proto)은 일반적으로 /opt/rebellions/etc/ 또는 유사한 시스템 위치에 설치됩니다. 클라이언트 애플리케이션은 이 파일을 사용하여 데몬과의 gRPC 통신을 위한 언어별 바인딩을 생성합니다.

Deprecation

동일한 정의가 호환성을 위해 rbln_services.proto 이름으로도 함께 설치됩니다. 이 레거시 이름은 v4.0 에서 제거될 예정이므로, 빌드 스크립트는 rbln_smd.proto 를 참조하도록 업데이트하세요.


CLI (rbln-smdi)

rbln-smdi 명령줄 인터페이스는 RSMD 기능에 대한 대화형 접근을 제공합니다. 사람이 읽기 쉬운 테이블 형식 출력과, 자동화 및 스크립팅을 위한 선택적 JSON 출력을 지원하며, 다른 호스트에서 실행 중인 데몬 인스턴스에 대한 원격 연결도 지원합니다.

공통 옵션

대부분의 서브커맨드는 다음 옵션을 받습니다:

  • --ip <주소>: gRPC 서버 IP (기본값: localhost)
  • --port <번호>: gRPC 서버 포트 (~/.rbln-smdi/config 값을 override)
  • --jsons: 테이블 대신 JSON 형식으로 출력

전역 옵션은 서브커맨드 앞에 위치합니다:

  • --tls <경로>: 클라이언트 인증서 경로 (mTLS 일회용 지정).
  • --uri <URI>: 데몬 연결 URI (예: unix:///var/run/rbln.sock). --ip / --port 보다 우선합니다.
  • -V, --version: CLI 버전 출력.

status, topo, journal 은 다음 필터 옵션을 추가로 받습니다:

  • -d <SPEC>: 디바이스 번호 필터. NrblnN 을 선택합니다. 예: 0, 0,2, 0-3. 미지정 시 전체.
  • -g <SPEC>: RSD 그룹 필터. NrsdN 을 선택합니다. -d 가 함께 지정되면 무시됩니다.

영구 설정

~/.rbln-smdi/config 파일에서 다음 키를 설정할 수 있습니다:

  • secure=true|false: TLS 사용 여부 (기본값 false).
  • cert_path=<경로>: TLS 클라이언트 인증서 디렉터리.
  • port=<번호>: --port 미지정 시 적용되는 기본 포트.

Info

보안 관련 옵션 (--tls, secure, cert_path) 의 자세한 동작은 접근 제어 및 mTLS 를 참고하세요.

CLI 예제

요약

감지된 모든 NPU 장치를 카드 이름, PCI BDF, UUID, 펌웨어 버전, RSD 그룹, 상태와 함께 표시합니다.

명령어

명령어 (로컬)
$ rbln-smdi discovery
명령어 (원격)
$ rbln-smdi discovery --ip 192.168.1.100 --port 50051
명령어 (JSON)
$ rbln-smdi discovery --jsons

출력 (예시)

장치 목록 (예시)
+-------------------------------------------------------------------------+
|                             Device Discovery                            |
+=====+======================================+============+======+========+
| NPU | Identifiers                          | FW Ver     | RSD  | Status |
+-----+--------------------------------------+------------+------+--------+
|   0 | rbln0                      RBLN-CA25 | CP:  1.2.3 | rsd0 | READY  |
|     | 0000:47:00.0                         | SMC: 4.5.6 |      |        |
|     | 00000000-0000-0000-0000-000000000001 |            |      |        |
+-----+--------------------------------------+------------+------+--------+

요약

온도, 전력, 메모리 사용량, NPU 사용률, 장치 상태를 표시합니다. -d 또는 -g 로 범위를 좁힐 수 있습니다.

명령어

명령어 (전체)
$ rbln-smdi status
명령어 (디바이스 필터)
$ rbln-smdi status -d 0,2
명령어 (JSON)
$ rbln-smdi status --jsons

출력 (예시)

장치 상태 (예시)
+---------------------------------------------------------------------------------------------------+
|                                           Device Status                                           |
+======+=====+======+========+=======+===========+======+==========+=============+=========+========+
| RSD  | NPU | Name | Device |  Temp | Power(mW) | Perf | DNC(MHz) |    Memory   | Util(%) | Status |
+------+-----+------+--------+-------+-----------+------+----------+-------------+---------+--------+
| rsd0 |   0 | CA25 | rbln0  | 45.23 |     100.5 |  0   |   1000   | 2.5/16.0 GB |   15.5  | READY  |
+------+-----+------+--------+-------+-----------+------+----------+-------------+---------+--------+

요약

NUMA 노드, CPU affinity, RSD 그룹, PCIe 링크 정보를 표시합니다.

명령어

명령어 (전체)
$ rbln-smdi topo
명령어 (그룹 필터)
$ rbln-smdi topo -g 0
명령어 (JSON)
$ rbln-smdi topo --jsons

출력 (예시)

장치 토폴로지 (예시)
+----------------------------------------------------------------------------------------------+
|                                       Device Topology                                        |
+===========+=====+========+==============+===========+==============+============+============+
| RSD Group | NPU | Device |   PCI BDF    | NUMA Node | CPU Affinity | PCIe Speed | PCIe Width |
+-----------+-----+--------+--------------+-----------+--------------+------------+------------+
| rsd0      |   0 | rbln0  | 0000:47:00.0 |     0     | 0-63         |  16 GT/s   |    x16     |
+-----------+-----+--------+--------------+-----------+--------------+------------+------------+

요약

커널 이벤트 이력과 코어덤프 항목을 함께 표시합니다. --type 으로 한쪽만 조회할 수 있습니다.

명령어

명령어 (모두)
$ rbln-smdi journal
명령어 (이벤트만)
$ rbln-smdi journal --type event
명령어 (코어덤프만)
$ rbln-smdi journal --type coredump

출력 (예시)

이벤트 / 코어덤프 (예시)
+-------------------------------------------------------------------------------------+
|                                        Events                                       |
+=====+==========+=============+=====================+=============+==========+=======+
| IDX | DEV NAME |     TYPE    |       UTC TIME      | KERNEL TIME |  DATA1   | DATA2 |
+-----+----------+-------------+---------------------+-------------+----------+-------+
|  0  |  rbln0   | NO_RESPONSE | 2026-01-15 10:30:45 |  12345.678  | CP_EVENT |  0x0  |
+-----+----------+-------------+---------------------+-------------+----------+-------+

+-------------------------------------------------------------------------------+
|                                   Coredumps                                   |
+=====+==========+=====================+========================================+
| IDX | DEV NAME |      TIMESTAMP      |                  PATH                  |
+-----+----------+---------------------+----------------------------------------+
|  0  |  rbln0   | 2026-01-15 10:25:12 | /var/lib/rebellions/coredump/rbln0/... |
+-----+----------+---------------------+----------------------------------------+

요약

RSD 그룹을 조회·생성·소멸합니다. 생성 시 --attach 로 그룹-local NPU ID 를 지정합니다. --destroy all 은 모든 그룹을 소멸합니다.

명령어

명령어 (목록)
$ rbln-smdi group
명령어 (생성)
$ rbln-smdi group --create 1 --attach 0,1
명령어 (소멸)
$ rbln-smdi group --destroy 1
명령어 (전체 소멸)
$ rbln-smdi group --destroy all

출력 (예시)

RSD 그룹 (예시)
+------------------------------------------------+
|                   RSD Groups                   |
+==========+============+=========+==============+
| Group ID | Group Name | NPU IDs | Device Count |
+----------+------------+---------+--------------+
|    1     |    rsd1    |   0,1   |      2       |
+----------+------------+---------+--------------+

요약

데몬의 런타임 설정 값을 조회하거나 변경합니다. 변경 사항은 데몬 재시작 없이 즉시 반영됩니다.

명령어

명령어 (전체)
$ rbln-smdi config
명령어 (조회)
$ rbln-smdi config --get max_events_per_dev
명령어 (변경)
$ rbln-smdi config --set max_events_per_dev --value 2000

출력 (예시)

전체 설정 값 (예시)
+----------------------------+
|           Config           |
+----------------------------+
| RSMD Ver: 3.2.0            |
| max_events_per_dev: 1000   |
| max_coredumps_per_dev: 200 |
| log_level: 6               |
+----------------------------+
값 조회 (예시)
+--------------------------+
|          Config          |
+--------------------------+
| max_events_per_dev: 1000 |
+--------------------------+
값 변경 (예시)
+--------------------------+
|     Config (updated)     |
+--------------------------+
| max_events_per_dev: 2000 |
+--------------------------+

요약

특정 장치 또는 모든 장치를 리셋합니다. 데몬이 --allow-reset 플래그로 실행 중이어야 합니다.

명령어

명령어 (단일 장치)
$ rbln-smdi reset rbln0
명령어 (모든 장치)
$ rbln-smdi reset all
명령어 (원격 데몬)
$ rbln-smdi reset rbln0 --ip 192.168.1.100 --port 50051

출력 (예시)

리셋 결과 (예시)
device rbln0 reset succeeded

실패 시

리셋 결과 (실패 예시)
device rbln0 reset failed

접근 제어 및 mTLS

이 절은 mTLS 와 접근 제어를 사용해 RSMD 를 운영하는 데 필요한 설정을 데몬 측과 클라이언트 측으로 나누어 다룹니다. 양쪽이 일관되게 구성되어야 보안 채널이 성립합니다.

Check the current mode

sudo systemctl status rbln-smd
데몬의 commandline에 보이는 플래그를 아래 "운영 모드" 표와 매칭하세요. 플래그가 없으면 기본 "모니터링 전용" 모드입니다.

데몬 (rbln-smd) 설정

rbln-smd 는 세 개의 독립 플래그와 인증서 디렉터리로 전송 보안과 접근 제어를 구성합니다. 데몬 시작 시 systemd 유닛 또는 CLI 옵션으로 지정합니다.

접근 제어 플래그

플래그 목적
--mtls mTLS 모드 활성화. RBLN_SMD_PORT 에 TLS 전용 채널을 엽니다. 미지정 시 insecure 채널이 열립니다.
--allow-reset 장치 리셋(resetDevice, resetAllDevice) 허용. 미지정 시 리셋 호출은 항상 거부됩니다.
--allowlist <path> 2-tier allowlist 파일. 어떤 클라이언트가 데몬에 접근할 수 있는지, 그리고 누가 리셋을 호출할 수 있는지 제한합니다.

운영 모드

모드 플래그 동작
모니터링 전용 (기본) (없음) insecure 채널, 리셋 거부
Insecure + 리셋 --allow-reset insecure 채널, 모든 클라이언트가 리셋 가능
mTLS 모니터링 --mtls TLS 전용 채널, 리셋 거부
mTLS + 리셋 --mtls --allow-reset TLS 전용 채널, mTLS 클라이언트는 리셋 가능
제한 접근 --allow-reset -a /path/to/allowlist allowlist 등재 클라이언트만, privileged tier 만 리셋

Warning

--mtls 만 단독으로 사용하면 신뢰된 CA 가 서명한 인증서를 가진 모든 클라이언트가 리셋을 제외한 API 에 접근할 수 있습니다. 클라이언트별 접근 제한이 필요하면 --allowlist 와 함께 사용하세요.

Allowlist

Allowlist 는 [basic][privileged] 두 섹션을 가진 INI 형식 파일입니다. 지정한 파일이 없으면 데몬이 안내 주석이 포함된 템플릿을 자동 생성합니다.

# rbln-smd allowlist configuration
# Changes take effect on the next gRPC request (no restart needed).

[basic]
# 리셋 외 호출 (getDeviceList, getVersion, getHWInfo 등)
192.168.1.0/24
::1
monitoring-service

[privileged]
# 모든 작업 (resetDevice / resetAllDevice 포함)
# [privileged] 는 [basic] 접근을 포함합니다.
10.0.0.1
admin-client

지원하는 entry 유형:

  • IPv4 주소: 192.168.1.100
  • IPv4 CIDR: 192.168.10.0/24
  • IPv6 주소: ::1
  • IPv6 CIDR: fe80::/10
  • CN 문자열: client-service-name (mTLS 채널에서만 평가)

채널 규칙:

  • Insecure 채널: IP / CIDR entry 만 평가됩니다.
  • mTLS 채널: 다음 순서로 평가하며 가장 먼저 매치된 단계의 결과를 반환합니다.

    1. CN 이 [privileged] 에 매치 → privileged
    2. CN 이 [basic] 에 매치 → basic
    3. IP / CIDR 이 [privileged] 에 매치 → privileged
    4. IP / CIDR 이 [basic] 에 매치 → basic
    5. 매치 없음 → 거부

    한 클라이언트가 CN 과 IP 양쪽에 등재되면 더 앞 단계의 결과가 반영됩니다. 예를 들어 CN 이 [basic] 에 있고 IP 가 [privileged] 에 있으면 결과는 basic 입니다.

Allowlist 파일은 매 gRPC 요청 시 mtime 으로 변경 여부를 검사합니다. 변경 사항은 데몬 재시작 없이 다음 요청부터 반영됩니다. 어느 섹션에도 등재되지 않은 entity 는 모니터링 API 를 포함한 모든 접근이 거부됩니다.

서버 인증서

--mtls 활성화 시 데몬이 인증서 디렉터리에서 다음 세 개 파일을 읽습니다:

파일명 용도
rsmd_ca.crt 클라이언트 인증서를 검증할 CA 인증서
rsmd_server.crt 서버 인증서
rsmd_server.key 서버 개인 키

데몬은 다음 우선순위로 디렉터리를 결정합니다:

  1. --cert <dir> CLI 플래그
  2. RSMD_CERT_PATH 환경 변수
  3. OS 기본 경로 — Debian / Ubuntu 계열은 /etc/ssl/certs/, RHEL / CentOS / Fedora 계열은 /etc/pki/tls/certs/

개인 키 (rsmd_server.key) 는 데몬 외 사용자가 읽지 못하도록 권한을 좁히세요 (예: 데몬 실행 사용자 소유 + 0600). 보안상 심볼릭 링크는 거부됩니다 (O_NOFOLLOW).

클라이언트 (rbln-smdi) 설정

rbln-smdi 는 데몬에 mTLS 채널로 접속할지 여부와 사용할 인증서를 다음 항목으로 결정합니다. 데몬이 --mtls 로 실행 중인 경우 클라이언트도 TLS 를 활성화해야 합니다.

TLS 활성화

TLS 채널 사용과 인증서 위치는 다음 우선순위로 결정됩니다:

  1. --tls <path> CLI 플래그 — 이번 호출에 한해 TLS 채널을 사용하고 지정 경로의 인증서로 연결합니다. .crt / .key 파일을 가리키거나 확장자를 제외한 base path 를 받습니다.
  2. RSMD_IF_CERT_PATH 환경 변수 — 위와 동일한 base path 형식. shell 세션 단위로 적용됩니다.
  3. ~/.rbln-smdi/configsecure=truecert_path 키 — 영구 설정으로, 이후 모든 호출에 자동 적용됩니다.

--tlsRSMD_IF_CERT_PATH 는 지정 경로에 파일이 없으면 즉시 오류로 종료합니다. cert_path 는 fallback 으로만 동작하며 파일이 없으면 비활성화됩니다. 세 항목이 모두 비활성이면 클라이언트는 insecure 채널로 연결합니다.

클라이언트 인증서

클라이언트가 mTLS 채널을 사용할 때 다음 세 개 파일을 읽습니다:

파일명 용도
rsmd_ca.crt 서버 인증서를 검증할 CA 인증서
rsmd_client.crt 클라이언트 인증서
rsmd_client.key 클라이언트 개인 키

심볼릭 링크는 거부됩니다 (O_NOFOLLOW). 클라이언트별 접근 제한이 필요한 경우 서버 측 allowlist 에 클라이언트 인증서의 CN 값을 등재합니다.

인증서 갱신

기존 경로에 새 인증서를 덮어쓰는 경우, 서버 측은 데몬 재시작이 필요하며 짧은 중단이 발생합니다. 클라이언트 측은 다음 호출부터 새 인증서를 읽습니다.

새 경로로 옮기는 경우, 서버는 RSMD_CERT_PATH 또는 --cert 를 새 디렉터리로 갱신한 뒤 데몬을 재시작합니다. 클라이언트는 RSMD_IF_CERT_PATH 또는 config 의 cert_path 를 갱신합니다.

클라이언트 측 인증서만 교체할 때는 데몬 재시작 없이 진행할 수 있습니다.


텔레메트리 단위

RSMD는 텔레메트리 데이터에 대해 다음 단위를 사용합니다:

  • 온도: 밀리-섭씨로 표현 (1000으로 나누면 °C)
  • 전력: 마이크로-와트로 표현 (1,000,000으로 나누면 와트)
  • 메모리: GB (기가바이트)로 표현
  • 클럭: MHz (메가헤르츠)로 표현
  • 사용률: 백분율 (0-100)로 표현

CLI 도구는 자동으로 이를 사람이 읽기 쉬운 단위로 변환합니다.


권장 사항

  1. 정기 모니터링: 스케줄된 스크립트를 사용하여 장치 상태 메트릭을 지속적으로 모니터링
  2. 이벤트·코어덤프 보존 설정: 디스크 가용량에 맞춰 RSMD_MAX_EVENTS_PER_DEVRSMD_MAX_COREDUMPS_PER_DEV 를 조정
  3. 네트워크 보안: 로컬 접근에는 Unix 도메인 소켓을, 원격 접근에는 --mtls--allowlist 조합을 권장합니다. TCP 포트는 방화벽 규칙으로 추가 제한하세요.
  4. 오류 처리: 결과를 사용하기 전에 API 응답의 err_status 필드를 확인
  5. 로그 검토: 이벤트 로그를 주기적으로 검토하여 이상 징후와 패턴을 식별

참고 자료

  • gRPC 정의: 프로토콜 버퍼 정의 파일(rbln_smd.proto)은 일반적으로 /opt/rebellions/etc/ 또는 시스템 설정 디렉터리에 위치합니다. v4.0 까지는 rbln_services.proto 이름의 사본도 함께 설치됩니다.
  • Systemd 서비스: 서비스 유닛 파일은 /etc/systemd/system/rbln-smd.service 에 설치됩니다. 호환을 위한 alias /etc/systemd/system/rbln_daemon.service 는 동일한 데몬의 바이너리 복사본을 실행하며, v4.0 에서 제거될 예정입니다.