Amazon CloudWatch Logs 사용하여 Elasticsearch 로그 모니터링 - Amazon Elasticsearch Service

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

Amazon CloudWatch Logs 사용하여 Elasticsearch 로그 모니터링

Amazon Elasticsearch Service (Amazon ES) 는 Amazon CloudWatch 로그를 통해 다음과 같은 Elasticsearch 로그를 노출합니다.

  • 오류 로그

  • 느린 로그 검색

  • 느린 로그 인덱싱

  • 감사 로그

느린 로그 검색, 느린 로그 및 오류 로그는 성능 및 안정성 문제 해결에 유용합니다. 감사 로그는 규정 준수를 위해 사용자 작업을 추적합니다. 모든 로그는비활성기본적으로 활성화되어 있습니다. 활성화된 경우CloudWatch 요금가 적용됩니다.

참고

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

해당 로그의 경우 엘라스틱 검색은Log4j및 내장 로그 수준 (최저~최고 수준의 심각도)TRACE,DEBUG,INFO,WARN,ERROR, 및FATAL.

오류 로그를 활성화하면 Amazon ES에서WARN,ERROR, 및FATAL를 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. 탐색 창의 []내 도메인에서 업데이트할 도메인을 선택합니다.

  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의 감사 로그 구성. 오류 로그만 활성화한 경우 추가 구성 단계를 수행할 필요가 없습니다.

로그 게시 활성화 (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: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의 감사 로그 구성. 오류 로그만 활성화한 경우 추가 구성 단계를 수행할 필요가 없습니다.

로그 게시 활성화 (AWSSDK

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

  • CreateLogGroup

  • DescribeLogGroup

  • PutResourcePolicy

를 사용하여 이러한 작업에 액세스할 수 있습니다.AWSSDK.

이AWSSDK (Android 및 iOS SDK 제외) 는Amazon Elasticsearch Service 구성 API 참조를 포함하여--log-publishing-options에 대한 옵션CreateElasticsearchDomainUpdateElasticsearchDomainConfig.

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

로그 게시 활성화 (CloudFormation)

사용하기 전에AWS CloudFormation를 사용하여 로그 게시가 활성화된 도메인을 생성하려면 먼저 CloudWatch 로그 그룹을 생성하고 Amazon ES에 쓰기 권한을 부여해야 합니다. 이 예에서는 라는 로그 그룹을 생성합니다.elasticsearch-logs에서 적절한 권한을 할당한 다음 CloudFormation 을 사용하여 애플리케이션 로그에 대해 로그 게시가 활성화된 도메인을 생성하고 느린 로그를 검색하고 인덱스화할 수 있습니다.

먼저 로그 그룹을 생성합니다.

aws logs create-log-group --log-group-name elasticsearch-logs

로그 그룹의 ARN 찾아 기록합니다.

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

이 예제에서 ARN 은arn:aws:logs:us-east-1:123456789012:log-group:elasticsearch-logs:*.

Amazon ES에게 로그 그룹에 작성할 수 있는 권한을 부여합니다.

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:CreateLogStream"],"Resource": "arn:aws:logs:us-east-1:123456789012:log-group:elasticsearch-logs:*"}]}'

마지막으로 로그 게시가 활성화된 Amazon ES 도메인을 생성하는 다음 CloudFormation 스택을 생성합니다. 액세스 정책은 루트 사용자가 AWS 계정 를 사용하여 도메인에 대한 모든 HTTP 요청을

Resources: ElasticsearchDomain: Type: "AWS::Elasticsearch::Domain" Properties: DomainName: my-domain ElasticsearchVersion: "7.10" ElasticsearchClusterConfig: InstanceCount: 2 InstanceType: "r6g.xlarge.elasticsearch" DedicatedMasterEnabled: true DedicatedMasterCount: 3 DedicatedMasterType: "r6g.xlarge.elasticsearch" EBSOptions: EBSEnabled: true VolumeSize: 10 VolumeType: "gp2" SnapshotOptions: AutomatedSnapshotStartHour: "0" AccessPolicies: Version: "2012-10-17" Statement: Effect: "Allow" Principal: AWS: "arn:aws:iam::123456789012:user/es-user" Action: "es:*" Resource: "arn:aws:es:us-east-1:123456789012:domain/my-domain/*" LogPublishingOptions: ES_APPLICATION_LOGS: CloudWatchLogsLogGroupArn: "arn:aws:logs:us-east-1:123456789012:log-group:elasticsearch-logs:*" Enabled: true SEARCH_SLOW_LOGS: CloudWatchLogsLogGroupArn: "arn:aws:logs:us-east-1:123456789012:log-group:elasticsearch-logs:*" Enabled: true INDEX_SLOW_LOGS: CloudWatchLogsLogGroupArn: "arn:aws:logs:us-east-1:123456789012:log-group:elasticsearch-logs:*" Enabled: true

자세한 구문 정보는 단원을 참조하십시오.로그 게시 옵션AWS CloudFormation사용 설명서.

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

Elasticsearch는 기본적으로 느린 로그를 비활성화합니다. 사용하도록 설정한 후게시를 실행하는 경우 각 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 로그 그룹이 있습니까? CloudWatch 콘솔을 확인합니다.

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

  • Amazon ES 도메인이 로그 그룹에 게시되도록 구성되었습니까? Amazon ES 콘솔을 확인하고AWS CLI describe-elasticsearch-domain-config옵션을 사용하거나DescribeElasticsearchDomainConfig는 SDK 중 하나를 사용합니다.

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

    GET elasticsearch_domain_endpoint/index/_settings?pretty

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

Amazon ES 콘솔을 사용하여 CloudWatch 에 게시를 비활성화하거나AWS CLI가하지Elasticsearch가 로그를 생성하지 못하게합니다.게시해당 로그의. 느린 로그가 더 이상 필요하지 않으면 인덱스 설정을 확인합니다.

로그 보기

CloudWatch 로그를 보는 것은 다른 CloudWatch 로그를 보는 것과 같습니다. 자세한 내용은 단원을 참조하십시오.로그 데이터 보기Amazon CloudWatch Logs 사용자 가이드.

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

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

  • CloudWatch 로그 스트림 이름에는-index-slow-logs,-search-slow-logs,-es-application-logs, 및-audit-logs를 사용하여 해당 콘텐츠를 식별하는 데 도움이 됩니다.