InfoGrab Docs

엔터프라이즈 검색

요약

Mattermost 데이터베이스 검색은 32GB RAM과 4 CPU를 갖춘 서버에서 약 200만 개 게시물에서 성능 저하를 보이기 시작합니다. Elasticsearch는 대규모 에코시스템과 커뮤니티 지원을 갖춘 잘 확립되고 널리 사용되는 검색 엔진으로, 빠르고 예측 가능한 검색 결과를 위한 클러스터 지원을 통해 엔터프라이즈 규모 배포에 최적화된 검색 성능, 전용 인덱싱 및 리소스 사용을 제공합니다.

Mattermost 데이터베이스 검색은 32GB RAM과 4 CPU를 갖춘 서버에서 약 200만 개 게시물에서 성능 저하를 보이기 시작합니다. Mattermost 서버가 250만 개 이상의 게시물에 도달할 것으로 예상된다면, 300만 개 게시물에 도달하기 전에 최적의 검색 성능을 위해 Elasticsearch 또는 AWS OpenSearch Service 를 활성화하는 것을 권장합니다. 두 도구 모두 매우 유능하며 엔터프라이즈 규모의 워크로드를 처리할 수 있습니다. 선택은 다음 요소에 따라 달라집니다:

  • 라이선싱 및 비용: AWS OpenSearch는 독점 라이선싱을 피하거나 비용 효율적인 솔루션을 선택하는 조직에 더 적합할 수 있습니다.
  • 기능 요구사항: Elasticsearch의 독점 기능(예: 고급 분석, 보안 스위트)은 강력한 기본 제공 기능이 필요한 조직에 더 적합할 수 있습니다.
  • 인프라 정렬: AWS OpenSearch는 AWS 중심 환경과 잘 맞으며, Elasticsearch는 더 광범위한 통합을 제공합니다.

Elasticsearch#

Elasticsearch는 대규모 에코시스템과 커뮤니티 지원을 갖춘 잘 확립되고 널리 사용되는 검색 엔진으로, 빠르고 예측 가능한 검색 결과를 위한 클러스터 지원을 통해 엔터프라이즈 규모 배포에 최적화된 검색 성능, 전용 인덱싱 및 리소스 사용을 제공합니다.

Mattermost 구현은 Elasticsearch클러스터 환경 에서 효율적인 데이터베이스 검색을 지원하는 분산형 RESTful 검색 엔진으로 사용합니다. Elasticsearch 서버를 위한 Mattermost 설정 및 구성 에 대한 자세한 내용을 알아보세요.

AWS OpenSearch Service#

AWS OpenSearch Service는 AWS 고객을 위한 Elasticsearch v7.10.x의 공식 후속 경로입니다. 실시간으로 데이터를 간단하고 비용 효율적으로 검색, 분석, 시각화할 수 있도록 AWS 클라우드에서 OpenSearch 클러스터를 쉽게 배포, 운영, 확장하는 완전 관리형 서비스입니다.

AWS OpenSearch Service는 Elasticsearch의 커뮤니티 주도 포크인 오픈 소스 OpenSearch 프로젝트를 기반으로 합니다. OpenSearch 서버를 위한 Mattermost 설정 및 구성 에 대한 자세한 내용을 알아보세요.

지원 경로#

사용 중인 버전에 따라 엔터프라이즈 검색의 다음 지원 경로를 검토하세요:

Elasticsearch v8 은 Mattermost v9.11부터 지원됩니다. Mattermost는 Elasticsearch v7.17+를 지원하지만, Elasticsearch v7 인스턴스를 v8.x로 업그레이드하는 것을 권장합니다. 업그레이드 세부사항은 Elasticsearch 업그레이드 문서를 참조하고, Mattermost 배포에 Elasticsearch를 사용하도록 구성하는 방법은 Elasticsearch 설정 문서를 참조하세요.

AWS OpenSearch Service는 AWS 고객을 위한 Elasticsearch v7.10.x의 공식 후속 경로로, 데이터를 실시간으로 간단하고 비용 효율적으로 검색, 분석, 시각화할 수 있는 방법을 제공합니다. 본질적으로 Elasticsearch v7.10.x의 연속이지만 AWS에 의해 오픈 소스로 유지관리됩니다. 장기 지원, 활발한 개발, AWS 클라이언트, 라이브러리 및 관리형 서비스와의 호환성을 제공합니다.

