Mattermost 로깅

plans-img 모든 플랜 에서 사용 가능

deployment-img Cloudself-hosted 배포판

기본적으로 Mattermost는 콘솔과 mattermost.log 파일에 머신이 읽을 수 있는 JSON 형식으로 로그를 기록합니다.

비즈니스 관행 및 요구에 따라 시스템 콘솔 > 환경 > 로깅 또는 config.json 파일을 직접 편집하여 다음 로깅 옵션을 사용자 정의할 수 있습니다.

콘솔 로그

콘솔 로그는 표준 출력 스트림 (stdout)을 사용하여 콘솔에 작성된 상세 디버그 레벨 로그 메시지를 특징으로 합니다.

다음의 콘솔 로그를 사용자 정의하려면 시스템 콘솔 > 환경 > 로깅 또는 config.json 파일을 직접 편집하세요:

파일 로그

파일 로그는 시작 및 초기화 주변의 정보 레벨 로그 메시지 및 웹훅 디버그 메시지를 포함합니다. 파일은 ./logs/mattermost.log 에 저장되며, 100MB에서 회전되어 동일한 디렉터리의 별도 파일에 보관됩니다.

Note

매터모스트 엔터프라이즈 및 프로페셔널 고객은 추가적으로 syslog 및 TCP 소켓 대상지로 직접 로그를 기록할 수 있습니다. 시스템 관리자는 비즈니스 관행 및 요구 사항에 따라 다음과 같은 로깅 옵션을 사용자 정의할 수 있습니다. 이를 위해 시스템 콘솔 > 환경 > 로깅 으로 이동하거나 config.json 파일을 직접 편집할 수 있습니다.

콘솔 , 로컬 파일 , syslog , 및 TCP 소켓 을 대상으로 로그 레코드를 선택적으로 출력할 수 있으며, 각각 추가적인 사용자 정의가 가능합니다. 세부 정보는 고급 로깅 을 참조하세요.

로그 출력 정의

시스템 콘솔에서 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

plans-img-yellow Enterprise 플랜에서 사용 가능

기본적으로 Mattermost는 서버에 로컬로 감사 로그를 작성하지 않습니다. Mattermost에서 실험적인 감사 로깅을 활성화하고 사용자가 Mattermost 워크스페이스 내에서 수행된 활동 및 이벤트를 기록할 수 있습니다. 이는 Mattermost REST API 또는 mmctl에 대한 액세스와 같은 활동을 포함합니다.

Tip

Mattermost v9.3에서는 AD/LDAP 이벤트에 대한 고급 로깅을 별도로 활성화하고 사용자 정의할 수 있습니다.

  • 로그는 호출자에 대한 대기 시간을 줄이기 위해 비동기적으로 기록되며, 일반 로깅과 별도로 저장됩니다.

  • 대상에 쓰기 불가능한 단기간 동안, 감사 레코드는 구성 가능한 최대 레코드 용량으로 메모리에 버퍼링됩니다. 일반적인 감사 레코드 양을 기반으로 하면, 버퍼링되기까지 많은 시간이 소요됩니다. 이후 레코드는 삭제되며, 레코드 삭제 이벤트가 로깅됩니다.

또한, 감사 로그 레코드를 console , local file , syslog , 그리고 TCP socket 과 같은 대상의 어떤 조합으로 출력할 수 있으며, 각 대상은 추가적인 사용자 정의가 가능합니다. 자세한 내용은 Advanced Logging 을 참조하십시오.

Warning

  • Mattermost v7.2부터 실험적인 감사 로깅 베타는 기존 릴리스와는 다르게 변경 사항이며, 이전 형식의 감사 로그를 새 형식으로 구문 분석하려는 경우에는 문제가 발생할 수 있습니다.

  • 감사 로그 레코드의 형식과 콘텐츠가 변경되어, 표준 JSON 스키마 를 사용하여 모든 이벤트에 대해 표준화되었습니다.

  • 감사 로그 레코드를 수용하거나 구문 분석하는 기존 도구를 수정해야 할 수 있습니다.


고급 로깅

