Elasticsearch 로그 구성 - Amazon Elasticsearch Service

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Elasticsearch 로그 구성

Amazon ES 4개 노출 Elasticsearch 다음을 통해 로그 Amazon CloudWatch Logs: 오류 로그, 느린 로그 검색, 느린 로그 인덱싱 및 감사 로그. 느린 로그, 인덱스 느린 로그 및 오류 로그를 검색하면 성능 및 안정성 문제를 해결하는 데 유용합니다. 감사 로그는 규정 준수를 위해 사용자 활동을 추적합니다. 모든 로그는 비활성화됨 기본적으로. 활성화되면, 표준 CloudWatch 요금이 적용됩니다.

참고

오류 로그는 Elasticsearch 버전 5.1 이상에서만 사용 가능합니다. 느린 로그는 모든 Elasticsearch 버전에서 사용 가능합니다.

Elasticsearch는 로그에 대해 Apache Log4j 2TRACE, DEBUG, INFO, WARN, ERROR, FATAL의 내장형 로그 수준(최저~최고 수준의 심각도)을 사용합니다.

사용자가 오류 로그를 활성화하면 Amazon ES에서는 WARN, ERRORFATAL의 로그 줄을 CloudWatch에 게시합니다. 또한 Amazon ES는 다음을 포함하여 DEBUG 수준에서 여러 제외 항목을 게시합니다.

  • org.elasticsearch.index.mapper.MapperParsingException

  • org.elasticsearch.index.query.QueryShardException

  • org.elasticsearch.action.search.SearchPhaseExecutionException

  • org.elasticsearch.common.util.concurrent.EsRejectedExecutionException

  • java.lang.IllegalArgumentException

오류 로그는 다음을 포함하여 많은 상황에서 문제를 해결하는 데 도움이 될 수 있습니다.

  • Painless 스크립트 컴파일 문제

  • 잘못된 쿼리

  • 인덱싱 문제

  • 스냅샷 실패

로그 게시 활성화(콘솔)

Amazon ES 콘솔은 CloudWatch에 대한 로그 게시를 활성화하는 가장 간편한 방법입니다.

CloudWatch에 대한 로그 게시를 활성화하려면(콘솔)

  1. https://aws.amazon.com으로 이동하여 Sign In to the Console(콘솔에 로그인)을 선택합니다.

  2. Analytics에서 Elasticsearch Service를 선택합니다.

  3. 탐색 창의 My domains(내 도메인)에서 업데이트할 도메인을 선택합니다.

  4. 로그 탭에서 원하는 로그에 대해 활성화를 선택합니다.

  5. CloudWatch 로그 그룹을 만들거나 기존 그룹을 선택합니다.

    참고

    여러 로그를 활성화하려는 경우 자체 로그 그룹에 각각 게시하는 것이 좋습니다. 이렇게 분리하면 로그를 더 쉽게 검사할 수 있습니다.

  6. 적절한 사용 권한이 포함된 액세스 정책을 선택하거나 콘솔에서 제공하는 JSON을 사용하여 정책을 만듭니다.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "es.amazonaws.com" }, "Action": [ "logs:PutLogEvents", "logs:CreateLogStream" ], "Resource": "cw_log_group_arn" } ] }
    중요

    CloudWatch Logs는 리전당 10개의 리소스 정책을 지원합니다. 여러 Amazon ES 도메인에 대해 로그를 사용하도록 설정하려는 경우, 이 제한에 도달하지 않도록 하려면 여러 로그 그룹을 포함하는 더 광범위한 정책을 생성하여 재사용해야 합니다. 정책 업데이트 단계는 로그 게시 활성화(AWS CLI) 단원을 참조하십시오.

  7. [Enable]을 선택합니다.

    도메인 상태가 Active에서 Processing으로 바뀝니다. 상태가 다시 Active로 돌아온 다음에 로그 게시를 활성화해야 합니다. 이 변경은 일반적으로 30분이 소요되지만 도메인 구성에 따라 시간이 더 오래 걸릴 수 있습니다.