AWS OpenSearch로 업그레이드하는 방법은 이 페이지의 AWS Elasticsearch v7.10.x 탭을 참조하고, Mattermost 배포에 AWS OpenSearch를 사용하도록 구성하는 방법은 AWS OpenSearch 설정 문서를 참조하세요.

AWS의 관리형 서비스에서 Elasticsearch v7.10.x를 사용 중인 경우, 백엔드 인프라를 변경하지 않고 v8 클라이언트와 같은 새로운 Elasticsearch 클라이언트를 사용할 수 없습니다. AWS Elasticsearch v7.10.x를 사용하는 경우, 향후 호환성을 위해 AWS OpenSearch로 업그레이드 해야 합니다.

Elasticsearch v7.10.x에서 OpenSearch로의 마이그레이션 경로는 노력을 최소화하도록 설계되었습니다:

  1. OpenSearch에서 "호환성 모드"를 비활성화하세요.
  2. Mattermost 서버를 업그레이드하세요.
  3. Mattermost ElasticsearchSettings.Backend 구성 설정 값을 elasticsearch 에서 opensearch 로 수동으로 또는 mmctl 를 사용하여 업데이트하세요. 이 값은 시스템 콘솔을 사용하여 변경할 수 없습니다. 자세한 내용은 Mattermost 검색 백엔드 유형 구성 설정 문서를 참조하세요.
  4. Mattermost 서버를 재시작하세요.

자주 묻는 질문(FAQ)#

Elasticsearch 또는 AWS OpenSearch를 사용해야 하나요?#

아니요. 엔터프라이즈 검색 엔진은 클러스터 환경에서 효율적인 데이터베이스 검색을 실행하는 대규모 엔터프라이즈 배포를 위해 설계되었습니다. 기본 Mattermost 데이터베이스 검색은 데이터베이스 서버 사양에 따라 약 250만 개 게시물에서 성능 저하를 보이기 시작합니다. Mattermost 서버가 250만 개 이상의 게시물을 보유할 것으로 예상된다면, 최적의 검색 성능을 위해 Elasticsearch 또는 AWS OpenSearch를 사용하는 것을 권장합니다.

Elasticsearch 또는 OpenSearch를 Mattermost 서버와 같은 머신에 설치해야 하나요?#

아니요. Mattermost 서버와 별도의 전용 머신에 Elasticsearch 또는 AWS OpenSearch를 설치하는 것을 강력히 권장합니다.

어떤 유형의 인덱스가 생성되나요?#

Mattermost는 사용자, 채널, 게시물의 세 가지 유형의 인덱스를 생성합니다. 사용자와 채널은 각각 하나의 인덱스를 가집니다. 게시물은 날짜별로 여러 인덱스로 집계됩니다.

검색 인덱싱 작업을 일시 중지할 수 있나요?#

네. Mattermost v6.7부터 검색 인덱싱 작업을 재개할 수 있습니다. 검색 인덱싱 작업이 실행 중일 때 서버를 중지하면 작업이 대기 중 상태로 전환됩니다. 서버가 재시작될 때 작업이 재개됩니다. 시스템 관리자는 시스템 콘솔을 통해 인덱싱 작업을 취소할 수 있습니다.

인덱스 롤오버 정책을 정의할 수 있나요?#

AggregatePostsAfterDays 구성 설정은 기준 값을 정의합니다. 이 값 이전의 모든 게시물은 재인덱싱되어 더 새롭고 더 큰 인덱스로 집계됩니다. 기본 설정은 365일입니다.

Elasticsearch로 제공되는 새로운 검색 기능이 있나요?#

현재 Elasticsearch 구현은 데이터베이스 검색에서 현재 사용 가능한 검색 기능과 일치합니다. Mattermost 팀은 파일 이름 및 콘텐츠 검색, 날짜 필터, 연산자 및 수정자로 Elasticsearch 기능 세트를 확장하는 작업을 진행 중입니다.

내 파일은 Elasticsearch 또는 OpenSearch에 저장되나요?#

아니요. 파일과 첨부 파일은 저장되지 않습니다.

Elasticsearch 서버의 시스템 상태를 어떻게 모니터링하나요?#

이 Prometheus 익스포터를 사용하여 Elasticsearch에 대한 다양한 지표 를 모니터링할 수 있습니다: justwatchcom/elasticsearch_exporter.

