OpenSearch Protokolle mit Amazon CloudWatch Logs überwachen - OpenSearch Amazon-Dienst

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

OpenSearch Protokolle mit Amazon CloudWatch Logs überwachen

Amazon OpenSearch Service stellt die folgenden OpenSearch Protokolle über Amazon CloudWatch Logs zur Verfügung:

Search Shard Slow-Logs, Indexing Shard Slow-Logs und Fehlerprotokolle sind nützlich, um Leistungs- und Stabilitätsprobleme zu beheben. Prüfungsprotokolle verfolgen Benutzeraktivitäten zu Compliance-Zwecken. Alle Protokolle sind standardmäßig deaktiviert. Wenn diese Option aktiviert ist, gelten die Standardpreise CloudWatch .

Anmerkung

Fehlerprotokolle sind nur für OpenSearch Elasticsearch-Versionen 5.1 und höher verfügbar. Langsame Logs sind für alle Versionen OpenSearch und für Elasticsearch verfügbar.

OpenSearch Verwendet für seine Logs Apache Log4j 2 und die integrierten Log-Levels (vom geringsten bis zum schwersten) vonTRACE,DEBUG, INFOWARN, ERROR und. FATAL

Wenn Sie Fehlerprotokolle aktivieren, veröffentlicht OpenSearch Service die Protokollzeilen von WARNERROR, und FATAL bis. CloudWatch OpenSearch Service veröffentlicht auch mehrere Ausnahmen von der DEBUG Ebene, darunter die folgenden:

  • org.opensearch.index.mapper.MapperParsingException

  • org.opensearch.index.query.QueryShardException

  • org.opensearch.action.search.SearchPhaseExecutionException

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

  • java.lang.IllegalArgumentException

Fehlerprotokolle können bei der Fehlerbehebung in zahlreichen Situationen helfen, unter anderem:

  • Probleme bei der Kompilierung von Painless-Skripts

  • Ungültige Abfragen

  • Probleme bei der Indizierung

  • Snapshot-Fehler

  • Migrationsfehler beim Indexstatusmanagement

Anmerkung

OpenSearch Der Service protokolliert nicht alle auftretenden Fehler.

Aktivieren der Veröffentlichung von Protokollen (Konsole)

Die OpenSearch Servicekonsole ist die einfachste Methode, um die Veröffentlichung von Protokollen zu ermöglichen CloudWatch.

Um die Veröffentlichung von Protokollen in CloudWatch (Konsole) zu aktivieren
  1. Rufen Sie die Webseite https://aws.amazon.com auf und klicken Sie dann auf Sign In to the Console (Bei der Konsole anmelden).

  2. Wählen Sie unter Analytics Amazon OpenSearch Service aus.

  3. Wählen Sie die Domain aus, die Sie aktualisieren möchten.

  4. Wählen Sie auf der Registerkarte Protokolle einen Protokolltyp aus und wählen Sie Aktivieren aus.

  5. Erstellen Sie eine neue CloudWatch Protokollgruppe oder wählen Sie eine bestehende aus.

    Anmerkung

    Wenn Sie die mehrere Protokolle aktivieren möchten, sollten Sie jedes Protokoll in einer eigenen Protokollgruppe veröffentlichen. Diese Trennung ermöglicht ein einfacheres Scannen der Protokolle.

  6. Wählen Sie eine Zugriffsrichtlinie, die die entsprechenden Berechtigungen enthält, oder erstellen Sie eine Richtlinie mithilfe der JSON von der Konsole bereitgestellten Richtlinien:

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

    Wir empfehlen Ihnen, die aws:SourceAccount- und aws:SourceArn-Bedingungsschlüssel zur Richtlinie hinzuzufügen, um sich vor dem Problem des verwirrten Stellvertreters zu schützen. Das Quellkonto ist der Eigentümer der Domain und die Quelle ARN ist das Konto ARN der Domain. Ihre Domain muss zum Hinzufügen dieser Bedingungsschlüssel über Service-Software R20211203 oder höher verfügen.

    Beispielsweise können Sie der Richtlinie den folgenden Bedingungsblock hinzufügen:

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

    CloudWatch Logs unterstützt 10 Ressourcenrichtlinien pro Region. Wenn Sie beabsichtigen, Protokolle für mehrere OpenSearch Dienstdomänen zu aktivieren, sollten Sie eine umfassendere Richtlinie erstellen und wiederverwenden, die mehrere Protokollgruppen umfasst, um zu verhindern, dass dieses Limit erreicht wird. Anweisungen zum Aktualisieren Ihrer Richtlinie finden Sie unter Aktivieren der Veröffentlichung von Protokollen (AWS CLI).

  7. Wählen Sie Enable (Aktivieren) aus.

    Der Status Ihrer Domain ändert sich von Active (Aktiv) zu Processing (In Verarbeitung). Der Status muss auf Active (Aktiv) zurückgesetzt werden, bevor die Veröffentlichung von Protokollen aktiviert wird. Diese Änderung dauert in der Regel 30 Minuten, kann jedoch je nach Domain-Konfiguration auch länger dauern.

