Calls 메트릭 및 모니터링
Mattermost v12.0요약
이 가이드는 메트릭과 관측 도구를 통해 Mattermost Calls의 성능과 상태를 모니터링하는 방법을 자세히 설명합니다. Mattermost Calls는 Calls 플러그인과 RTCD 서비스 모두에 대해 Prometheus를 통해 메트릭을 제공합니다.
사용 가능 플랜: 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하위 경로로 노출됩니다. 이 경로는 성능용 수신 주소 구성 설정으로 제어되며, 기본값은 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 구성에 다음 작업(job)을 추가하세요.
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 performance assets 리포지터리에서 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 <-> MM 연결에 대한 값이므로 연결 수는 MM 노드 수와 일치해야 합니다.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 배포의 기준선 메트릭을 제공합니다.
배포 사양
- r6i.large nginx 프록시 1대
- c5.large MM 애플리케이션 노드 3대(HA)
- db.x2g.xlarge RDS Aurora MySQL v8 2대(라이터 1대, 리더 1대)
- (c7i.xlarge, c7i.2xlarge, c7i.4xlarge) RTCD 1대
- c7i.2xlarge 부하 테스트 에이전트 2대
애플리케이션 사양
- 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 문서#
- Calls 배포 가이드: 배포 옵션과 아키텍처 개요
- RTCD 설정 및 구성: 전용 RTCD 서비스를 설정하기 위한 종합 가이드
- Calls Offloader 설정 및 구성: 통화 녹음 및 전사를 위한 설정 가이드
- 쿠버네티스에서 Calls 배포: 쿠버네티스 환경에 Calls를 배포하기 위한 상세 가이드
- Calls 로깅: Calls 로그와 클라이언트 진단 정보를 수집하는 방법에 대한 상세 안내
참고: 디스크 사용량과 보존 요구 사항의 균형을 맞추도록 Prometheus 스토리지를 구성하세요. 스토리지가 부족하다면 보존 기간을 짧게 설정할 수 있습니다. 스토리지가 충분하다면 보존 기간을 더 길게 유지할 수 있습니다.