Mattermost의 성능 모니터링 시스템이 사용하는 Prometheus에 맞게 특별히 작성되지는 않았지만 여러 팁과 모범 사례가 있는 Elasticsearch 성능 모니터링에 관한 이 기사 도 참조할 수 있습니다.

어떤 형식의 데이터가 Elasticsearch 또는 OpenSearch로 전송되나요?#

Mattermost는 엔티티를 인덱싱하고 쿼리하기 위해 JSON 메시지를 사용하는 REST API를 통해 Elasticsearch 또는 OpenSearch와 통신합니다.

얼마나 많은 데이터가 Elasticsearch 또는 OpenSearch로 전송되며 언제 전송되나요?#

메시지가 게시될 때마다, 채널이 생성될 때마다, 또는 사용자가 변경될 때마다(속성이 변경되는 경우, 예: 이름 변경이나 채널 참여/탈퇴) 해당 이벤트와 관련된 데이터가 Elasticsearch 또는 OpenSearch로 전송됩니다.

Elasticsearch 또는 OpenSearch를 통한 검색이 활성화된 경우, 모든 검색에서 쿼리가 생성됩니다. 자동 완성이 활성화된 경우, 메시지 작성 또는 사용자 검색과 관련된 모든 사용자 또는 채널 자동 완성에서 쿼리가 생성됩니다.

Mattermost가 Elasticsearch 또는 OpenSearch 중단을 어떻게 처리하나요?#

Mattermost v11.7부터 서버에는 Elasticsearch 및 OpenSearch 연결을 위한 자동 상태 모니터가 포함됩니다. 상태 모니터는 주기적인 상태 확인을 실행하고 연결 생명주기를 자동으로 관리합니다:

  • 상태 확인: 서버는 60초마다 검색 엔진 클러스터의 상태를 확인합니다. 3번 연속 상태 확인이 실패하면 엔진이 중지되고 검색이 데이터베이스로 폴백됩니다.
  • 첫 번째 실패 시 빠른 실패: 최초 상태 확인 실패 시 엔진이 즉시 비정상으로 표시되고 검색 요청이 데이터베이스로 라우팅됩니다. 이는 연속 실패 임계값에 도달하기 전에 발생하므로 사용자에게 미치는 중단이 최소화됩니다.
  • 자동 재시도: 검색 엔진을 사용할 수 없는 경우 서버는 15초부터 시작하여 최대 5분까지 두 배씩 증가하는 지수 백오프로 재연결을 시도합니다.
  • 자동 복구: 검색 엔진이 다시 사용 가능해지면 서버가 자동으로 재연결하고 검색 쿼리에 다시 사용합니다. 수동 개입이나 서버 재시작이 필요하지 않습니다.
  • 구성 변경: Elasticsearch 또는 OpenSearch 구성 설정이나 라이선스 변경 시 상태 모니터가 즉시 연결 상태를 재평가합니다.
  • 모니터링: mattermost_search_engine_status Prometheus 메트릭이 검색 엔진의 상태(1 = 정상 또는 구성되지 않음, 0 = 구성되었지만 사용 불가)를 보고합니다. 이 메트릭을 사용하여 검색 엔진 중단에 대한 알림을 설정하세요. 자세한 내용은 성능 모니터링 메트릭을 참조하세요.
중단 중에 다음 로그 메시지가 표시될 수 있습니다:
레벨로그 메시지의미
ErrorSearch engine health check failed repeatedly; stopping engine실패 임계값에 도달하여 엔진이 중지되었습니다. 검색이 데이터베이스로 폴백됩니다.
WarnSearch engine health check failed개별 상태 확인이 실패했습니다. consecutive_failures 카운트가 포함됩니다.
WarnSearch engine health check failed: it is now marked as unhealthy이전에 정상이었던 엔진이 상태 확인에 실패하여 비정상으로 표시되었습니다. 검색 요청이 즉시 데이터베이스로 폴백됩니다.
WarnSearch engine watcher: Start() failed, will retry재연결 시도가 실패했습니다. 다음 재시도까지의 시간을 나타내는 next_backoff 필드가 포함됩니다.
InfoSearch engine health check succeeded: it is now marked as healthy비정상 상태 이후 엔진이 상태 확인을 통과하여 다시 검색 요청을 처리합니다.
InfoSearch engine watcher: engine started successfully엔진이 복구되어 다시 활성화되었습니다.
InfoSearch engine watcher: engine disabled, parking검색 엔진이 구성에서 비활성화되어 상태 모니터가 유휴 상태입니다.

