Amazon OpenSearch Logs를 사용한 CloudWatch 로그 모니터링 - 아마존 OpenSearch 서비스

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

Amazon OpenSearch Logs를 사용한 CloudWatch 로그 모니터링

아마존 OpenSearch 서비스는 Amazon Logs를 통해 다음과 같은 OpenSearch 로그를 CloudWatch 노출합니다.

샤드 슬로우 로그 검색, 샤드 슬로우 로그 인덱싱, 오류 로그는 성능 및 안정성 문제를 해결하는 데 유용합니다. 감사 로그는 규정 준수를 위해 사용자 활동을 추적합니다. 모든 로그는 기본적으로 비활성화되어 있습니다. 활성화된 경우 표준 CloudWatch 요금이 적용됩니다.

참고

오류 로그는 Elasticsearch 버전 5.1 이상에서만 사용할 OpenSearch 수 있습니다. 느린 로그는 모든 OpenSearch 버전과 Elasticsearch 버전에서 사용할 수 있습니다.

로그의 경우 Apache Log4j 2와 내장된 로그 수준 (가장 낮은 수준에서 가장 심각한 수준까지) 의TRACE,,,DEBUG, INFO 및 를 OpenSearch 사용합니다. WARN ERROR FATAL

오류 로그를 활성화하면 OpenSearch 서비스가, 및 to의 WARN 로그 라인을 게시합니다. ERROR FATAL CloudWatch OpenSearch 또한 서비스는 다음을 포함하여 DEBUG 레벨의 몇 가지 예외를 게시합니다.

  • org.opensearch.index.mapper.MapperParsingException

  • org.opensearch.index.query.QueryShardException

  • org.opensearch.action.search.SearchPhaseExecutionException

  • org.opensearch.common.util.concurrent.OpenSearchRejectedExecutionException

  • java.lang.IllegalArgumentException

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

  • Painless 스크립트 컴파일 문제

  • 잘못된 쿼리

  • 인덱싱 문제

  • 스냅샷 실패

  • 인덱스 상태 관리 마이그레이션 실패

참고

OpenSearch 서비스는 발생하는 모든 오류를 기록하지 않습니다.

로그 게시 활성화(콘솔)

OpenSearch 서비스 콘솔은 로그를 게시할 수 있는 가장 간단한 방법입니다 CloudWatch.

CloudWatch (콘솔) 에 로그를 게시할 수 있도록 하려면
  1. https://aws.amazon.com으로 이동하여 콘솔에 로그인(Sign In to the Console)을 선택합니다.

  2. 애널리틱스에서 Amazon OpenSearch 서비스를 선택합니다.

  3. 업데이트할 도메인을 선택합니다.

  4. [로그(Logs)] 탭에서 로그 유형을 선택하고 [사용(Enable)]을 선택합니다.

  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:*" } ] }

    혼동된 대리자 문제로부터 자신을 보호하기 위하여 aws:SourceAccountaws:SourceArn 조건 키를 정책에 추가할 것을 권장합니다. 원본 계정은 도메인의 소유자이고 ARN 원본은 ARN 도메인의 소유자입니다. 이러한 조건 키를 추가하려면 도메인에 서비스 소프트웨어 R20211203 이상을 사용해야 합니다.

    예를 들어 정책에 다음 조건 블록을 추가할 수 있습니다.

    "Condition": { "StringEquals": { "aws:SourceAccount": "account-id" }, "ArnLike": { "aws:SourceArn": "arn:aws:es:region:account-id:domain/domain-name" } }
    중요

    CloudWatch 로그는 지역당 10개의 리소스 정책을 지원합니다. 여러 OpenSearch 서비스 도메인의 로그를 활성화하려는 경우 이 한도에 도달하지 않도록 여러 로그 그룹을 포함하는 보다 광범위한 정책을 만들어 재사용해야 합니다. 정책 업데이트 단계는 로그 게시 활성화(AWS CLI) 섹션을 참조하세요.

  7. 활성화(Enable)를 선택합니다.

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