Note

plans-img-yellow Enterprise 플랜에서 사용 가능

시스템 관리자는 로그 및 감사 레코드를 console , local file , syslog , 및 TCP socket 과 같은 대상의 어떤 조합으로 출력할 수 있습니다. 각 출력 대상에는 Mattermost 배포를 사용자 정의할 수 있는 추가 구성 옵션이 있습니다.

Tip

  • Mattermost v9.3부터 시스템 관리자는 환경 > 로깅 으로 이동하여 시스템 콘솔에서 멀티라인 JSON을 사용하여 고급 로깅 옵션을 구성할 수 있습니다.

  • 또는 관리자는 멀티라인 JSON 또는 이스케이프된 JSON 문자열을 사용하여 config.json 파일의 AdvancedLoggingJSON 섹션 내에서 고급 로깅을 구성할 수 있습니다.

  • Mattermost 팀 에디션 고객은 감사 로그 레코드를 콘솔이나 파일에 출력할 수 있습니다.

고급 로깅 옵션은 다음을 구성할 수 있습니다:

  • 인증 문제를 해결하기 위해 AD/LDAP에 대한 추적 로깅을 활성화합니다.

  • 모니터링되는 파일에 오류 및 패닉을 캡처하여 경보를 트리거합니다.

  • 디스크 공간의 양을 제한하면서 문제를 재현하기 위해 별도의 파일에 프로덕션 디버그 및 오류 로그를 캡처하고 로그 파일을 회전시킵니다.

  • 사용자 워크플로 중에 액세스된 모든 API 엔드포인트를 감사합니다.

고급 로깅을 구성하는 단계는 다음을 포함합니다:

고급 로그 출력 정의

아래 예에서 파일 출력은 평문으로 ./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
    }
}

대상 대상 지정

로그 레코드는 대부분의 로그 집계기 및 다른 로그 분석 도구를 지원하여 추가 소프트웨어가 필요하지 않은 대부분의 로그 대상을 지원하는 것을 고려하여, console , local file , syslog , 및 TCP socket 대상 중 어떤 조합이든지로 보낼 수 있습니다.

시스템 관리자는 여러 로그 대상을 정의할 수 있습니다:

  • 로그 출력을 파일 및 로그 집계기에 미러링하여 신뢰성을 높입니다.

  • 특정 항목을 특정 대상에 기록합니다. 예를 들어, 모든 “audit-content” 레코드를 다른 대상으로 라우팅할 수 있습니다.

  • 관리자는 typenone 으로 설정하여 로그 대상을 일시적으로 비활성화할 수도 있습니다.

형식 환경 설정

시스템 관리자는 대상별 로그 포맷팅을 제어할 수 있습니다.

일반 로그 형식 구성 옵션

타입

설명

disable_timestamp

bool

타임스탬프의 출력을 비활성화합니다. 기본값은 false 입니다.

disable_level

bool

레벨 이름의 출력을 비활성화합니다. 기본값은 false 입니다.

disable_msg

bool

메시지 텍스트의 출력을 비활성화합니다. 기본값은 ``false``입 니다.

disable_fields

bool

모든 필드의 출력을 비활성화합니다. 기본값은 false 입니다.

disables_stacktrace

bool

스택 트레이스의 출력을 비활성화합니다. 기본값은 false 입니다.

delim

문자열

필드 사이에 배치되는 구분자입니다. 기본값은 공백 하나입니다.

min_level_len

숫자

최소 레벨 이름 길이입니다. 레벨 이름이 최소 길이보다 짧으면 공백으로 채워집니다. 기본값은 0 입니다.

min_msg_len

숫자

최소 메시지 길이입니다. 메시지 텍스트가 최소 길이보다 짧으면 공백으로 채워집니다. 기본값은 0 입니다.

timestamp_format

문자열

타임스탬프의 형식입니다. 기본값은 RFC3339 입니다.

line_end

문자열

대체 개행 문자입니다. 기본값은 n 입니다.

enable_color

bool