검색 작업이 실패한 것을 어떻게 알 수 있나요?#

Mattermost는 시스템 콘솔 > 환경 > Elasticsearch 에서 각 Elasticsearch 또는 OpenSearch 인덱싱 작업의 상태를 제공합니다. 여기서 오류 세부사항을 포함하여 작업 성공 또는 실패 여부를 확인할 수 있습니다.

실패는 서버 로그에 반환됩니다. 오류 로그는 Failed job 문자열로 시작하며 job_id 키/값 쌍을 포함합니다. 검색 작업 실패는 작업자 이름 EnterpriseElasticsearchAggregatorEnterpriseElasticsearchIndexer 로 식별됩니다. 이러한 실패를 프로그래밍 방식으로 쿼리하고 적절한 시스템에 알리는 스크립트를 선택적으로 생성할 수 있습니다.

엔터프라이즈 검색 연결 문제를 어떻게 진단하나요?#

Mattermost v11부터 지원 패킷 생성 은 구성된 Elasticsearch 또는 AWS OpenSearch 서버에 대한 연결을 자동으로 테스트하고 지원 패킷에 연결 오류를 포함합니다. 이를 통해 서버 버전, 설치된 플러그인, 연결 실패 시 특정 오류 세부사항을 포함한 귀중한 진단 정보를 제공합니다.

엔터프라이즈 검색 연결 테스트 결과는 지원 패킷에 표시되며 네트워크 연결 문제, 인증 실패, 서버 가용성 문제 등의 구성 문제를 식별하는 데 도움이 됩니다. 연결 오류가 있는 경우 문제 해결을 돕기 위해 특정 오류 메시지와 함께 명확하게 문서화됩니다.

검색 인덱스가 완료되지 않으면 어떻게 해야 하나요?#

일시 중지된 검색 인덱싱 작업이 있는 경우, Elasticsearch 또는 OpenSearch 서버가 재시작된 것일 가능성이 높습니다. 해당 서버를 재시작하면 작업이 완료되도록 Mattermost도 재시작해야 합니다. Mattermost 서버를 재시작해도 문제가 해결되지 않는 경우, Mattermost 구독을 보유한 고객은 Mattermost 지원에 문의 할 수 있습니다.

매번 먼저 삭제한 다음 대량 인덱싱을 수행해야 하나요?#

네. 이전 데이터를 제거(삭제)하도록 선택할 때마다 새 데이터로 다시 채우기 위해 대량 인덱스 작업을 수행해야 합니다. 삭제(purge)하면 Elasticsearch에서 기존 데이터가 제거됩니다. 삭제 후 새 데이터로 인덱스를 다시 채우려면 인덱스를 효율적으로 재구성하기 위한 대량 인덱스 작업을 수행합니다. 대량 API를 통해 단일 요청으로 여러 문서를 인덱싱, 삭제 또는 업데이트할 수 있어 문서를 하나씩 처리하는 것보다 더 빠르고 효율적입니다.

Mattermost 서비스 계정에 필요한 권한#

"최소 권한" 환경에서는 Elasticsearch 또는 AWS OpenSearch 서비스 계정이 가진 액세스를 제한하기 위해 서비스 계정 권한을 더 제한할 필요가 있을 수 있습니다.

다음 JSON은 Mattermost가 Elasticsearch 또는 AWS OpenSearch와 올바르게 작동할 수 있도록 하는 "최소 권한" 권한 세트의 예를 제공합니다:

{
  "cluster_permissions": [
    "cluster:monitor/*",
    "indices:admin/template/put",
    "indices:data/write/bulk"
  ],
  "index_permissions": [
    {
      "index_patterns": [
        "\<IndexPrefix\>*"
      ],
      "allowed_actions": [
        "indices:admin/get",
        "indices:admin/create",
        "indices:admin/delete",
        "indices:admin/mapping/put",
        "indices:admin/mappings/fields/get*",
        "indices:data/read*",
        "indices:data/write*"
      ]
    }
  ]
}

위의 더 간단하고 유연하며 탄력적인 변형은 다음과 같습니다:

{
  "cluster_permissions": [
    "cluster:monitor/*",
    "indices:admin/template/put",
    "indices:data/write/bulk"
  ],
  "index_permissions": [
    {
      "index_patterns": [
        "\<IndexPrefix\>*"
      ],
      "allowed_actions": [
        "indices:*"
      ]
    }
  ]
}