느린 로그 중 하나를 활성화한 경우 느린 로그에 대한 Elasticsearch 로깅 임계값 설정 단원을 참조하십시오. 감사 로그를 활성화한 경우 을 참조하십시오. 감사 로그 Kibana UI. 오류 로그만 활성화한 경우 추가 구성 단계를 수행할 필요가 없습니다.

로그 게시 활성화(AWS CLI)

로그 게시를 활성화하려면 CloudWatch 로그 그룹이 필요합니다. 아직 없는 경우 다음 명령을 사용하여 생성할 수 있습니다.

aws logs create-log-group --log-group-name my-log-group

다음 명령을 입력하여 로그 그룹의 ARN을 찾은 다음 이를 기록해 둡니다.

aws logs describe-log-groups --log-group-name my-log-group

이제 Amazon ES에게 로그 그룹에 작성할 수 있는 권한을 부여할 수 있습니다. 명령의 끝 부분에 로그 그룹의 ARN을 제공해야 합니다.

aws logs put-resource-policy --policy-name my-policy --policy-document '{ "Version": "2012-10-17", "Statement": [{ "Sid": "", "Effect": "Allow", "Principal": { "Service": "es.amazonaws.com"}, "Action":[ "logs:PutLogEvents","logs:PutLogEventsBatch","logs:CreateLogStream"],"Resource": "cw_log_group_arn"}]}'
중요

CloudWatch Logs는 리전당 10개의 리소스 정책을 지원합니다. 여러 Amazon ES 도메인에 대해 느린 로그를 사용하도록 설정하려는 경우, 이 제한에 도달하지 않도록 하려면 여러 로그 그룹을 포함하는 더 광범위한 정책을 생성하여 재사용해야 합니다.

나중에 이 정책을 검토해야 하는 경우 aws logs describe-resource-policies 명령을 사용하십시오. 정책을 업데이트하려면 새 정책 문서에 동일한 aws logs put-resource-policy 명령을 실행합니다.

마지막으로, --log-publishing-options 옵션을 사용하여 게시를 활성화할 수 있습니다. 옵션에 대한 구문은 create-elasticsearch-domainupdate-elasticsearch-domain-config 명령 둘 다에서 동일합니다.

파라미터 유효한 값
--log-publishing-options SEARCH_SLOW_LOGS={CloudWatchLogsLogGroupArn=cw_log_group_arn,Enabled=true|false}
INDEX_SLOW_LOGS={CloudWatchLogsLogGroupArn=cw_log_group_arn,Enabled=true|false}
ES_APPLICATION_LOGS={CloudWatchLogsLogGroupArn=cw_log_group_arn,Enabled=true|false}
AUDIT_LOGS={CloudWatchLogsLogGroupArn=cw_log_group_arn,Enabled=true|false}
참고

여러 로그를 활성화하려는 경우 자체 로그 그룹에 각각 게시하는 것이 좋습니다. 이렇게 분리하면 로그를 더 쉽게 검사할 수 있습니다.

예제

다음 예제는 지정된 도메인에 대한 검색 및 인덱스 느린 로그의 게시를 활성화합니다.

aws es update-elasticsearch-domain-config --domain-name my-domain --log-publishing-options "SEARCH_SLOW_LOGS={CloudWatchLogsLogGroupArn=arn:aws:logs:us-east-1:123456789012:log-group:my-log-group,Enabled=true},INDEX_SLOW_LOGS={CloudWatchLogsLogGroupArn=arn:aws:logs:us-east-1:123456789012:log-group:my-other-log-group,Enabled=true}"

CloudWatch에 대한 게시를 비활성화하려면 Enabled=false를 통해 동일한 명령을 실행합니다.

느린 로그 중 하나를 활성화한 경우 느린 로그에 대한 Elasticsearch 로깅 임계값 설정 단원을 참조하십시오. 감사 로그를 활성화한 경우 을 참조하십시오. 감사 로그 Kibana UI. 오류 로그만 활성화한 경우 추가 구성 단계를 수행할 필요가 없습니다.

로그 게시(AWS) 활성화 SDKs)