샤드 슬로우 로그 중 하나를 활성화한 경우 을 참조하십시오. 샤드 슬로우 로그 임계값 설정 감사 로그를 활성화한 경우 2단계: OpenSearch 대시보드에서 감사 로그 켜기 섹션을 참조하세요. 오류 로그만 활성화한 경우 추가 구성 단계를 수행할 필요가 없습니다.

로그 게시 활성화(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

이제 OpenSearch 서비스에 로그 그룹에 쓸 수 있는 권한을 부여할 수 있습니다. 명령 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 로그는 지역당 10개의 리소스 정책을 지원합니다. 여러 OpenSearch 서비스 도메인에 대해 샤드 슬로우 로그를 활성화하려는 경우 이 한도에 도달하지 않도록 여러 로그 그룹을 포함하는 보다 광범위한 정책을 만들어 재사용해야 합니다.

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

마지막으로, --log-publishing-options 옵션을 사용하여 게시를 활성화할 수 있습니다. 옵션에 대한 구문은 create-domainupdate-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 opensearch update-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

샤드 슬로우 로그 중 하나를 활성화한 경우 을 참조하십시오샤드 슬로우 로그 임계값 설정. 감사 로그를 활성화한 경우 2단계: OpenSearch 대시보드에서 감사 로그 켜기 섹션을 참조하세요. 오류 로그만 활성화한 경우 추가 구성 단계를 수행할 필요가 없습니다.

로그 게시 활성화 ()AWS SDKs

로그 게시를 활성화하려면 먼저 CloudWatch 로그 그룹을 만들고, 가져오고ARN, OpenSearch 서비스에 쓰기 권한을 부여해야 합니다. 관련 작업은 Amazon CloudWatch Logs API 레퍼런스에 문서화되어 있습니다.

  • CreateLogGroup

  • DescribeLogGroup

  • PutResourcePolicy

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

Android 및 iOS 제외 AWS SDKsSDKs) 는 CreateDomain--log-publishing-options 옵션을 포함하여 Amazon OpenSearch 서비스 API 참조에 정의된 모든 작업을 지원합니다UpdateDomainConfig.

샤드 슬로우 로그 중 하나를 활성화한 경우 을 참조하십시오샤드 슬로우 로그 임계값 설정. 오류 로그만 활성화한 경우 추가 구성 단계를 수행할 필요가 없습니다.

로그 게시 활성화(CloudFormation)

이 예제에서는 라는 opensearch-logs 로그 그룹을 만들고 적절한 권한을 할당한 다음 애플리케이션 로그, 샤드 슬로우 로그 검색, 느린 로그 인덱싱에 대해 로그 게시가 활성화된 도메인을 생성합니다. CloudFormation

로그 게시를 활성화하려면 먼저 CloudWatch 로그 그룹을 만들어야 합니다.

Resources: OpenSearchLogGroup: Type: AWS::Logs::LogGroup Properties: LogGroupName: opensearch-logs Outputs: Arn: Value: 'Fn::GetAtt': - OpenSearchLogGroup - Arn

ARN템플릿은 로그 그룹을 출력합니다. 이 경우 ARN는 arn:aws:logs:us-east-1:123456789012:log-group:opensearch-logs입니다.

를 ARN 사용하여 OpenSearch 서비스에 로그 그룹에 쓸 수 있는 권한을 부여하는 리소스 정책을 생성합니다.

Resources: OpenSearchLogPolicy: Type: AWS::Logs::ResourcePolicy Properties: PolicyName: my-policy PolicyDocument: "{ \"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:opensearch-logs:*\"}]}"

마지막으로 로그 게시가 가능한 OpenSearch 서비스 도메인을 생성하는 다음 CloudFormation 스택을 생성합니다. 액세스 정책은 사용자가 도메인에 대한 모든 HTTP 요청을 AWS 계정 할 수 있도록 허용합니다.