엔터프라이즈 검색

원문 보기
요약

Mattermost 데이터베이스 검색은 32GB RAM과 4 CPU를 갖춘 서버에서 약 200만 개 게시물에서 성능 저하를 보이기 시작합니다. Elasticsearch는 대규모 에코시스템과 커뮤니티 지원을 갖춘 잘 확립되고 널리 사용되는 검색 엔진으로, 빠르고 예측 가능한 검색 결과를 위한 클러스터 지원을 통해 엔터프라이즈 규모 배포에 최적화된 검색 성능, 전용 인덱싱 및 리소스 사용을 제공합니다.

Mattermost 데이터베이스 검색은 32GB RAM과 4 CPU를 갖춘 서버에서 약 200만 개 게시물에서 성능 저하를 보이기 시작합니다. Mattermost 서버가 250만 개 이상의 게시물에 도달할 것으로 예상된다면, 300만 개 게시물에 도달하기 전에 최적의 검색 성능을 위해 Elasticsearch 또는 AWS OpenSearch Service 를 활성화하는 것을 권장합니다. 두 도구 모두 매우 유능하며 엔터프라이즈 규모의 워크로드를 처리할 수 있습니다. 선택은 다음 요소에 따라 달라집니다:

  • 라이선싱 및 비용: AWS OpenSearch는 독점 라이선싱을 피하거나 비용 효율적인 솔루션을 선택하는 조직에 더 적합할 수 있습니다.
  • 기능 요구사항: Elasticsearch의 독점 기능(예: 고급 분석, 보안 스위트)은 강력한 기본 제공 기능이 필요한 조직에 더 적합할 수 있습니다.
  • 인프라 정렬: AWS OpenSearch는 AWS 중심 환경과 잘 맞으며, Elasticsearch는 더 광범위한 통합을 제공합니다.

Elasticsearch#

Elasticsearch는 대규모 에코시스템과 커뮤니티 지원을 갖춘 잘 확립되고 널리 사용되는 검색 엔진으로, 빠르고 예측 가능한 검색 결과를 위한 클러스터 지원을 통해 엔터프라이즈 규모 배포에 최적화된 검색 성능, 전용 인덱싱 및 리소스 사용을 제공합니다.

Mattermost 구현은 Elasticsearch클러스터 환경 에서 효율적인 데이터베이스 검색을 지원하는 분산형 RESTful 검색 엔진으로 사용합니다. Elasticsearch 서버를 위한 Mattermost 설정 및 구성 에 대한 자세한 내용을 알아보세요.

AWS OpenSearch Service#

AWS OpenSearch Service는 AWS 고객을 위한 Elasticsearch v7.10.x의 공식 후속 경로입니다. 실시간으로 데이터를 간단하고 비용 효율적으로 검색, 분석, 시각화할 수 있도록 AWS 클라우드에서 OpenSearch 클러스터를 쉽게 배포, 운영, 확장하는 완전 관리형 서비스입니다.

AWS OpenSearch Service는 Elasticsearch의 커뮤니티 주도 포크인 오픈 소스 OpenSearch 프로젝트를 기반으로 합니다. OpenSearch 서버를 위한 Mattermost 설정 및 구성 에 대한 자세한 내용을 알아보세요.

지원 경로#

사용 중인 버전에 따라 엔터프라이즈 검색의 다음 지원 경로를 검토하세요:

Elasticsearch v8 은 Mattermost v9.11부터 지원됩니다. Mattermost는 Elasticsearch v7.17+를 지원하지만, Elasticsearch v7 인스턴스를 v8.x로 업그레이드하는 것을 권장합니다. 업그레이드 세부사항은 Elasticsearch 업그레이드 문서를 참조하고, Mattermost 배포에 Elasticsearch를 사용하도록 구성하는 방법은 Elasticsearch 설정 문서를 참조하세요.

AWS OpenSearch Service는 AWS 고객을 위한 Elasticsearch v7.10.x의 공식 후속 경로로, 데이터를 실시간으로 간단하고 비용 효율적으로 검색, 분석, 시각화할 수 있는 방법을 제공합니다. 본질적으로 Elasticsearch v7.10.x의 연속이지만 AWS에 의해 오픈 소스로 유지관리됩니다. 장기 지원, 활발한 개발, AWS 클라이언트, 라이브러리 및 관리형 서비스와의 호환성을 제공합니다.