색상을 지원하는 대상에 대해 색상을 활성화합니다. 기본값은 false 입니다.

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 색상 코드입니다. 지원되는 값은 다음과 같습니다:

  • 검정: 30

  • 빨강: 31

  • 초록: 32

  • 노랑: 33

  • 파랑: 34

  • 마젠타: 35

  • 청록: 36

  • 흰색: 37

로그 레벨

ID

이름

설명

100

audit-api

API 이벤트

101

audit-content

콘텐츠 변경. 이 로그 레벨은 다른 감사 로그 레벨보다 훨씬 더 많은 레코드를 생성할 수 있습니다.

102

audit-permissions

권한 변경

103

audit-cli

CLI 작업

140

LDAPError

AD/LDAP 인증 오류

141

LDAPWarn

AD/LDAP 인증 경고

142

LDAPInfo

AD/LDAP 인증 정보 로그

143

LDAPDebug

AD/LDAP 인증 디버그 로그

144

LDAPTrace

AD/LDAP 인증 추적 로그. Mattermost v9.3부터 LdapSetings.trace 를 대체합니다.

대상별 설정 구성

콘솔 대상 구성 옵션

콘솔 대상은 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

숫자

로그 파일이 회전되기 전에 최대 크기(메가바이트)입니다. 기본값은 100 MB입니다.

max_age

숫자

파일 이름에 인코딩된 타임스탬프를 기준으로 이전 로그 파일을 유지하는 최대 일 수입니다. 기본값은 파일을 삭제하지 않는 0 입니다.

max_backups

숫자

유지할 이전 로그 파일의 최대 수입니다. 기본값은 모든 이전 로그 파일을 보존하는 0 입니다. 참고: max_age 를 구성하면 이 구성 값과 상관없이 이전 로그 파일이 삭제될 수 있습니다.

compress

bool

gzip 를 사용하여 로테이트된 로그 파일을 압축합니다. 기본값은 false 입니다.

Syslog 대상 구성 옵션

Note

plans-img-yellow Enterprise 플랜에서 사용 가능

Syslog 대상은 로컬 및 원격 시스로그 서버를 지원하며 TLS 전송 여부에 따라 다릅니다. Syslog 대상 지원은 Mattermost Enterprise에서 제공됩니다.

타입

설명

host

문자열

로그 레코드를 수신하는 서버의 IP 또는 도메인 이름입니다.

port

숫자

로그 레코드를 수신하는 서버의 포트 번호입니다.

tls

bool

로그 레코드를 수신하는 서버에 대한 TLS 연결을 생성합니다. 기본값은 false 입니다.

cert

문자열

서버와의 TLS 연결을 설정할 때 사용할 인증서 파일(.pem)의 경로입니다.

insecure

bool

Mattermost가 서버에서 제시된 모든 인증서와 해당 인증서의 호스트 이름을 수용합니다. 기본값은 false 입니다. 참고: 테스트 환경에서만 사용해야 하며, 프로덕션 환경에서는 사용하면 안 됩니다.

TCP 소켓 대상 구성 옵션

Note

plans-img-yellow Enterprise 플랜에서 사용 가능

TCP 소켓 대상은 IP 주소 또는 도메인 이름, 포트 및 선택적 TLS 인증서로구성할 수 있습니다. TCP 소켓 대상 지원은 Mattermost Enterprise에서제공됩니다.

타입

설명

host

문자열

로그 레코드를 수신하는 서버의 IP 또는 도메인 이름입니다.

port

숫자

로그 레코드를 수신하는 서버의 포트 번호입니다.

tls

bool

로그 레코드를 수신하는 서버에 대한 TLS 연결을 생성합니다. 기본값은 false 입니다.

cert

문자열

서버와의 TLS 연결을 설정할 때 사용할 인증서 파일(.pem)의 경로입니다.

insecure

bool

Mattermost가 서버에서 제시된 모든 인증서와 해당 인증서의 호스트 이름을 수용합니다. 기본값은 false 입니다. 참고: 테스트 환경에서만 사용해야 하며, 프로덕션 환경에서는 사용하면 안 됩니다.

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>`__를 참조하세요.