Mattermost 성능 경고 안내서
Enterprise 플랜에서 사용 가능
Cloud 와 self-hosted 배포판
이 기능은 레거시 Mattermost Enterprise Edition E20에서도 사용할 수 있습니다.
Mattermost은 Mattermost 애플리케이션 서버의 성능 지표를 추적하기 위해 Prometheus 및 Grafana 을 사용하는 것을 권장합니다. 이 안내서의 목적은 시스템 성능 추적을 설정한 후 그라파나 대시보드에서 경고를 설정하는 데 도움을 드리는 것입니다 .
Note
우리는 5,000명 이상의 사용자를 대상으로 한 배치에 대한 성능 경고 설정을 강력히 권장하며, 성능 로드 밸런싱을 위해 추가 서버가 추가된 경우에도 마찬가지입니다.
전제 조건
Mattermost를 위한 성능 모니터링을 설정하십시오. 더 자세한 내용은 성능 모니터링 문서를 참조하십시오.
알림을 받으려면 먼저 Grafana에서 알림 채널을 설정하십시오. 다음은 알림을 자동으로 Mattermost에 전송하도록 설정하는 방법입니다.
Mattermost에서:
알림 채널을 생성하십시오.
알림 채널을 위한 들어오는 웹훅 을 생성하고 URL을 복사하십시오.
Grafana에서:
사이드바의 알림 아이콘 아래에서 알림 채널 을 선택하십시오.
채널 추가 를 선택하십시오.
이름으로 Mattermost 알림 채널 을 입력하십시오.
유형으로 슬랙 을 선택하십시오.
URL 필드에 웹훅 URL을 붙여넣으십시오.
알림이 Mattermost에 게시될 때 @ 언급을 포함하려면 언급 필드에 추가하십시오.
알림을 테스트하려면 테스트 전송 을 누르십시오.
이메일 알림도 받고 싶다면, 다음 지침을 따르십시오 .
경고 설정
Grafana에 대한 Mattermost 대시보드 은 다음 차트에 대해 일부 부분적으로 사전 구성된 경고가 포함되어 있습니다:
CPU 사용률
메모리 사용량
고루틴 수
초당 API 오류 수
평균 API 요청 시간
경고를 설정하려면 적절한 임계값을 설정하고 알림을 활성화하십시오. 알림을 활성화하는 방법은 각 차트마다 동일하지만 올바른 임계값을 설정하는 것은 개별적으로 처리해야 하는 몇 가지 차이가 있을 수 있습니다.
각 차트에 대해 차트 이름을 선택한 후 편집 을 선택하십시오:
알림 탭을 선택하십시오:
임계값은 위의 스크린샷에서 600으로 설정된 조건 하위의 마지막 필드입니다.
독립적인 차트의 임계값 설정 방법은 아래 섹션을 참조하십시오. 사용자 지정 경고 조건을 추가하려면 여기에서 구성하십시오.
알림을 활성화하려면 왼쪽의 알림 탭을 선택한 후 Mattermost 알림 채널 을 보내기 로 선택하십시오:
경고에 더 많은 맥락을 추가하려면 메시지를 입력하십시오.
기본적으로 각 차트의 경고는 지난 1분간의 차트 평균을 확인하여 해당 값이 임계값을 초과하는지 여부를 확인합니다. 임계값을 초과하면 경고가 트리거됩니다. 지난 1분간의 평균값이므로 임계값을 초과하는 소규모의 급증은 경고를 유발시키지 않을 수 있습니다. 이는 사용량의 자연스러운 증가로 인해 발생하는 잘못된 양성을 방지하는 데 도움이 됩니다. 각 차트의 경고 상태는 매 분마다 평가됩니다.
사용 가능한 차트
아래 섹션에서 각 차트를 자세히 설명합니다.
CPU 사용률
CPU 사용률은 매우 직관적입니다. CPU 사용률은 앱 서버의 CPU 사용량을 백분율로 추적합니다. 최대 백분율은 앱 서버의 CPU 코어 또는 가상 CPU에 따라 달라집니다. 예를 들어, CPU 코어가 4개이고 앱 서버의 CPU 사용률이 네 개의 코어 모두 100%로 사용 중인 경우, 해당 앱 서버의 그래프는 400%를 표시합니다.
임계값을 설정할 때는 평균 CPU 사용률과 앱 서버의 CPU 코어/가상 CPU 수에 따라 설정하는 것이 좋습니다. 지난 7일 동안의 차트를 확인하면서 임계값을 최대 CPU 사용량(코어 * 100)과 관찰된 CPU 사용률 사이에 설정해야 합니다. 임계값을 낮게 설정할수록 더 많은 경고 및 따라서 더 많은 잘못된 양성을 받게 됩니다. 임계값을 너무 높게 설정하면 사태가 악화되기 전에 사건에 대한 경고를 받지 못할 수 있습니다. 차트와 관계없이 모든 경고에 동일한 원칙이 적용됩니다.
예를 들어, 커뮤니티 서버에서 임계값을 15%로 설정했습니다:
이 값은 최대 CPU 사용률보다 낮고 피크 시간의 평균 사용량보다 높습니다. 그렇기에 CPU 사용률이 비정상적으로 높아지면 경고를 받게 됩니다.
메모리 사용량
메모리 사용량은 앱 서버가 사용하는 RAM의 메가바이트를 추적합니다. CPU 사용률과 유사하게 임계값을 설정하십시오: 최대 사용 가능 메모리 이하 및 피크 시간에 대한 평균 사용량 이상으로 설정하십시오.
커뮤니티 서버에서 경고를 설정한 방법은 다음과 같습니다:
고루틴 수
고루틴은 다른 함수 및 메소드와 동시에 실행되는 함수 또는 메소드입니다. 고루틴은 낮은 생성 비용을 가진 경량 스레드와 같습니다. 고루틴의 수가 계속해서 증가하면 앱 서버의 성능을 측정하는 좋은 지표일 수 있습니다. 계속해서 증가하는 고루틴 수는 앱 서버가 따라잡지 못하고 고루틴을 생성하여 작업을 완료하고 중지하는 속도보다 빠르게 생성하고 있다는 것을 나타냅니다.
피크 로드 시간에 관찰된 고루틴 수의 평균 값보다 조금 높은 임계값을 설정하십시오. 작은 변동은 보통 걱정할 것이 없습니다. 고루틴이 제어되지 않고 계속해서 증가하는 것을 확인해야 합니다.
커뮤니티 서버에서의 설정은 다음과 같습니다:
1초당 API 오류 수
4xx 또는 5xx HTTP 응답 상태 코드는 REST API 오류로 간주됩니다. API 오류 자체가 필연적으로 문제가 있는 것은 아닙니다. 사용자 세션이 만료되거나 클라이언트가 리소스의 존재 여부를 요청하고 “404 Not Found” 응답을 받는 등, API 오류가 발생하는 다양한 정당한 이유가 있습니다. 설치 기반과 함께 확장되는 일부 API 오류가 발생하는 것은 정상입니다.
그러나 REST API에 대한 오류는 배포 및 기타 문제의 징후가 될 수 있습니다. 예를 들어, 앱 서버 중 하나가 어떤 이유로 제대로 배포되지 않으면 API 오류가 많이 발생할 수 있습니다. 다른 예로는 악의적인 봇이 잘못된 요청으로 API를 스팸하는 것입니다. 초당 API 오류에 대한 경고는 이러한 문제와 기타 문제를 잡을 수 있습니다.
우리 커뮤니티 서버에는 다음과 같이 설정되어 있습니다:
평균 API 요청 시간
평균 API 요청 시간은 Mattermost 앱 서버로의 REST API 요청이 완료되는 데 걸리는 평균 시간입니다. 앱 서버가 성능이 저하되기 시작하면 요청이 완료되기까지 걸리는 시간이 길어져 평균 요청 시간이 증가하는 것을 볼 수 있습니다. 데이터베이스가 앱 서버로부터의 부하를 견딜 수 없거나, 앱 서버와 프록시 간에 문제가 있을 수도 있습니다.
최대 부하 시간에 평균 요청 시간보다 약간 높은 경고 임계값을 설정해야 합니다.
우리 커뮤니티 서버에는 다음과 같이 설정되어 있습니다:
플러그인 후크
Prometheus를 사용하여 후크와 플러그인 API 호출을 추적할 수 있습니다. 아래는 서버 성능을 문제 해결하거나 모니터링할 때 유용한 후크 및 API Prometheus 메트릭의 몇 가지 예시입니다.
# HELP mattermost_plugin_hook_time 플러그인 후크 핸들러를 실행하는 데 걸리는 시간(초).
# TYPE mattermost_plugin_hook_time histogram
mattermost_plugin_hook_time_bucket{hook_name="ChannelHasBeenCreated",plugin_id="com.mattermost.demo-plugin",success="true",le="0.005"} 0
mattermost_plugin_hook_time_bucket{hook_name="ChannelHasBeenCreated",plugin_id="com.mattermost.demo-plugin",success="true",le="0.01"} 0
# HELP mattermost_plugin_multi_hook_time 여러 플러그인 후크 핸들러를 실행하는 데 걸리는 시간(초).
# TYPE mattermost_plugin_multi_hook_time histogram
mattermost_plugin_multi_hook_time_bucket{plugin_id="com.mattermost.custom-attributes",le="0.005"} 100
mattermost_plugin_multi_hook_time_bucket{plugin_id="com.mattermost.custom-attributes",le="0.01"} 100
# HELP mattermost_plugin_multi_hook_server_time 서버에서 여러 플러그인 후크 핸들러를 실행하는 데 걸리는 시간(초).
# TYPE mattermost_plugin_multi_hook_server_time histogram
mattermost_plugin_multi_hook_server_time_bucket{le="0.005"} 1043
# HELP mattermost_plugin_api_time 플러그인 API 핸들러를 실행하는 데 걸리는 시간(초).
# TYPE mattermost_plugin_api_time histogram
mattermost_plugin_api_time_bucket{api_name="AddUserToChannel",plugin_id="com.mattermost.plugin-incident-response",success="true",le="0.005"} 0
mattermost_plugin_api_time_bucket{api_name="AddUserToChannel",plugin_id="com.mattermost.plugin-incident-response",success="true",le="0.01"} 0
기타 경고
추가 경고가 필요하다면, 원하는 Grafana 차트에서 설정할 수 있습니다. 서버 성능 모니터링 기능 문서에 나열된 사용자 정의 메트릭을 검토하는 것을 권장합니다.