AWS OpenSearch로 업그레이드하는 방법은 이 페이지의 AWS Elasticsearch v7.10.x 탭을 참조하고, Mattermost 배포에 AWS OpenSearch를 사용하도록 구성하는 방법은 AWS OpenSearch 설정 문서를 참조하세요.

AWS의 관리형 서비스에서 Elasticsearch v7.10.x를 사용 중인 경우, 백엔드 인프라를 변경하지 않고 v8 클라이언트와 같은 새로운 Elasticsearch 클라이언트를 사용할 수 없습니다. AWS Elasticsearch v7.10.x를 사용하는 경우, 향후 호환성을 위해 AWS OpenSearch로 업그레이드 해야 합니다.

Elasticsearch v7.10.x에서 OpenSearch로의 마이그레이션 경로는 노력을 최소화하도록 설계되었습니다:

  1. OpenSearch에서 "호환성 모드"를 비활성화하세요.
  2. Mattermost 서버를 업그레이드하세요.
  3. Mattermost ElasticsearchSettings.Backend 구성 설정 값을 elasticsearch 에서 opensearch 로 수동으로 또는 mmctl 를 사용하여 업데이트하세요. 이 값은 시스템 콘솔을 사용하여 변경할 수 없습니다. 자세한 내용은 Mattermost 검색 백엔드 유형 구성 설정 문서를 참조하세요.
  4. Mattermost 서버를 재시작하세요.

자주 묻는 질문(FAQ)#

Elasticsearch 또는 AWS OpenSearch를 사용해야 하나요?#

아니요. 엔터프라이즈 검색 엔진은 클러스터 환경에서 효율적인 데이터베이스 검색을 실행하는 대규모 엔터프라이즈 배포를 위해 설계되었습니다. 기본 Mattermost 데이터베이스 검색은 데이터베이스 서버 사양에 따라 약 250만 개 게시물에서 성능 저하를 보이기 시작합니다. Mattermost 서버가 250만 개 이상의 게시물을 보유할 것으로 예상된다면, 최적의 검색 성능을 위해 Elasticsearch 또는 AWS OpenSearch를 사용하는 것을 권장합니다.

Elasticsearch 또는 OpenSearch를 Mattermost 서버와 같은 머신에 설치해야 하나요?#

아니요. Mattermost 서버와 별도의 전용 머신에 Elasticsearch 또는 AWS OpenSearch를 설치하는 것을 강력히 권장합니다.

어떤 유형의 인덱스가 생성되나요?#

Mattermost는 사용자, 채널, 게시물의 세 가지 유형의 인덱스를 생성합니다. 사용자와 채널은 각각 하나의 인덱스를 가집니다. 게시물은 날짜별로 여러 인덱스로 집계됩니다.

검색 인덱싱 작업을 일시 중지할 수 있나요?#

네. Mattermost v6.7부터 검색 인덱싱 작업을 재개할 수 있습니다. 검색 인덱싱 작업이 실행 중일 때 서버를 중지하면 작업이 대기 중 상태로 전환됩니다. 서버가 재시작될 때 작업이 재개됩니다. 시스템 관리자는 시스템 콘솔을 통해 인덱싱 작업을 취소할 수 있습니다.

인덱스 롤오버 정책을 정의할 수 있나요?#

AggregatePostsAfterDays 구성 설정은 기준 값을 정의합니다. 이 값 이전의 모든 게시물은 재인덱싱되어 더 새롭고 더 큰 인덱스로 집계됩니다. 기본 설정은 365일입니다.

Elasticsearch로 제공되는 새로운 검색 기능이 있나요?#

현재 Elasticsearch 구현은 데이터베이스 검색에서 현재 사용 가능한 검색 기능과 일치합니다. Mattermost 팀은 파일 이름 및 콘텐츠 검색, 날짜 필터, 연산자 및 수정자로 Elasticsearch 기능 세트를 확장하는 작업을 진행 중입니다.

내 파일은 Elasticsearch 또는 OpenSearch에 저장되나요?#

아니요. 파일과 첨부 파일은 저장되지 않습니다.

Elasticsearch 서버의 시스템 상태를 어떻게 모니터링하나요?#

이 Prometheus 익스포터를 사용하여 Elasticsearch에 대한 다양한 지표 를 모니터링할 수 있습니다: justwatchcom/elasticsearch_exporter.