Wenn Sie eines der Shard Slow-Logs aktiviert haben, finden Sie weitere Informationen unterSchwellenwerte für Shard Slow Log festlegen. Wenn Sie Prüfungsprotokolle aktiviert haben, siehe Schritt 2: Aktivieren Sie die Audit-Logs in den OpenSearch Dashboards. Wenn Sie nur Fehlerprotokolle aktiviert haben, müssen Sie keine weiteren Konfigurationsschritte ausführen.

Aktivieren der Veröffentlichung von Protokollen (AWS CLI)

Bevor Sie die Protokollveröffentlichung aktivieren können, benötigen Sie eine CloudWatch Protokollgruppe. Wenn Sie noch keine Gruppe vorliegen haben, können Sie mit dem folgenden Befehl eine Gruppe erstellen:

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

Geben Sie den nächsten Befehl ein, um die Protokollgruppe zu findenARN, und notieren Sie sich diesen dann:

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

Jetzt können Sie dem OpenSearch Dienst Schreibberechtigungen für die Protokollgruppe erteilen. Sie müssen die Protokollgruppen ARN gegen Ende des Befehls angeben:

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

CloudWatch Logs unterstützt 10 Ressourcenrichtlinien pro Region. Wenn Sie planen, Shard Slow Logs für mehrere OpenSearch Dienstdomänen zu aktivieren, sollten Sie eine umfassendere Richtlinie erstellen und wiederverwenden, die mehrere Protokollgruppen umfasst, um zu verhindern, dass dieses Limit erreicht wird.

Wenn Sie diese Richtlinie zu einem späteren Zeitpunkt überprüfen müssen, verwenden Sie den aws logs describe-resource-policies-Befehl. Um die Richtlinie zu aktualisieren, geben Sie denselben aws logs put-resource-policy-Befehl für ein neues Richtliniendokument aus.

Schließlich können Sie die Option --log-publishing-options zum Aktivieren der Veröffentlichung verwenden. Die Syntax für die Option ist identisch für die create-domain- und update-domain-config-Befehle.

Parameter Zulässige Werte
--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}
Anmerkung

Wenn Sie die mehrere Protokolle aktivieren möchten, sollten Sie jedes Protokoll in einer eigenen Protokollgruppe veröffentlichen. Diese Trennung ermöglicht ein einfacheres Scannen der Protokolle.

Beispiel

Das folgende Beispiel ermöglicht die Veröffentlichung von Shard Slow-Protokollen für die Suche und Indizierung von Shard Slow für die angegebene Domäne:

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}"

Um das Veröffentlichen in zu deaktivieren CloudWatch, führen Sie denselben Befehl mit aus. Enabled=false

Wenn Sie eines der Shard Slow-Logs aktiviert haben, finden Sie weitere Informationen unterSchwellenwerte für Shard Slow Log festlegen. Wenn Sie Prüfungsprotokolle aktiviert haben, siehe Schritt 2: Aktivieren Sie die Audit-Logs in den OpenSearch Dashboards. Wenn Sie nur Fehlerprotokolle aktiviert haben, müssen Sie keine weiteren Konfigurationsschritte ausführen.

Aktivieren der Protokollveröffentlichung ()AWS SDKs

Bevor Sie die Protokollveröffentlichung aktivieren können, müssen Sie zunächst eine CloudWatch Protokollgruppe erstellenARN, ihre Daten abrufen und dem OpenSearch Dienst Schreibberechtigungen für diese Gruppe erteilen. Die entsprechenden Vorgänge sind in der Amazon CloudWatch API Logs-Referenz dokumentiert:

  • CreateLogGroup

  • DescribeLogGroup

  • PutResourcePolicy

Sie können auf diese Operationen zugreifen, indem Sie AWS SDKs

Die AWS SDKs (außer Android und iOSSDKs) unterstützen alle Operationen, die in der Amazon OpenSearch Service API Reference definiert sind, einschließlich der --log-publishing-options Option für CreateDomain undUpdateDomainConfig.

Wenn Sie eines der Shard Slow-Logs aktiviert haben, finden Sie weitere Informationen unterSchwellenwerte für Shard Slow Log festlegen. Wenn Sie nur Fehlerprotokolle aktiviert haben, müssen Sie keine weiteren Konfigurationsschritte ausführen.

Aktivieren der Veröffentlichung von Protokollen (CloudFormation)

In diesem Beispiel erstellen wir eine Protokollgruppe mit dem Namenopensearch-logs, weisen die entsprechenden Berechtigungen CloudFormation zu und erstellen dann eine Domäne, in der die Protokollveröffentlichung für Anwendungsprotokolle, Shard-Slow-Logs für die Suche und Indexierung von Slow-Logs aktiviert ist.

Bevor Sie die Protokollveröffentlichung aktivieren können, müssen Sie eine CloudWatch Protokollgruppe erstellen:

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

Die Vorlage gibt die ARN der Protokollgruppe aus. In diesem Fall hat ARN den Wert arn:aws:logs:us-east-1:123456789012:log-group:opensearch-logs.

