Direkt zum Inhalt

Wie behebe ich Probleme mit Slow-Protokollen in Amazon OpenSearch Service?

Lesedauer: 4 Minute
0

Wenn ich das Suchen von Slow-Protokollen in meiner Amazon-OpenSearch-Service-Domain aktiviere, erhalte ich eine Fehlermeldung. Oder ich kann in meiner Amazon-CloudWatch-Protokollgruppe keine Slow-Protokolle sehen.

Lösung

Fehler „Unable to create the resource access policy“

Wenn das AWS-Konto mehr als 10 Ressourcenrichtlinien in einer einzelnen AWS-Region überschreitet, erhältst du die folgende Fehlermeldung in den CloudWatch-Protokollen:

„Unable to create the Resource Access Policy - You have reached the maximum limit for number of Resource Access Policies for CloudWatch Logs. Please select an existing policy and edit it or delete an older policy and try again.“

Um diesen Fehler zu beheben, erstelle eine Ressourcenrichtlinie, die mehrere Protokollgruppen umfasst:


{  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "es.amazonaws.com"
      },
      "Action": [
        "logs:PutLogEvents",
        "logs:CreateLogStream"
      ],
      "Resource": [
        "ARN-Log-Group-1",
        "ARN-Log-Group-2",
        "ARN-Log-Group-3",
        "ARN-Log-Group-4"
      ]
    }
  ]
}

Hinweis: Ersetze region durch deine Region. Ersetze ACCOUNT_ID durch deine Konto-ID.

Wichtig: Du kannst das Richtlinienkontingent für AWS Identity and Access Management (IAM) nicht erhöhen.

Slow-Protokolle werden nicht übermittelt

Wenn die Slow-Protokolle nicht an CloudWatch übermittelt werden, überprüfe die IAM-Richtlinie oder die OpenSearch-Service-Schwellenwerte.

Du musst die IAM-Richtlinie so konfigurieren, dass deine Abfragen protokolliert werden, da OpenSearch Service die Berechtigung benötigt, in CloudWatch-Protokolle zu schreiben.

Gehe wie folgt vor, um die IAM-Richtlinie zu aktualisieren:

  1. Öffne die OpenSearch-Service-Konsole.
  2. Wähle deine Domain aus.
  3. Wähle den Tab Protokolle und dann Slow-Protokolle suchen aus.
  4. Wähle Select Setup (Einrichtung wählen) aus.
  5. Aktualisiere die IAM-Richtlinie mit deinen Ressourcenwerten:
    
    {  "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "Service": "es.amazonaws.com"
          },
          "Action": [
            "logs:PutLogEvents",
            "logs:CreateLogStream"
          ],
          "Resource": "arn:aws:region:account_id:log-group:/aws/aes/domains/myes/search-logs:*"
        }
      ]
    }
    Hinweis: Ersetze region durch deine Region. Ersetze ACCOUNT_ID durch deine Konto-ID.
  6. (Optional) Füge der Richtlinie für zusätzliche Sicherheit die Bedingungsschlüssel aws:SourceAccount und aws:SourceArn hinzu:
    {
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "account-id"
        },
        "ArnLike": {
          "aws:SourceArn": "arn:aws:es:region:account-id:domain/domain-name"
        }
      }
    }
    Hinweis: Ersetze region durch deine Region. Ersetze ACCOUNT_ID durch deine Konto-ID. Ersetze domain-name durch den Namen deiner Domain.
  7. Wähle Aktivieren aus.

Weitere Informationen findest du unter Protokollveröffentlichung aktivieren (Konsole).

Standardmäßig ist die Protokollierung in OpenSearch Service deaktiviert. Du kannst einen API-Aufruf verwenden, um die Protokollebene und den Zeitschwellenwert festzulegen. Diese Einstellungen sind dynamisch, sodass du die Einstellungen in einem aktuell ausgeführten Cluster aktualisieren kannst, und OpenSearch Service wendet sie sofort an.