Mattermost의 성능 모니터링 시스템이 사용하는 Prometheus에 맞게 특별히 작성되지는 않았지만 여러 팁과 모범 사례가 있는 Elasticsearch 성능 모니터링에 관한 이 기사 도 참조할 수 있습니다.

어떤 형식의 데이터가 Elasticsearch 또는 OpenSearch로 전송되나요?#

Mattermost는 엔티티를 인덱싱하고 쿼리하기 위해 JSON 메시지를 사용하는 REST API를 통해 Elasticsearch 또는 OpenSearch와 통신합니다.

얼마나 많은 데이터가 Elasticsearch 또는 OpenSearch로 전송되며 언제 전송되나요?#

메시지가 게시될 때마다, 채널이 생성될 때마다, 또는 사용자가 변경될 때마다(속성이 변경되는 경우, 예: 이름 변경이나 채널 참여/탈퇴) 해당 이벤트와 관련된 데이터가 Elasticsearch 또는 OpenSearch로 전송됩니다.

Elasticsearch 또는 OpenSearch를 통한 검색이 활성화된 경우, 모든 검색에서 쿼리가 생성됩니다. 자동 완성이 활성화된 경우, 메시지 작성 또는 사용자 검색과 관련된 모든 사용자 또는 채널 자동 완성에서 쿼리가 생성됩니다.

Mattermost가 Elasticsearch 또는 OpenSearch 중단을 어떻게 처리하나요?#

Mattermost v11.7부터 서버에는 Elasticsearch 및 OpenSearch 연결을 위한 자동 상태 모니터가 포함됩니다. 상태 모니터는 주기적인 상태 확인을 실행하고 연결 생명주기를 자동으로 관리합니다:

  • 상태 확인: 서버는 60초마다 검색 엔진 클러스터의 상태를 확인합니다. 3번 연속 상태 확인이 실패하면 엔진이 중지되고 검색이 데이터베이스로 폴백됩니다.
  • 첫 번째 실패 시 빠른 실패: 최초 상태 확인 실패 시 엔진이 즉시 비정상으로 표시되고 검색 요청이 데이터베이스로 라우팅됩니다. 이는 연속 실패 임계값에 도달하기 전에 발생하므로 사용자에게 미치는 중단이 최소화됩니다.
  • 자동 재시도: 검색 엔진을 사용할 수 없는 경우 서버는 15초부터 시작하여 최대 5분까지 두 배씩 증가하는 지수 백오프로 재연결을 시도합니다.
  • 자동 복구: 검색 엔진이 다시 사용 가능해지면 서버가 자동으로 재연결하고 검색 쿼리에 다시 사용합니다. 수동 개입이나 서버 재시작이 필요하지 않습니다.
  • 구성 변경: Elasticsearch 또는 OpenSearch 구성 설정이나 라이선스 변경 시 상태 모니터가 즉시 연결 상태를 재평가합니다.
  • 모니터링: mattermost_search_engine_status Prometheus 메트릭이 검색 엔진의 상태(1 = 정상 또는 구성되지 않음, 0 = 구성되었지만 사용 불가)를 보고합니다. 이 메트릭을 사용하여 검색 엔진 중단에 대한 알림을 설정하세요. 자세한 내용은 성능 모니터링 메트릭을 참조하세요.
중단 중에 다음 로그 메시지가 표시될 수 있습니다:
레벨로그 메시지의미
ErrorSearch engine health check failed repeatedly; stopping engine실패 임계값에 도달하여 엔진이 중지되었습니다. 검색이 데이터베이스로 폴백됩니다.
WarnSearch engine health check failed개별 상태 확인이 실패했습니다. consecutive_failures 카운트가 포함됩니다.
WarnSearch engine health check failed: it is now marked as unhealthy이전에 정상이었던 엔진이 상태 확인에 실패하여 비정상으로 표시되었습니다. 검색 요청이 즉시 데이터베이스로 폴백됩니다.
WarnSearch engine watcher: Start() failed, will retry재연결 시도가 실패했습니다. 다음 재시도까지의 시간을 나타내는 next_backoff 필드가 포함됩니다.
InfoSearch engine health check succeeded: it is now marked as healthy비정상 상태 이후 엔진이 상태 확인을 통과하여 다시 검색 요청을 처리합니다.
InfoSearch engine watcher: engine started successfully엔진이 복구되어 다시 활성화되었습니다.
InfoSearch engine watcher: engine disabled, parking검색 엔진이 구성에서 비활성화되어 상태 모니터가 유휴 상태입니다.