Erstellen Sie mithilfe von eine Ressourcenrichtlinie, die dem OpenSearch Dienst Schreibberechtigungen für die Protokollgruppe erteilt: ARN

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

Erstellen Sie abschließend den folgenden CloudFormation Stack, der eine OpenSearch Dienstdomäne mit Protokollveröffentlichung generiert. Die Zugriffsrichtlinie ermöglicht es dem Benutzer, alle HTTP Anfragen AWS-Konto an die Domäne zu stellen.

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

Ausführliche Syntaxinformationen finden Sie unter Optionen für die Protokollveröffentlichung im AWS CloudFormation -Benutzerhandbuch.

Schwellenwerte für langsame Suchanfragen festlegen

Protokolle für langsame Suchanfragen sind für die Suche in OpenSearch Dienstdomänen verfügbar, die auf Version 2.13 und höher ausgeführt werden. Die Protokollschwellenwerte für langsame Suchanfragen sind für die Gesamtdauer der Anfrage konfiguriert. Dies unterscheidet sich von langsamen Protokollen für Shard-Anfragen, die so konfiguriert sind, dass einzelne Shard Zeit in Anspruch nehmen.

Sie können Logs für langsame Suchanfragen mit Clustereinstellungen angeben. Dies unterscheidet sich von Shard Slow Logs, die Sie mit Indexeinstellungen aktivieren. Sie können beispielsweise die folgenden Einstellungen über Folgendes OpenSearch REST API angeben:

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

Schwellenwerte für Shard Slow Log festlegen

OpenSearch deaktiviert standardmäßig Shard Slow Logs. Nachdem Sie die Veröffentlichung von Shard Slow-Logs auf aktiviert haben CloudWatch, müssen Sie immer noch Schwellenwerte für die Protokollierung für jeden Index angeben. OpenSearch Diese Schwellenwerte definieren genau, was auf welcher Protokollebene protokolliert werden soll.

Sie können diese Einstellungen beispielsweise wie folgt angeben: OpenSearch REST API

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

Langsame Protokolle testen

Um zu testen, ob sowohl die Protokolle für Suchanfragen als auch für Shard Slow erfolgreich veröffentlicht werden, sollten Sie mit sehr niedrigen Werten beginnen, um zu überprüfen, ob die Protokolle auch angezeigt werden CloudWatch, und dann die Schwellenwerte auf sinnvollere Werte erhöhen.

Wenn die Protokolle nicht angezeigt werden, überprüfen Sie Folgendes:

  • Existiert die CloudWatch Protokollgruppe? Überprüfen Sie die CloudWatch Konsole.

  • Hat OpenSearch Service die Rechte, in die Protokollgruppe zu schreiben? Überprüfen Sie die OpenSearch Servicekonsole.

  • Ist die OpenSearch Dienstdomäne für die Veröffentlichung in der Protokollgruppe konfiguriert? Überprüfen Sie die OpenSearch Servicekonsole, verwenden Sie die AWS CLI describe-domain-config Option oder rufen Sie DescribeDomainConfig mit einer der folgenden Optionen anSDKs.

  • Sind die Schwellenwerte für die OpenSearch Protokollierung so niedrig, dass Ihre Anfragen sie überschreiten?

    Verwenden Sie den folgenden Befehl, um die Schwellenwerte für die langsame Protokollierung Ihrer Suchanfrage für eine Domain zu überprüfen:

    GET domain-endpoint/_cluster/settings?flat_settings

    Verwenden Sie den folgenden Befehl, um die Schwellenwerte für das Shard Slow-Log für einen Index zu überprüfen:

    GET domain-endpoint/index/_settings?pretty

Wenn Sie Slow-Protokolle für einen Index deaktivieren möchten, setzen Sie alle geänderten Schwellenwerte wieder auf die Standardwerte von -1 zurück.

Wenn Sie die Veröffentlichung CloudWatch über die OpenSearch Service Console deaktivieren oder AWS CLI nicht die Erstellung OpenSearch von Protokollen beenden, sondern nur die Veröffentlichung dieser Protokolle beenden. Überprüfen Sie unbedingt Ihre Indexeinstellungen, falls Sie die Shard Slow-Logs nicht mehr benötigen, und Ihre Domain-Einstellungen, falls Sie die Slow-Logs für Suchanfragen nicht mehr benötigen.

Anzeigen von -Protokollen

Das Anzeigen der Anwendung und die langsame Anmeldung CloudWatch sind wie die Anzeige jedes anderen CloudWatch Protokolls. Weitere Informationen finden Sie unter Protokolldaten anzeigen im Amazon CloudWatch Logs-Benutzerhandbuch.

Hier finden Sie einige Überlegungen zur Anzeige der Protokolle:

  • OpenSearch Service veröffentlicht nur die ersten 255.000 Zeichen jeder Zeile an CloudWatch. Alle verbleibenden Inhalte werden abgeschnitten. Bei Prüfungsprotokollen sind es 10 000 Zeichen pro Nachricht.

  • In CloudWatch haben die Namen der Protokolldatenströme die Suffixe-index-slow-logs,,, und -search-slow-logs-application-logs, -audit-logs um den Inhalt leichter zu identifizieren.