Lege einen angemessenen Zeitschwellenwert für deine Domain fest. Wenn alle deine Anforderungen vor dem festgelegten Schwellenwert abgeschlossen sind, übermittelt CloudWatch deine Protokolle nicht an deine Protokollgruppe. Du kannst für jede Debug-Ebene (TRACE, DEBUG, INFO und WARN) individuelle Schwellenwerte auf Indexebene festlegen.

Stelle beispielsweise den Schwellenwert für die WARN-Debug-Ebene für deinen Index in OpenSearch-Dashboards auf 10 Sekunden ein:

PUT /YOURINDEXNAME/_settings
{
  "index.search.slowlog.threshold.query.warn": "10s"
}

Hinweis: Ersetze YOURINDEXNAME durch deinen Indexnamen.

Führe für curl den folgenden Befehl aus:

curl -XPUT http://your_domain_endpoint/index/_settings -d '{"index.search.slowlog.threshold.query.level":"10s"}'

Hinweis: Ersetze your_domain_endpoint durch deinen Domain-Endpunkt. Ersetze 10s durch den Protokoll-Schwellenwert, den du verwenden möchtest.

Um alle Abfragen für deine Domain zu protokollieren, kannst du TRACE auf 0 Millisekunden setzen. Es ist jedoch ressourcenintensiv, alle Abfragen zu protokollieren, was sich auf die Leistung der Domain auswirken kann. Setze den Schwellenwert auf -1, um die Protokollierung zu deaktivieren.

Führe den folgenden Befehl aus, um den Schwellenwert zu überprüfen:

GET /YOURINDEXNAME/_settings?pretty

Hinweis: Ersetze YOURINDEXNAME durch deinen Indexnamen.

OpenSearch Service protokolliert alle Abfragen, die den definierten Schwellenwert überschreiten.

Einstellungen für Slow-Protokolle für alle neuen Indizes auf Cluster-Ebene anwenden

Verwende Indexvorlagen, um Einstellungen für Slow-Protokolle auf Cluster-Ebene auf alle neuen Indizes anzuwenden. In OpenSearch Service gibt es keine clusterweite Einstellung für Slow-Indexprotokolle.

Erstelle eine Indexvorlage, welche die Einstellungen für Slow-Protokolle enthält:


PUT _template/all_indices_template
{
  "index_patterns": ["*"], // This applies to all indices
  "settings": {
    "index.indexing.slowlog.threshold.index.warn": "10s",
    "index.indexing.slowlog.threshold.index.info": "5s",
    "index.indexing.slowlog.threshold.index.debug": "2s",
    "index.indexing.slowlog.threshold.index.trace": "500ms"
  }
}

Die vorherige Vorlage wendet die Einstellungen automatisch auf alle neuen Indizes an, die du nach der Einrichtung der Vorlage erstellst.

Bewährte Methoden

Ergreife die folgenden Maßnahmen:

  • Nimm die Konfigurationsaktualisierungen nacheinander vor.
  • Um langsame Suchabfragen zu identifizieren, lege einen Schwellenwert sowohl für die Abfragephase als auch für die Abrufphase fest.
  • Führe mit einem niedrigen Schwellenwert Tests durch. Erhöhe langsam den Schwellenwert, um nur die Abfragen zu protokollieren, die sich auf die Leistung auswirken oder optimiert werden müssen.
  • Wähle die richtige Anzahl an Shards für deinen Cluster und deinen Anwendungsfall, um die Cluster-Leistung zu optimieren. Weitere Informationen findest du unter Shard-Strategie.
  • Aktiviere bei Slow-Protokollen die Protokollierung auf den Debug-Ebenen TRACE, DEBUG, INFO und WARN. Jede Debug-Ebene protokolliert verschiedene Kategorien von Informationen. Schalte die Protokollierung entsprechend dem Anforderungsstatus ein.

Ähnliche Informationen

Analysieren von Amazon-Elasticsearch-Service-Slow-Protokollen mithilfe von Amazon CloudWatch Logs Streaming und Kibana

Wie behebe ich Probleme mit CloudWatch-Protokollen, sodass diese auf meine OpenSearch-Service-Domain gestreamt werden können?

Amazon-OpenSearch-Service-Fehlerprotokolle anzeigen

AWS OFFICIALAktualisiert vor 6 Monaten