Calls 지표와 모니터링
Enterprise, Enterprise Advanced 플랜에서 사용할 수 있습니다.
이 가이드는 지표와 관측성 도구를 통해 Mattermost Calls의 성능과 상태를 모니터링하는 방법을 상세히 설명합니다. 통화 품질을 최적으로 유지하고 발생하는 문제에 신속히 대응하려면 효과적인 모니터링이 필수적입니다.
지표 개요
Mattermost Calls는 Calls 플러그인과 RTCD(실시간 통신 데몬) 서비스 모두에 대해 Prometheus를 통한 지표를 제공합니다. 이 지표를 통해 다음을 추적할 수 있습니다.
- 활성 통화 세션과 참가자
- 미디어 트랙 통계
- 연결 상태와 오류
- 리소스 사용량(CPU, 메모리, 네트워크)
- WebSocket 연결과 이벤트
지표는 다음 HTTP 엔드포인트를 통해 노출됩니다.
- Calls 플러그인:
/plugins/com.mattermost.calls/metrics - RTCD 서비스:
/metrics(기본값) 또는 설정된 엔드포인트
리소스 사용량 지표(CPU, 메모리, 네트워크)는 주로 외부 서비스(node-exporter)가 제공합니다.
Calls 플러그인의 지표는 기존 Mattermost 서버 지표 엔드포인트 아래의
/plugins/com.mattermost.calls/metrics하위 경로를 통해 노출됩니다. 이는 Listen address for performance 설정으로 제어되며, 기본 포트는8067입니다. 예:http://localhost:8067/plugins/com.mattermost.calls/metricsRTCD 서비스의
/metrics엔드포인트는 HTTP API를 통해 노출됩니다(예:http://localhost:8045/metrics).
모니터링 설정
Mattermost용 Prometheus와 Grafana 배포 방법은 성능 모니터링을 위한 Prometheus 및 Grafana 배포 가이드를 참고하세요.
Prometheus와 Grafana를 설정했다면, Calls 관련 서비스에서 지표를 수집하도록 Prometheus를 구성해야 합니다.
Prometheus 스크레이프 설정
prometheus.yml 설정 파일에 다음 잡을 추가합니다.
scrape_configs:
- job_name: 'calls-plugin'
metrics_path: /plugins/com.mattermost.calls/metrics
static_configs:
- targets: ['MATTERMOST_SERVER_IP:8067']
labels:
service_name: 'calls-plugin'
- job_name: 'rtcd'
metrics_path: /metrics
static_configs:
- targets: ['RTCD_SERVER_IP:8045']
labels:
service_name: 'rtcd'
- job_name: 'rtcd-node-exporter'
metrics_path: /metrics
static_configs:
- targets: ['RTCD_SERVER_IP:9100']
labels:
service_name: 'rtcd'
- job_name: 'calls-offloader-node-exporter'
metrics_path: /metrics
static_configs:
- targets: ['CALLS_OFFLOADER_SERVER_IP:9100']
labels:
service_name: 'offloader'
자리 표시자 IP 주소를 실제 서버 주소로 교체합니다.
MATTERMOST_SERVER_IP: Mattermost 서버의 IP 주소RTCD_SERVER_IP: RTCD 서버의 IP 주소CALLS_OFFLOADER_SERVER_IP: calls-offloader 서버의 IP 주소(배포한 경우)
지표 설정 안내: 위 설정에 나온 대로 service_name 레이블을 사용하세요. 이 레이블은 대시보드에서 지표를 정리하고 서비스를 올바르게 식별하는 데 도움이 됩니다.
- node_exporter: 선택 사항이지만 시스템 수준 지표(CPU, 메모리, 디스크, 네트워크)를 위해 권장합니다. 설치 방법은 node_exporter 설정 가이드를 참고하세요.
- calls-offloader: 통화 녹화·전사를 사용하는 경우에만 필요합니다.
Mattermost Calls Grafana 대시보드
이 지표를 시각화하려면 공식 Mattermost Calls Performance Monitoring 대시보드를 사용할 수 있습니다.
- Grafana에 직접 가져오려면 대시보드 ID
23225를 사용하세요. - 수동 가져오기나 커스터마이즈를 위해 Mattermost 성능 자산 저장소에서 JSON 소스로도 받을 수 있습니다.
모니터링해야 할 핵심 지표
RTCD 지표
프로세스 지표
다음 지표는 RTCD 프로세스의 상태와 리소스 사용량을 모니터링하는 데 도움이 됩니다.
rtcd_process_cpu_seconds_total: 총 CPU 사용 시간rtcd_process_open_fds: 열려 있는 파일 디스크립터 수rtcd_process_max_fds: 파일 디스크립터 최대 개수rtcd_process_resident_memory_bytes: 메모리 사용량(바이트)rtcd_process_virtual_memory_bytes: 사용 중인 가상 메모리
WebRTC 연결 지표
다음 지표는 WebRTC 연결과 미디어 흐름을 추적합니다.
rtcd_rtc_conn_states_total{state="X"}: 상태별 연결 수rtcd_rtc_errors_total{type="X"}: 유형별 RTC 오류 수rtcd_rtc_rtp_tracks_total{direction="X"}: RTP 트랙 수(수신/송신)rtcd_rtc_sessions_total: 활성 RTC 세션 총수
WebSocket 지표
다음 지표는 시그널링 채널을 추적합니다.
rtcd_ws_connections_total: 활성 WebSocket 연결 총수. 이는 RTCD와 Mattermost 사이의 연결이므로, 연결 수는 Mattermost 노드 수와 일치해야 합니다.rtcd_ws_messages_total{direction="X"}: WebSocket 메시지 수(송신/수신)
Calls 플러그인 지표
Calls 플러그인에도 다음 접두사로 유사한 지표가 제공됩니다.
- 프로세스 지표:
mattermost_plugin_calls_process_* - WebRTC 연결 지표:
mattermost_plugin_calls_rtc_* - WebSocket 지표:
mattermost_plugin_calls_websocket_* - 스토어 지표:
mattermost_plugin_calls_store_ops_total
성능 기준치
다음 성능 벤치마크는 다양한 부하 조건과 설정에서 측정한 RTCD 배포의 기준 지표를 제공합니다.
배포 사양
- 1x r6i.large nginx 프록시
- 3x c5.large Mattermost 앱 노드(HA)
- 2x db.x2g.xlarge RDS Aurora MySQL v8(쓰기 1대, 읽기 1대)
- 1x (c7i.xlarge, c7i.2xlarge, c7i.4xlarge) RTCD
- 2x c7i.2xlarge 부하 테스트 에이전트
애플리케이션 사양
- Mattermost v9.6
- Mattermost Calls v0.28.0
- RTCD v0.16.0
- 부하 테스트 에이전트 v0.28.0
미디어 사양
- 음성 샘플 비트레이트: 80Kbps
- 화면 공유 샘플 비트레이트: 1.6Mbps
결과
다음은 내부 성능 테스트를 기반으로 한 상세 벤치마크입니다.
| 통화 수 | 통화당 참가자 | 통화당 음소거 해제 | 화면 공유 | CPU(평균) | 메모리(평균) | 대역폭(수신/송신) | 인스턴스 유형(RTCD) |
|---|---|---|---|---|---|---|---|
| 1 | 1000 | 2 | 아니요 | 47% | 1.46GB | 1Mbps / 194Mbps | c7i.xlarge |
| 1 | 800 | 1 | 예 | 64% | 1.43GB | 2.7Mbps / 1.36Gbps | c7i.xlarge |
| 1 | 1000 | 1 | 예 | 79% | 1.54GB | 2.9Mbps / 1.68Gbps | c7i.xlarge |
| 10 | 100 | 1 | 예 | 74% | 1.56GB | 18.2Mbps / 1.68Gbps | c7i.xlarge |
| 100 | 10 | 2 | 아니요 | 49% | 1.46GB | 18.7Mbps / 175Mbps | c7i.xlarge |
| 100 | 10 | 1 | 예 | 84% | 1.73GB | 171Mbps / 1.53Gbps | c7i.xlarge |
| 1 | 1000 | 2 | 아니요 | 20% | 1.44GB | 1.4Mbps / 194Mbps | c7i.2xlarge |
| 1 | 1000 | 2 | 예 | 49% | 1.53GB | 3.6Mbps / 1.79Gbps | c7i.2xlarge |
| 2 | 1000 | 1 | 예 | 73% | 2.38GB | 5.7Mbps / 3.06Gbps | c7i.2xlarge |
| 100 | 10 | 2 | 예 | 60% | 1.74GB | 181Mbps / 1.62Gbps | c7i.2xlarge |
| 150 | 10 | 1 | 예 | 72% | 2.26GB | 257Mbps / 2.30Gbps | c7i.2xlarge |
| 150 | 10 | 2 | 예 | 79% | 2.34GB | 271Mbps / 2.41Gbps | c7i.2xlarge |
| 250 | 10 | 2 | 아니요 | 58% | 2.66GB | 47Mbps / 439Mbps | c7i.2xlarge |
| 1000 | 2 | 2 | 아니요 | 78% | 2.31GB | 178Mbps / 195Mbps | c7i.2xlarge |
| 2 | 1000 | 2 | 예 | 41% | 2.6GB | 7.23Mbps / 3.60Gbps | c7i.4xlarge |
| 3 | 1000 | 2 | 예 | 63% | 3.53GB | 10.9Mbps / 5.38Gbps | c7i.4xlarge |
| 4 | 1000 | 2 | 예 | 83% | 4.40GB | 14.5Mbps / 7.17Gbps | c7i.4xlarge |
| 250 | 10 | 2 | 예 | 79% | 3.49GB | 431Mbps / 3.73Gbps | c7i.4xlarge |
| 500 | 2 | 2 | 예 | 71% | 2.54GB | 896Mbps / 919Mbps | c7i.4xlarge |
지표 수집 문제 해결
RTCD 지표가 수집되고 있는지 확인
Prometheus가 RTCD 지표를 정상적으로 수집하고 있는지 확인하려면 다음 명령을 사용합니다.
curl http://PROMETHEUS_IP:9090/api/v1/label/__name__/values | jq '.' | grep rtcd
이 명령은 Prometheus에서 사용 가능한 모든 지표 이름을 조회한 뒤 RTCD 관련 지표만 필터링합니다.
RTCD 지표가 하나도 나오지 않으면 다음을 확인하세요.
- RTCD가 실행 중인지
- Prometheus가 RTCD 지표 엔드포인트를 스크레이프하도록 설정되어 있는지
- Prometheus에서 RTCD 지표 포트에 접근할 수 있는지(기본값:
8045)
Prometheus 스크레이프 대상 확인
Calls 관련 서비스가 모두 정상적으로 스크레이프되고 있는지 확인하려면 다음과 같이 합니다.
- Prometheus 웹 인터페이스를 엽니다(보통
http://PROMETHEUS_IP:9090). - Status > Targets로 이동합니다.
- 설정한 Calls 서비스를 찾습니다.
- Mattermost 서버(Calls 플러그인 지표용)
- RTCD 서비스
각 대상은 상태가 초록색 "UP"으로 표시되어야 합니다. 대상이 "DOWN"이거나 오류를 표시한다면 다음을 확인하세요.
- 해당 서비스가 실행 중인지 확인
- Prometheus와 대상 사이의 네트워크 연결 확인
- 지표 엔드포인트에 접근할 수 있는지 확인
그 밖의 Calls 문서
- Mattermost Calls 배포 가이드: 배포 옵션과 아키텍처 개요
- RTCD 설정과 구성: 전용 RTCD 서비스 설정에 관한 종합 가이드
- Calls Offloader 설정과 구성: 통화 녹화와 전사 설정 가이드
- Kubernetes에 Calls 배포: Kubernetes 환경에 Calls를 배포하는 상세 가이드
- Calls 로깅: Calls 로그와 클라이언트 진단 정보 수집에 관한 상세 안내
참고:
디스크 사용량과 보존 기간의 균형을 맞추어 Prometheus 스토리지를 설정하세요. 스토리지 여유가 빠듯하다면 보존 기간을 짧게 잡을 수 있고, 스토리지가 넉넉하다면 보존 기간을 더 길게 유지할 수 있습니다.