로그 게시를 활성화하려면 먼저 CloudWatch 로그 그룹을 생성하고, ARN을 얻고, Amazon ES에게 작성할 수 있는 권한을 부여해야 합니다. 관련 작업은 Amazon CloudWatch Logs API Reference에 문서화되어 있습니다.

  • CreateLogGroup

  • DescribeLogGroup

  • PutResourcePolicy

이러한 작업은 에이에스 SDKs.

더 AWS SDKs (안드로이드 및 iOS 제외) SDKs)는 에 정의된 모든 작업을 지원합니다. Amazon Elasticsearch Service 구성 API 참조, 포함 --log-publishing-options 옵션 CreateElasticsearchDomainUpdateElasticsearchDomainConfig.

느린 로그 중 하나를 활성화한 경우 느린 로그에 대한 Elasticsearch 로깅 임계값 설정 단원을 참조하십시오. 오류 로그만 활성화한 경우 추가 구성 단계를 수행할 필요가 없습니다.

느린 로그에 대한 Elasticsearch 로깅 임계값 설정

Elasticsearch는 기본적으로 느린 로그를 비활성화합니다. CloudWatch에 대해 느린 로그 게시를 활성화한 후에도 여전히 각 Elasticsearch 인덱스에 대해 로깅 임계값을 지정해야 합니다. 이러한 임계값은 정확하게 기록할 내용과 로그 수준을 정의합니다.

Elasticsearch REST API를 통해 이러한 설정을 지정할 수 있습니다.

PUT elasticsearch_domain_endpoint/index/_settings { "index.search.slowlog.threshold.query.warn": "5s", "index.search.slowlog.threshold.query.info": "2s" }

느린 로그가 성공적으로 게시되고 있는지 테스트하려면 아주 낮은 값으로 시작하여 로그가 CloudWatch에 나타나는지 확인한 다음 임계값을 더 유용한 수준으로 늘립니다.

로그가 나타나지 않는 경우 다음 정보를 확인합니다.

  • CloudWatch 로그 그룹이 있습니까? CloudWatch 콘솔을 확인합니다.

  • 이제 Amazon ES에게 로그 그룹에 작성할 수 있는 권한이 있습니까? Amazon ES 콘솔을 확인합니다.

  • Amazon ES 도메인이 로그 그룹에 게시되도록 구성되었습니까? 다음을 확인하십시오. Amazon ES 콘솔, 사용 AWS CLI describe-elasticsearch-domain-config 또는 DescribeElasticsearchDomainConfig 다음 중 하나를 사용하여 SDKs.

  • 요청이 해당 값을 초과할 만큼 Elasticsearch 로깅 임계값이 낮습니까? 인덱스에 대한 임계값을 검토하려면 다음 명령을 사용합니다.

    GET elasticsearch_domain_endpoint/index/_settings?pretty

인덱스에 대해 느린 로그를 사용하지 않으려면 변경한 임계값을 -1의 기본값으로 되돌립니다.

Amazon ES 콘솔 또는 AWS CLI를 사용하여 CloudWatch에 대한 게시를 비활성화해도 Elasticsearch의 로그 생성이 중지되지 않으며, 해당 로그에 대한 게시만 중지됩니다. 느린 로그가 더 이상 필요하지 않으면 인덱스 설정을 확인합니다.

로그 보기

CloudWatch에서 애플리케이션 및 느린 로그를 보는 것은 다른 CloudWatch 로그를 보는 것과 같습니다. 자세한 내용은 을 참조하십시오. 로그 데이터 보기 에서 Amazon CloudWatch Logs User Guide.

다음은 로그를 볼 때 고려해야 할 몇 가지 사항입니다.

  • Amazon ES는 각 줄에 있는 처음 255,000개 문자만 CloudWatch에 게시합니다. 남아 있는 모든 콘텐츠는 잘리게 됩니다. 감사 로그의 경우 메시지당 10,000자입니다.

  • 입력 CloudWatch, 로그 스트림 이름 접미사 -index-slow-logs, -search-slow-logs, -es-application-logs, 및 -audit-logs 를 클릭하여 내용을 확인합니다.