Mattermost 로깅
모든 플랜 에서 사용 가능
Cloud 와 self-hosted 배포판
기본적으로 Mattermost는 콘솔과 mattermost.log
파일에 머신이 읽을 수 있는 JSON 형식으로 로그를 기록합니다.
비즈니스 관행 및 요구에 따라 시스템 콘솔 > 환경 > 로깅 또는 config.json
파일을 직접 편집하여 다음 로깅 옵션을 사용자 정의할 수 있습니다.
콘솔 로그
콘솔 로그는 표준 출력 스트림 (stdout)을 사용하여 콘솔에 작성된 상세 디버그 레벨 로그 메시지를 특징으로 합니다.
다음의 콘솔 로그를 사용자 정의하려면 시스템 콘솔 > 환경 > 로깅 또는 config.json
파일을 직접 편집하세요:
파일 로그
파일 로그는 시작 및 초기화 주변의 정보 레벨 로그 메시지 및 웹훅 디버그 메시지를 포함합니다. 파일은 ./logs/mattermost.log
에 저장되며, 100MB에서 회전되어 동일한 디렉터리의 별도 파일에 보관됩니다.
Note
매터모스트 엔터프라이즈 및 프로페셔널 고객은 추가적으로 syslog 및 TCP 소켓 대상지로 직접 로그를 기록할 수 있습니다.
시스템 관리자는 비즈니스 관행 및 요구 사항에 따라 다음과 같은 로깅 옵션을 사용자 정의할 수 있습니다. 이를 위해 시스템 콘솔 > 환경 > 로깅 으로 이동하거나 config.json
파일을 직접 편집할 수 있습니다.
로그 출력 정의
시스템 콘솔에서 JSON 형식으로 로그 출력을 정의하려면 환경 > 로깅 > 고급 로깅 또는 config.json
파일을 직접 편집하세요. 아래의 샘플 JSON을 참고하세요.
{
"console1": {
"Type": "console",
"Format": "json",
"Levels": [
{"ID": 5, "Name": "debug", "Stacktrace": false},
{"ID": 4, "Name": "info", "Stacktrace": false, "color": 36},
{"ID": 3, "Name": "warn", "Stacktrace": false},
{"ID": 2, "Name": "error", "Stacktrace": true, "color": 31},
{"ID": 1, "Name": "fatal", "Stacktrace": true, "color": 31},
{"ID": 0, "Name": "panic", "Stacktrace": true, "color": 31},
{"ID": 10, "Name": "stdlog", "Stacktrace": false}
],
"Options": {
"Out": "stdout"
},
"MaxQueueSize": 1000
},
"file1": {
"Type": "file",
"Format": "json",
"Levels": [
{"ID": 5, "Name": "debug", "Stacktrace": false},
{"ID": 4, "Name": "info", "Stacktrace": false},
{"ID": 3, "Name": "warn", "Stacktrace": false},
{"ID": 2, "Name": "error", "Stacktrace": true},
{"ID": 1, "Name": "fatal", "Stacktrace": true},
{"ID": 0, "Name": "panic", "Stacktrace": true}
],
"Options": {
"Compress": true,
"Filename": "mattermost_logging.log",
"MaxAgeDays": 1,
"MaxBackups": 10,
"MaxSizeMB": 100
},
"MaxQueueSize": 1000
},
"file2": {
"Type": "file",
"Format": "json",
"Levels": [
{"ID": 2, "Name": "error", "Stacktrace": true},
{"ID": 1, "Name": "fatal", "Stacktrace": true},
{"ID": 0, "Name": "panic", "Stacktrace": true}
],
"Options": {
"Compress": true,
"Filename": "mattermost_logging_errors.log",
"MaxAgeDays": 30,
"MaxBackups": 10,
"MaxSizeMB": 100
},
"MaxQueueSize": 1000
}
}
감사 로깅 (베타)
Note
Enterprise 플랜에서 사용 가능
기본적으로 Mattermost는 서버에 로컬로 감사 로그를 작성하지 않습니다. Mattermost에서 실험적인 감사 로깅을 활성화하고 사용자가 Mattermost 워크스페이스 내에서 수행된 활동 및 이벤트를 기록할 수 있습니다. 이는 Mattermost REST API 또는 mmctl에 대한 액세스와 같은 활동을 포함합니다.
Tip
Mattermost v9.3에서는 AD/LDAP 이벤트에 대한 고급 로깅을 별도로 활성화하고 사용자 정의할 수 있습니다.
로그는 호출자에 대한 대기 시간을 줄이기 위해 비동기적으로 기록되며, 일반 로깅과 별도로 저장됩니다.
대상에 쓰기 불가능한 단기간 동안, 감사 레코드는 구성 가능한 최대 레코드 용량으로 메모리에 버퍼링됩니다. 일반적인 감사 레코드 양을 기반으로 하면, 버퍼링되기까지 많은 시간이 소요됩니다. 이후 레코드는 삭제되며, 레코드 삭제 이벤트가 로깅됩니다.
감사 이벤트를 파일로 출력할지 여부 결정 , 감사 로깅 파일의 이름 및 경로 , 각 파일의 최대 크기 , 회전을 트리거하기 전의 최대 일수 , 유지할 회전된 파일의 최대 수 , GZIP를 사용하여 파일 압축 , 및 파일에 쓸 수 있는 감사 레코드 최대 큐/버퍼 사이즈 를 정의할 수 있습니다.
또한, 감사 로그 레코드를 console , local file , syslog , 그리고 TCP socket 과 같은 대상의 어떤 조합으로 출력할 수 있으며, 각 대상은 추가적인 사용자 정의가 가능합니다. 자세한 내용은 Advanced Logging 을 참조하십시오.
Warning
Mattermost v7.2부터 실험적인 감사 로깅 베타는 기존 릴리스와는 다르게 변경 사항이며, 이전 형식의 감사 로그를 새 형식으로 구문 분석하려는 경우에는 문제가 발생할 수 있습니다.
감사 로그 레코드의 형식과 콘텐츠가 변경되어, 표준 JSON 스키마 를 사용하여 모든 이벤트에 대해 표준화되었습니다.
감사 로그 레코드를 수용하거나 구문 분석하는 기존 도구를 수정해야 할 수 있습니다.
고급 로깅
Note
Enterprise 플랜에서 사용 가능
시스템 관리자는 로그 및 감사 레코드를 console , local file , syslog , 및 TCP socket 과 같은 대상의 어떤 조합으로 출력할 수 있습니다. 각 출력 대상에는 Mattermost 배포를 사용자 정의할 수 있는 추가 구성 옵션이 있습니다.
Tip
Mattermost v9.3부터 시스템 관리자는 환경 > 로깅 으로 이동하여 시스템 콘솔에서 멀티라인 JSON을 사용하여 고급 로깅 옵션을 구성할 수 있습니다.
또는 관리자는 멀티라인 JSON 또는 이스케이프된 JSON 문자열을 사용하여
config.json
파일의AdvancedLoggingJSON
섹션 내에서 고급 로깅을 구성할 수 있습니다.Mattermost 팀 에디션 고객은 감사 로그 레코드를 콘솔이나 파일에 출력할 수 있습니다.
고급 로깅 옵션은 다음을 구성할 수 있습니다:
인증 문제를 해결하기 위해 AD/LDAP에 대한 추적 로깅을 활성화합니다.
모니터링되는 파일에 오류 및 패닉을 캡처하여 경보를 트리거합니다.
디스크 공간의 양을 제한하면서 문제를 재현하기 위해 별도의 파일에 프로덕션 디버그 및 오류 로그를 캡처하고 로그 파일을 회전시킵니다.
사용자 워크플로 중에 액세스된 모든 API 엔드포인트를 감사합니다.
고급 로깅을 구성하는 단계는 다음을 포함합니다:
로그 출력 정의 을 멀티라인 JSON 또는 다른 구성 파일의 filespec으로 지정합니다.
대상 대상 지정, console , local file , syslog , 및 TCP socket 과 같은 어떤 조합의 대상.
고급 로그 출력 정의
아래 예에서 파일 출력은 평문으로 ./logs/audit.log
에 작성되며 모든 감사 로그 레벨 및 이벤트가 포함됩니다. 이전 로그는 1일 동안 유지되며, 한 번에 최대 10개의 백업 로그 파일이 유지됩니다. 로그는 최대 500MB의 크기에 도달하면 gzip을 사용하여 로테이션됩니다. 파일에 쓰는 동안 최대 1000개의 감사 레코드가 대기열에 추가됩니다.
"AdvancedLoggingJSON": {
"file_1": {
"Type": "file",
"Format": "plain",
"Levels": [
{ "id": 100, "name": "audit-api" },
{ "id": 101, "name": "audit-content" },
{ "id": 102, "name": "audit-permissions" },
{ "id": 103, "name": "audit-cli" }
],
"Options": {
"Compress": true,
"Filename": "./logs/audit.log",
"MaxAgeDays": 1,
"MaxBackups": 10,
"MaxSizeMB": 500
},
"MaxQueueSize": 1000
}
}
고급 로깅 구성은 멀티라인 JSON 대신 config.json 파일을 깔끔하게 유지하는 파일명으로 다른 구성 파일에 지정될 수 있습니다:
"AdvancedLoggingJSON": "/path/to/audit_log_config.json"
별도의 구성 파일은 멀티라인 JSON을 포함하고 있습니다.
아래 예에서 첫 번째 출력은 모든 감사 로그 레벨, 이벤트 및 명령 출력이 포함된 평문으로 콘솔로 작성됩니다. 필드 사이에는 |
구분 기호가 배치됩니다.
두 번째 출력은 최대 1일 동안 유지되며, 한 번에 최대 10개의 백업 로그 파일이 유지되며, 로그는 최대 500MB의 크기에 도달하면 GZIP을 사용하여 로테이션되며 파일에 쓰는 동안 최대 1000개의 감사 레코드가 대기열에 추가됩니다. 평문으로 JSON 형식 파일 ./logs/audit.log
로 작성됩니다.
audit_log_config.json
파일의 내용:
{
"sample-console": {
"type": "console",
"format": "plain",
"format_options": {
"delim": " | "
},
"levels": [
{ "id": 100, "name": "audit-api" },
{ "id": 101, "name": "audit-content" },
{ "id": 102, "name": "audit-permissions" },
{ "id": 103, "name": "audit-cli" }
],
"options": {
"out": "stdout"
},
"maxqueuesize": 1000
},
"sample-file": {
"type": "file",
"format": "json",
"levels": [
{ "id": 100, "name": "audit-api" },
{ "id": 101, "name": "audit-content" },
{ "id": 102, "name": "audit-permissions" },
{ "id": 103, "name": "audit-cli" }
],
"options": {
"compress": true,
"filename": "./logs/audit.log",
"max_age": 1,
"max_backups": 10,
"max_size": 500
},
"maxqueuesize": 1000
}
}
대상 대상 지정
로그 레코드는 대부분의 로그 집계기 및 다른 로그 분석 도구를 지원하여 추가 소프트웨어가 필요하지 않은 대부분의 로그 대상을 지원하는 것을 고려하여, console , local file , syslog , 및 TCP socket 대상 중 어떤 조합이든지로 보낼 수 있습니다.
시스템 관리자는 여러 로그 대상을 정의할 수 있습니다:
로그 출력을 파일 및 로그 집계기에 미러링하여 신뢰성을 높입니다.
특정 항목을 특정 대상에 기록합니다. 예를 들어, 모든 “audit-content” 레코드를 다른 대상으로 라우팅할 수 있습니다.
관리자는
type
을none
으로 설정하여 로그 대상을 일시적으로 비활성화할 수도 있습니다.
형식 환경 설정
시스템 관리자는 대상별 로그 포맷팅을 제어할 수 있습니다.
일반 로그 형식 구성 옵션
키 |
타입 |
설명 |
disable_timestamp |
bool |
타임스탬프의 출력을 비활성화합니다. 기본값은 |
disable_level |
bool |
레벨 이름의 출력을 비활성화합니다. 기본값은 |
disable_msg |
bool |
메시지 텍스트의 출력을 비활성화합니다. 기본값은 ``false``입 니다. |
disable_fields |
bool |
모든 필드의 출력을 비활성화합니다. 기본값은 |
disables_stacktrace |
bool |
스택 트레이스의 출력을 비활성화합니다. 기본값은 |
delim |
문자열 |
필드 사이에 배치되는 구분자입니다. 기본값은 공백 하나입니다. |
min_level_len |
숫자 |
최소 레벨 이름 길이입니다. 레벨 이름이 최소 길이보다 짧으면 공백으로 채워집니다. 기본값은 |
min_msg_len |
숫자 |
최소 메시지 길이입니다. 메시지 텍스트가 최소 길이보다 짧으면 공백으로 채워집니다. 기본값은 |
timestamp_format |
문자열 |
타임스탬프의 형식입니다. 기본값은 RFC3339 입니다. |
line_end |
문자열 |
대체 개행 문자입니다. 기본값은 |
enable_color |
bool |
색상을 지원하는 대상에 대해 색상을 활성화합니다. 기본값은 |
SON 로그 형식 구성 옵션
키 |
타입 |
설명 |
disable_timestamp |
bool |
타임스탬프 출력을 비활성화합니다. 기본값은 ``false``입니다. |
disable_level |
bool |
로그 레벨 표시 이름의 출력을 비활성화합니다. 기본값은 ``false``입니다. |
disable_msg |
bool |
메시지 텍스트의 출력을 비활성화합니다. 기본값은 ``false``입니다. |
disable_fields |
bool |
모든 필드의 출력을 비활성화합니다. 기본값은 ``false``입니다. |
disables_stacktrace |
bool |
스택 트레이스의 출력을 비활성화합니다. 기본값은 ``false``입니다. |
timestamp_format |
문자열 |
타임스탬프의 형식입니다. 기본값은 RFC3339 입니다. |
GELF 로그 형식 구성 옵션
키 |
타입 |
설명 |
hostname |
문자열 |
로그 레코드에 사용자 정의 호스트 이름을 출력합니다. 생략하면 호스트 이름은 운영 체제에서 가져옵니다. |
로그 레벨 및 이벤트 구성
키 |
타입 |
설명 |
id |
숫자 |
로그 레벨의 고유 식별자입니다. |
name |
문자열 |
로그 레벨의 이름입니다. |
stacktrace |
bool |
스택 트레이스를 출력합니다. 기본값은 ``false``입니다. |
color |
숫자 |
로그 레코드의 일부를 출력하는 데 사용되는 ANSI 색상 코드입니다. 지원되는 값은 다음과 같습니다:
|
로그 레벨
ID |
이름 |
설명 |
100 |
|
API 이벤트 |
101 |
|
콘텐츠 변경. 이 로그 레벨은 다른 감사 로그 레벨보다 훨씬 더 많은 레코드를 생성할 수 있습니다. |
102 |
|
권한 변경 |
103 |
|
CLI 작업 |
140 |
|
AD/LDAP 인증 오류 |
141 |
|
AD/LDAP 인증 경고 |
142 |
|
AD/LDAP 인증 정보 로그 |
143 |
|
AD/LDAP 인증 디버그 로그 |
144 |
|
AD/LDAP 인증 추적 로그. Mattermost v9.3부터 |
대상별 설정 구성
콘솔 대상 구성 옵션
콘솔 대상은 stdout
또는 stderr
가 될 수 있습니다.
The standard output stream,
stout
, is typically used for command output that prints the results of a command to the user.The standard error stream,
sterr
, is typically used to print any errors that occur when a program is running.
파일 대상 구성 옵션
파일 대상은 크기 및/또는 지속 기간에 의해 트리거된 로테이션 및 압축을 지원합니다.
키 |
타입 |
설명 |
filename |
문자열 |
출력 파일의 전체 경로입니다. |
max_size |
숫자 |
로그 파일이 회전되기 전에 최대 크기(메가바이트)입니다. 기본값은 |
max_age |
숫자 |
파일 이름에 인코딩된 타임스탬프를 기준으로 이전 로그 파일을 유지하는 최대 일 수입니다.
기본값은 파일을 삭제하지 않는 |
max_backups |
숫자 |
유지할 이전 로그 파일의 최대 수입니다. 기본값은 모든 이전 로그 파일을 보존하는 |
compress |
bool |
gzip 를 사용하여 로테이트된 로그 파일을 압축합니다. 기본값은 |
Syslog 대상 구성 옵션
Note
Enterprise 플랜에서 사용 가능
Syslog 대상은 로컬 및 원격 시스로그 서버를 지원하며 TLS 전송 여부에 따라 다릅니다. Syslog 대상 지원은 Mattermost Enterprise에서 제공됩니다.
키 |
타입 |
설명 |
host |
문자열 |
로그 레코드를 수신하는 서버의 IP 또는 도메인 이름입니다. |
port |
숫자 |
로그 레코드를 수신하는 서버의 포트 번호입니다. |
tls |
bool |
로그 레코드를 수신하는 서버에 대한 TLS 연결을 생성합니다. 기본값은 |
cert |
문자열 |
서버와의 TLS 연결을 설정할 때 사용할 인증서 파일(.pem)의 경로입니다. |
insecure |
bool |
Mattermost가 서버에서 제시된 모든 인증서와 해당 인증서의 호스트 이름을 수용합니다. 기본값은 |
TCP 소켓 대상 구성 옵션
Note
Enterprise 플랜에서 사용 가능
TCP 소켓 대상은 IP 주소 또는 도메인 이름, 포트 및 선택적 TLS 인증서로구성할 수 있습니다. TCP 소켓 대상 지원은 Mattermost Enterprise에서제공됩니다.
키 |
타입 |
설명 |
host |
문자열 |
로그 레코드를 수신하는 서버의 IP 또는 도메인 이름입니다. |
port |
숫자 |
로그 레코드를 수신하는 서버의 포트 번호입니다. |
tls |
bool |
로그 레코드를 수신하는 서버에 대한 TLS 연결을 생성합니다. 기본값은 |
cert |
문자열 |
서버와의 TLS 연결을 설정할 때 사용할 인증서 파일(.pem)의 경로입니다. |
insecure |
bool |
Mattermost가 서버에서 제시된 모든 인증서와 해당 인증서의 호스트 이름을 수용합니다. 기본값은 |
tag |
문자열 |
Syslog 태그 필드입니다. |
자주 묻는 질문
Mattermost에는 auditd
시스템 외에 감사 로그가 있습니까?
네. 자세한 내용은 감사 로깅 문서를 참조하세요.
syslog가 대상으로 구성된 경우 데이터 발신자의 IP 주소가 포함되나요(즉, Mattermost 앱 노드)?
네. 그것은 syslog 데몬(수신기)의 기능입니다. 일반적으로 모든 로그 라인에는 타임스탬프와 데이터를 보내는 노드의 호스트 이름이 접두어로 붙습니다. 예를 들어, 로그 라인은 다음과 같이 시작합니다: Nov 28 10:56:59 tower kernel: [1072437.431123] ....
, 여기서 ``tower``는 로그 라인을 생성한 서버의 호스트 이름입니다.
감사 로그가 활성화되면 관리자가 감사 로그 설정을 비활성화하거나 수정하는 이벤트를 추적할 수 있나요?
네, 그러나 감사 로그가 어떻게 구성되었는지에 따라 달라집니다. 감사 로그 구성은 REST API, mmctl, 시스템 콘솔, 디스크의 파일 및 환경 변수를 통해 지정할 수 있습니다. REST API 또는 시스템 콘솔을 통한 변경 사항은 감사 기록이 있습니다. 그러나 Mattermost 서버는 설정 파일 또는 환경 변수를 통한 변경 사항을 캡처할 수 없습니다.
감사가 비활성화될 때 서버 로그에 서비스가 중지되거나 업데이트되는 것과 관련된 정보가 표시되나요?
네. REST API, mmctl 또는 시스템 콘솔을 통해 감사 로그 구성을 업데이트할 때, 감사 로그의 마지막 이벤트는 관리자가 서버의 구성을 업데이트한 것에 관한 것이어야 합니다. 이것은 시스템에서 어떤 작업이 발생했는지 및 누가 수행했는지를 보안 팀이 식별하는 데 도움이 됩니다.
수신 웹훅 세부 정보를 로그에서 제외하려면 어떻게해야 합니까?
`웹훅 디버깅 활성화 </configure/environment-configuration-settings.html#enable-webhook-debugging>`__를 참조하세요.
최대 로그 필드 크기를 어떻게 조정합니까?
`최대 필드 크기 </configure/environment-configuration-settings.html#maximum-field-size>`__를 참조하세요.