검색 작업이 실패한 것을 어떻게 알 수 있나요?#

Mattermost는 시스템 콘솔 > 환경 > Elasticsearch 에서 각 Elasticsearch 또는 OpenSearch 인덱싱 작업의 상태를 제공합니다. 여기서 오류 세부사항을 포함하여 작업 성공 또는 실패 여부를 확인할 수 있습니다.

실패는 서버 로그에 반환됩니다. 오류 로그는 Failed job 문자열로 시작하며 job_id 키/값 쌍을 포함합니다. 검색 작업 실패는 작업자 이름 EnterpriseElasticsearchAggregatorEnterpriseElasticsearchIndexer 로 식별됩니다. 이러한 실패를 프로그래밍 방식으로 쿼리하고 적절한 시스템에 알리는 스크립트를 선택적으로 생성할 수 있습니다.

엔터프라이즈 검색 연결 문제를 어떻게 진단하나요?#

Mattermost v11부터 지원 패킷 생성 은 구성된 Elasticsearch 또는 AWS OpenSearch 서버에 대한 연결을 자동으로 테스트하고 지원 패킷에 연결 오류를 포함합니다. 이를 통해 서버 버전, 설치된 플러그인, 연결 실패 시 특정 오류 세부사항을 포함한 귀중한 진단 정보를 제공합니다.

엔터프라이즈 검색 연결 테스트 결과는 지원 패킷에 표시되며 네트워크 연결 문제, 인증 실패, 서버 가용성 문제 등의 구성 문제를 식별하는 데 도움이 됩니다. 연결 오류가 있는 경우 문제 해결을 돕기 위해 특정 오류 메시지와 함께 명확하게 문서화됩니다.

검색 인덱스가 완료되지 않으면 어떻게 해야 하나요?#

일시 중지된 검색 인덱싱 작업이 있는 경우, Elasticsearch 또는 OpenSearch 서버가 재시작된 것일 가능성이 높습니다. 해당 서버를 재시작하면 작업이 완료되도록 Mattermost도 재시작해야 합니다. Mattermost 서버를 재시작해도 문제가 해결되지 않는 경우, Mattermost 구독을 보유한 고객은 Mattermost 지원에 문의 할 수 있습니다.

매번 먼저 삭제한 다음 대량 인덱싱을 수행해야 하나요?#

네. 이전 데이터를 제거(삭제)하도록 선택할 때마다 새 데이터로 다시 채우기 위해 대량 인덱스 작업을 수행해야 합니다. 삭제(purge)하면 Elasticsearch에서 기존 데이터가 제거됩니다. 삭제 후 새 데이터로 인덱스를 다시 채우려면 인덱스를 효율적으로 재구성하기 위한 대량 인덱스 작업을 수행합니다. 대량 API를 통해 단일 요청으로 여러 문서를 인덱싱, 삭제 또는 업데이트할 수 있어 문서를 하나씩 처리하는 것보다 더 빠르고 효율적입니다.

Mattermost 서비스 계정에 필요한 권한#

"최소 권한" 환경에서는 Elasticsearch 또는 AWS OpenSearch 서비스 계정이 가진 액세스를 제한하기 위해 서비스 계정 권한을 더 제한할 필요가 있을 수 있습니다.

다음 JSON은 Mattermost가 Elasticsearch 또는 AWS OpenSearch와 올바르게 작동할 수 있도록 하는 "최소 권한" 권한 세트의 예를 제공합니다:

{
  "cluster_permissions": [
    "cluster:monitor/*",
    "indices:admin/template/put",
    "indices:data/write/bulk"
  ],
  "index_permissions": [
    {
      "index_patterns": [
        "\<IndexPrefix\>*"
      ],
      "allowed_actions": [
        "indices:admin/get",
        "indices:admin/create",
        "indices:admin/delete",
        "indices:admin/mapping/put",
        "indices:admin/mappings/fields/get*",
        "indices:data/read*",
        "indices:data/write*"
      ]
    }
  ]
}

위의 더 간단하고 유연하며 탄력적인 변형은 다음과 같습니다:

{
  "cluster_permissions": [
    "cluster:monitor/*",
    "indices:admin/template/put",
    "indices:data/write/bulk"
  ],
  "index_permissions": [
    {
      "index_patterns": [
        "\<IndexPrefix\>*"
      ],
      "allowed_actions": [
        "indices:*"
      ]
    }
  ]
}