Mattermost 성능 알림 가이드#
Mattermost는 Mattermost 애플리케이션 서버의 성능 메트릭을 추적하기 위해 Prometheus 와 Grafana 를 사용하는 것을 권장합니다. 이 가이드의 목적은 시스템 상태 추적 설정 을 완료한 후 Grafana 대시보드에 알림을 설정하는 데 도움을 드리는 것입니다.
참고
성능 부하 분산을 위해 추가 서버가 추가된 5,000명 이상의 사용자가 있는 배포에 대해 성능 알림 설정을 강력히 권장합니다.
사전 요구사항#
Mattermost의 성능 모니터링을 설정하세요. 자세한 내용은 성능 모니터링 문서를 참조하세요.
알림을 받으려면 먼저 Grafana에서 알림 채널을 설정하세요. Mattermost에 자동으로 알림을 게시하도록 설정하는 방법은 다음과 같습니다:
Mattermost에서:
알림 채널을 생성하세요.
알림 채널을 위한 수신 웹훅 을 생성하고 URL을 복사하세요.
Grafana에서:
사이드바의 알림 아이콘 아래에서 연락처 를 선택하세요.
연락처 생성 을 선택하세요.
이름으로 Mattermost 알림 채널 을 입력하세요.
유형으로 Slack 을 선택하세요.
URL 필드에 웹훅 URL을 붙여넣으세요.
Mattermost에 알림이 게시될 때 멘션을 보내려면 멘션 필드에 @ 멘션을 포함하세요.
테스트 전송 을 눌러 알림을 테스트하세요.
이메일 알림도 받고 싶다면 이 지침 을 따라 설정할 수 있습니다.
알림 구성#
Grafana용 Mattermost 대시보드 에는 다음 차트에 대해 부분적으로 사전 구성된 알림이 포함되어 있습니다:
CPU 사용률
메모리 사용량
Goroutine 수
초당 API 오류 수
평균 API 요청 시간
알림을 구성하려면 적절한 임계값을 설정하고 알림을 활성화하세요. 알림 활성화는 각 차트에 대해 동일하지만, 올바른 임계값 설정은 차트별로 더 잘 처리되는 일부 변동이 있을 수 있습니다.
각 차트에 대해 차트 이름을 선택한 다음 편집 을 선택하세요:
알림 탭을 선택하세요:
아래 섹션에서 설명할 알림 임계값은 조건 아래의 마지막 필드입니다(위 스크린샷에서 600으로 설정된 필드).
각 개별 차트의 임계값 설정 방법은 아래 섹션을 참조하세요. 사용자 정의 알림 조건을 추가하려면 여기에서 구성하세요.
모든 알림에 대한 알림을 활성화하려면 왼쪽의 알림 탭을 선택한 다음 보내기 아래에서 Mattermost 알림 채널 을 선택하세요:
알림에 더 많은 컨텍스트를 추가하려면 메시지를 입력하세요.
기본적으로 알림은 차트의 지난 1분 평균을 확인하여 해당 값이 임계값을 초과하는지 확인하도록 구성됩니다. 임계값을 초과하면 알림이 트리거됩니다. 지난 1분의 평균이므로 임계값을 초과하는 작은 스파이크가 반드시 알림을 발생시키지는 않습니다. 이는 사용량의 자연스러운 스파이크로 인한 오탐지를 방지하는 데 도움이 됩니다. 각 차트의 알림 상태는 1분마다 평가됩니다.
사용 가능한 차트#
아래 섹션에서는 각 차트에 대해 더 자세히 설명합니다.
CPU 사용률#
CPU 사용률은 매우 직관적입니다. CPU 사용률은 앱 서버의 CPU 사용량을 백분율로 추적합니다. 최대 백분율은 앱 서버가 보유한 CPU 코어 또는 vCPU 수를 기반으로 합니다. 예를 들어, 4개의 CPU 코어가 있고 앱 서버가 4개의 코어 모두에서 100% 사용률을 보였다면, 해당 앱 서버에 대한 그래프는 400%를 표시할 것입니다.
평균 CPU 사용률과 앱 서버가 보유한 코어/vCPU 수를 기반으로 알림 임계값을 설정하는 것이 좋습니다. 지난 7일간의 차트를 살펴보세요. 최대 CPU 사용량(코어 * 100)과 현재 보이는 CPU 사용량 사이의 어딘가에 임계값을 설정하고 싶을 것입니다. 임계값을 낮게 설정할수록 더 많은 알림과 오탐지가 발생합니다. 임계값을 너무 높게 설정하면 문제가 심각해질 때까지 알림을 받지 못할 수 있습니다. 이 원칙은 차트에 관계없이 모든 알림에 적용됩니다.
예를 들어, 커뮤니티 서버에서는 임계값을 15%로 설정했습니다:
이 값은 최대 CPU 사용량보다 낮고 피크 시간의 평균 사용량보다 높습니다. 따라서 비정상적으로 높은 CPU 사용량이 발생하기 시작하면 알림을 받게 됩니다.
메모리 사용량#
메모리 사용량은 앱 서버가 사용 중인 RAM의 메가바이트를 추적합니다. CPU 사용률과 유사하게 임계값을 설정하세요: 최대 사용 가능한 메모리보다 낮고 피크 시간의 평균 사용량보다 높게 설정하세요.
커뮤니티 서버에서 알림을 설정한 방법은 다음과 같습니다:
Goroutine 수#
Goroutine은 다른 함수 및 메서드와 동시에 실행되는 함수 또는 메서드입니다. Goroutine은 생성 비용이 낮은 경량 스레드와 같습니다. Goroutine 수의 증가는 앱 서버의 성능을 측정하는 좋은 지표가 될 수 있습니다. 지속적인 증가는 앱 서버가 따라가지 못하고 작업을 완료하고 중지하는 것보다 더 빠르게 Goroutine을 생성하고 있음을 나타냅니다.
피크 부하 시간 동안 보이는 평균 Goroutine 수보다 높은 곳에 임계값을 설정하세요. 작은 스파이크는 일반적으로 걱정할 필요가 없습니다. 주의해야 할 것은 Goroutine의 통제되지 않은 증가입니다.
커뮤니티 서버에서 설정한 방법은 다음과 같습니다:
초당 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 Time to execute plugin hook handler in seconds.
# 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 Time to execute multiple plugin hook handler in seconds.
# 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 Time for the server to execute multiple plugin hook handlers in seconds.
# TYPE mattermost_plugin_multi_hook_server_time histogram
mattermost_plugin_multi_hook_server_time_bucket{le="0.005"} 1043
# HELP mattermost_plugin_api_time Time to execute plugin API handlers in seconds.
# 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 차트에 설정할 수 있습니다. 성능 모니터링 기능 문서 에 나열된 사용자 정의 메트릭을 검토하는 것을 권장합니다.