Resources: OpenSearchServiceDomain: Type: "AWS::OpenSearchService::Domain" Properties: DomainName: my-domain EngineVersion: "OpenSearch_1.0" ClusterConfig: InstanceCount: 2 InstanceType: "r6g.xlarge.search" DedicatedMasterEnabled: true DedicatedMasterCount: 3 DedicatedMasterType: "r6g.xlarge.search" EBSOptions: EBSEnabled: true VolumeSize: 10 VolumeType: "gp2" 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:opensearch-logs" Enabled: true SEARCH_SLOW_LOGS: CloudWatchLogsLogGroupArn: "arn:aws:logs:us-east-1:123456789012:log-group:opensearch-logs" Enabled: true INDEX_SLOW_LOGS: CloudWatchLogsLogGroupArn: "arn:aws:logs:us-east-1:123456789012:log-group:opensearch-logs" Enabled: true

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

검색 요청의 느린 로그 임계값 설정

검색 요청 슬로우 로그는 버전 2.13 이상에서 실행되는 OpenSearch 서비스 도메인에서 검색할 때 사용할 수 있습니다. 총 요청 소요 시간에 대해 검색 요청 저속 로그 임계값이 구성되어 있습니다. 이는 개별 샤드에 소요되는 시간을 기준으로 구성된 샤드 요청 저속 로그와는 다릅니다.

클러스터 설정을 사용하여 검색 요청 슬로우 로그를 지정할 수 있습니다. 이는 인덱스 설정으로 활성화하는 샤드 슬로우 로그와는 다릅니다. 예를 들어 다음을 통해 다음 설정을 지정할 수 있습니다. OpenSearch REST API

PUT domain-endpoint/_cluster/settings { "transient": { "cluster.search.request.slowlog.threshold.warn": "5s", "cluster.search.request.slowlog.threshold.info": "2s" } }

샤드 슬로우 로그 임계값 설정

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

예를 들어, 다음을 통해 이러한 설정을 지정할 수 있습니다. OpenSearch REST API

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

느린 로그 테스트

검색 요청과 샤드 슬로우 로그가 모두 성공적으로 게시되고 있는지 테스트하려면 매우 낮은 값부터 시작하여 로그가 나타나는지 확인한 다음 임계값을 더 유용한 수준으로 높이는 것이 좋습니다. CloudWatch

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

  • CloudWatch 로그 그룹이 존재합니까? CloudWatch 콘솔을 확인해 보세요.

  • OpenSearch 서비스에 로그 그룹에 쓸 수 있는 권한이 있나요? OpenSearch 서비스 콘솔을 확인하세요.

  • OpenSearch 서비스 도메인이 로그 그룹에 게시하도록 구성되어 있습니까? OpenSearch 서비스 콘솔을 확인하거나 AWS CLI describe-domain-config 옵션을 사용하거나 다음 중 하나를 DescribeDomainConfig 사용하여 호출하십시오SDKs.

  • 요청이 이를 초과할 만큼 OpenSearch 로깅 임계값이 낮습니까?

    도메인의 검색 요청 저속 로그 임계값을 검토하려면 다음 명령어를 사용하세요.

    GET domain-endpoint/_cluster/settings?flat_settings

    인덱스의 샤드 슬로우 로그 임계값을 검토하려면 다음 명령어를 사용하세요.

    GET domain-endpoint/index/_settings?pretty

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

CloudWatch 게시를 비활성화하여 OpenSearch 서비스 콘솔을 사용하거나 사용하지 OpenSearch 않도록 AWS CLI 설정해도 로그 생성이 중단되지 않고 해당 로그의 게시만 중지됩니다. 샤드 슬로우 로그가 더 이상 필요하지 않으면 인덱스 설정을 확인하고 검색 요청 슬로우 로그가 더 이상 필요하지 않으면 도메인 설정을 확인하세요.

로그 보기

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

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

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

  • 에서 CloudWatch 로그 스트림 이름에는 내용을 쉽게 식별할 수 -audit-logs 있도록-index-slow-logs, -search-slow-logs-application-logs, 및 접미사가 붙습니다.