Aktivieren Sie Ihre Anwendungen auf Amazon EKS-Clustern - Amazon CloudWatch

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.

Aktivieren Sie Ihre Anwendungen auf Amazon EKS-Clustern

CloudWatch Application Signals wird für Java-, Python-, Node.js- und .NET-Anwendungen unterstützt. Um Application Signals für Ihre Anwendungen auf einem vorhandenen Amazon EKS-Cluster zu aktivieren, können Sie das, AWS Management Console AWS CDK, oder CloudWatch Observability-Add-on Auto Monitor Advanced Configuration verwenden.

Aktivieren Sie Application Signals auf einem Amazon EKS-Cluster mithilfe der Konsole

Verwenden Sie die Anweisungen in diesem Abschnitt, um CloudWatch Application Signals für Ihre Anwendungen auf einem vorhandenen Amazon EKS-Cluster zu aktivieren.

Wichtig

Wenn Sie bereits eine Anwendung verwenden OpenTelemetry , die Sie für Application Signals aktivieren möchten, finden Sie weitere Informationen, OpenTelemetry Kompatibilität bevor Sie Application Signals aktivieren.

So aktivieren Sie Application Signals für Ihre Anwendungen auf einem vorhandenen Amazon-EKS-Cluster
Anmerkung

Wenn Sie Application Signals noch nicht aktiviert haben, folgen Sie den Anweisungen unter Aktivieren Sie Application Signals in Ihrem Konto und gehen Sie dann wie folgt vor.

  1. Öffnen Sie die CloudWatch Konsole unter https://console.aws.amazon.com/cloudwatch/.

  2. Wählen Sie Application Signals.

  3. Wählen Sie für Plattform angeben die Option EKS.

  4. Wählen Sie für Einen EKS-Cluster auswählen den Cluster aus, in dem Sie Application Signals aktivieren möchten.

  5. Wenn für diesen Cluster das Amazon CloudWatch Observability EKS-Add-on noch nicht aktiviert ist, werden Sie aufgefordert, es zu aktivieren. In diesem Fall, gehen Sie wie folgt vor:

    1. Wählen Sie CloudWatch Observability EKS-Add-on hinzufügen. Die Amazon-EKS-Konsole wird angezeigt.

    2. Aktivieren Sie das Kontrollkästchen für Amazon CloudWatch Observability und wählen Sie Weiter.

      Das CloudWatch Observability EKS-Add-on ermöglicht sowohl Application Signals als auch CloudWatch Container Insights mit verbesserter Observability für Amazon EKS. Weitere Informationen zu Container Insights finden Sie unter Container Insights.

    3. Wählen Sie die neueste Version des zu installierenden Add-Ons.

    4. Wählen Sie eine IAM-Rolle aus, die für das Add-On verwendet werden soll. Wenn Sie Von Knoten erben wählen, fügen Sie der IAM-Rolle, die von Ihren Worker-Knoten verwendet wird, die richtigen Berechtigungen hinzu. my-worker-node-roleErsetzen Sie es durch die IAM-Rolle, die von Ihren Kubernetes-Worker-Knoten verwendet wird.

      aws iam attach-role-policy \ --role-name my-worker-node-role \ --policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy \ --policy-arn arn:aws:iam::aws:policy/AWSXRayWriteOnlyAccess
    5. Informationen zum Erstellen einer Servicerolle für die Verwendung des Add-Ons finden Sie unter Installieren Sie den CloudWatch Agenten mit dem Amazon CloudWatch Observability EKS-Add-on oder dem Helm-Diagramm.

    6. Wählen Sie Weiter, bestätigen Sie die Informationen auf dem Bildschirm und wählen Sie Erstellen.

    7. Wählen Sie auf dem nächsten Bildschirm Enable CloudWatch Application Signals aus, um zur CloudWatch Konsole zurückzukehren und den Vorgang abzuschließen.

  6. Es gibt zwei Optionen, um Ihre Anwendungen für Application Signals zu aktivieren. Aus Konsistenzgründen empfehlen wir, dass Sie eine Option pro Cluster wählen.

    • Die Konsolenoption ist einfacher. Wenn Sie diese Methode verwenden, werden Ihre Pods sofort neu gestartet.

    • Mit der Methode Annotate Manifest File haben Sie mehr Kontrolle darüber, wann Ihre Pods neu gestartet werden. Außerdem können Sie Ihre Überwachung dezentraler verwalten, falls Sie sie nicht zentralisieren möchten.

    Anmerkung

    Wenn Sie Application Signals für eine Node.js -Anwendung mit ESM aktivieren, fahren Sie stattdessen mit fort. Einrichtung einer Node.js -Anwendung mit dem ESM-Modulformat

    Console

    Die Konsolenoption verwendet die erweiterte Konfiguration des Amazon CloudWatch Observability EKS-Add-ons, um Application Signals für Ihre Services einzurichten. Weitere Informationen über das Add-on finden Sie unter(Optional) Zusätzliche Konfiguration.

    Wenn Sie keine Liste mit Workloads und Namespaces sehen, stellen Sie sicher, dass Sie über die entsprechenden Berechtigungen verfügen, um sie für diesen Cluster anzuzeigen. Weitere Informationen finden Sie unter Erforderliche Berechtigungen.

    Sie können entweder alle Service-Workloads überwachen, indem Sie das Kontrollkästchen Automatische Überwachung aktivieren, oder Sie können gezielt bestimmte Workloads und Namespaces für die Überwachung auswählen.

    Gehen Sie wie folgt vor, um alle Service-Workloads mit Auto Monitor zu überwachen:

    1. Aktivieren Sie das Kontrollkästchen Automatische Überwachung, um automatisch alle Service-Workloads in einem Cluster auszuwählen.

    2. Wählen Sie auto neu starten, um alle Workload-Pods neu zu starten und Application Signals sofort zu aktivieren, wobei AWS Distro for OpenTelemetry Auto-Instrumentation (ADOT) in Ihre Pods SDKs injiziert wird.

    3. Wählen Sie Erledigt aus. Wenn Automatischer Neustart ausgewählt ist, aktiviert das CloudWatch Observability EKS-Add-on Application Signals sofort. Andernfalls werden Application Signals bei der nächsten Bereitstellung der einzelnen Workloads aktiviert.

    Sie können einzelne Workloads oder ganze Namespaces überwachen.

    Um einen einzelnen Workload zu überwachen:

    1. Aktivieren Sie das Kontrollkästchen neben dem Workload, den Sie überwachen möchten.

    2. Verwenden Sie die Dropdownliste Sprache (n) auswählen, um die Sprache des Workloads auszuwählen. Wählen Sie die Sprachen aus, für die Sie Application Signals aktivieren möchten, und klicken Sie dann auf das Häkchensymbol (✓), um diese Auswahl zu speichern.

      Stellen Sie bei Python-Anwendungen sicher, dass Ihre Anwendung die erforderlichen Voraussetzungen erfüllt, bevor Sie fortfahren. Weitere Informationen finden Sie unter Die Python-Anwendung startet nicht, nachdem Application Signals aktiviert wurde.

    3. Wählen Sie Erledigt aus. Das Amazon CloudWatch Observability EKS-Add-on fügt sofort AWS Distro for OpenTelemetry Autoinstrumentation (ADOT) SDKs in Ihre Pods ein und löst Pod-Neustarts aus, um die Erfassung von Anwendungsmetriken und Traces zu ermöglichen.

    Um einen ganzen Namespace zu überwachen:

    1. Aktivieren Sie das Kontrollkästchen neben dem Namespace, den Sie überwachen möchten.

    2. Verwenden Sie die Dropdownliste Sprache (n) auswählen, um die Sprache des Namespaces auszuwählen. Wählen Sie die Sprachen aus, für die Sie Application Signals aktivieren möchten, und klicken Sie dann auf das Häkchensymbol (✓), um diese Auswahl zu speichern. Dies gilt für alle Workloads in diesem Namespace, unabhängig davon, ob sie derzeit bereitgestellt werden oder in future bereitgestellt werden.

      Stellen Sie bei Python-Anwendungen sicher, dass Ihre Anwendung die erforderlichen Voraussetzungen erfüllt, bevor Sie fortfahren. Weitere Informationen finden Sie unter Die Python-Anwendung startet nicht, nachdem Application Signals aktiviert wurde.

    3. Wählen Sie Erledigt aus. Das Amazon CloudWatch Observability EKS-Add-on fügt sofort AWS Distro for OpenTelemetry Autoinstrumentation (ADOT) SDKs in Ihre Pods ein und löst Pod-Neustarts aus, um die Erfassung von Anwendungsmetriken und Traces zu ermöglichen.

    Um Application Signals in einem anderen Amazon-EKS-Cluster zu aktivieren, wählen Sie auf dem Services-Bildschirm die Option Application Signals aktivieren.

    Annotate manifest file

    In der CloudWatch Konsole wird im Abschnitt Monitor Services erklärt, dass Sie einer Manifest-YAML im Cluster eine Anmerkung hinzufügen müssen. Durch das Hinzufügen dieser Anmerkung wird die Anwendung automatisch so instrumentiert, dass sie Metriken, Traces und Protokolle an Application Signals sendet.

    Sie haben zwei Möglichkeiten für die Anmerkung:

    • Workload kommentieren instrumentiert automatisch einen einzelnen Workload im Cluster.

    • Namespace kommentieren instrumentiert automatisch alle Workloads, die im ausgewählten Namespace bereitgestellt werden.

    Wählen Sie eine dieser Optionen und folgen Sie den entsprechenden Schritten:

    • Um einen einzelnen Workload mit Anmerkungen zu versehen:

      1. Wählen Sie Workload kommentieren.

      2. Fügen Sie eine der folgenden Zeilen in den PodTemplate Abschnitt der Workload-Manifestdatei ein.

        • Für Java-Workloads: annotations: instrumentation.opentelemetry.io/inject-java: "true"

        • Für Python-Workloads: annotations: instrumentation.opentelemetry.io/inject-python: "true"

          Für Python-Anwendungen sind zusätzliche Konfigurationen erforderlich. Weitere Informationen finden Sie unter Die Python-Anwendung startet nicht, nachdem Application Signals aktiviert wurde.

        • Für .NET-Workloads annotations: instrumentation.opentelemetry.io/inject-dotnet: "true"

          Anmerkung

          Um Application Signals für einen .NET-Workload auf Alpine Linux (linux-musl-x64) -basierten Images zu aktivieren, fügen Sie die folgende Anmerkung hinzu.

          instrumentation.opentelemetry.io/otel-dotnet-auto-runtime: "linux-musl-x64"
        • Für Node.js -Workloads: annotations: instrumentation.opentelemetry.io/inject-nodejs: "true"

      3. Geben Sie in Ihrem Terminal kubectl apply -f your_deployment_yaml ein, um die Änderung zu übernehmen.

    • Um alle Workloads in einem Namespace mit Anmerkungen zu versehen:

      1. Wählen Sie Namespace kommentieren.

      2. Fügen Sie eine der folgenden Zeilen in den Metadatenbereich der Namespace-Manifestdatei ein. Wenn der Namespace Java-, Python- und .NET-Workloads umfasst, fügen Sie alle folgenden Zeilen in die Namespace-Manifestdatei ein.

        • Wenn der Namespace Java-Workloads enthält: annotations: instrumentation.opentelemetry.io/inject-java: "true"

        • Wenn es Python-Workloads im Namespace gibt: annotations: instrumentation.opentelemetry.io/inject-python: "true"

          Für Python-Anwendungen sind zusätzliche Konfigurationen erforderlich. Weitere Informationen finden Sie unter Die Python-Anwendung startet nicht, nachdem Application Signals aktiviert wurde.

        • Falls es .NET-Workloads im Namespace gibt: annotations: instrumentation.opentelemetry.io/inject-dotnet: "true"

        • Wenn es Node.JS -Workloads im Namespace gibt: annotations: instrumentation.opentelemetry.io/inject-nodejs: "true"

      3. Geben Sie in Ihrem Terminal kubectl apply -f your_namespace_yaml ein, um die Änderung zu übernehmen.

      4. Geben Sie in Ihrem Terminal einen Befehl ein, um alle Pods im Namespace neu zu starten. Ein Beispielbefehl zum Neustarten von Bereitstellungs-Workloads ist kubectl rollout restart deployment -n namespace_name

  7. Wählen Sie Nach Abschluss Services anzeigen. Dadurch gelangen Sie zur Services-Ansicht von Application Signals, in der Sie die Daten sehen können, die Application Signals sammelt. Es kann einige Minuten dauern, bis Daten angezeigt werden.

    Um Application Signals in einem anderen Amazon-EKS-Cluster zu aktivieren, wählen Sie auf dem Services-Bildschirm die Option Application Signals aktivieren.

    Weitere Informationen über die Services-Ansicht finden Sie unter Den Betriebsstatus Ihrer Anwendungen mit Application Signals überwachen.

Anmerkung

Wenn Sie einen WSGI-Server für Ihre Python-Anwendung verwenden, finden Sie Informationen Keine Anwendungssignaldaten für eine Python-Anwendung, die einen WSGI-Server verwendet zum Funktionieren von Anwendungssignalen unter.

Wir haben auch andere Überlegungen identifiziert, die Sie bei der Aktivierung von Python-Anwendungen für Application Signals berücksichtigen sollten. Weitere Informationen finden Sie unter Die Python-Anwendung startet nicht, nachdem Application Signals aktiviert wurde.

Einrichtung einer Node.js -Anwendung mit dem ESM-Modulformat

Wir bieten eingeschränkte Unterstützung für Node.js -Anwendungen im ESM-Modulformat. Details hierzu finden Sie unter Bekannte Einschränkungen von Node.js mit ESM.

Für das ESM-Modulformat funktioniert die Aktivierung von Application Signals über die Konsole oder durch Kommentieren der Manifestdatei nicht. Überspringen Sie Schritt 8 des vorherigen Verfahrens und gehen Sie stattdessen wie folgt vor.

Um Anwendungssignale für eine Node.js -Anwendung mit ESM zu aktivieren
  1. Installieren Sie die relevanten Abhängigkeiten in Ihrer Anwendung Node.js für die automatische Instrumentierung:

    npm install @aws/aws-distro-opentelemetry-node-autoinstrumentation npm install @opentelemetry/instrumentation@0.54.0
  2. Fügen Sie der Dockerfile für Ihre Anwendung die folgenden Umgebungsvariablen hinzu und erstellen Sie das Image.

    ... ENV OTEL_AWS_APPLICATION_SIGNALS_ENABLED=true ENV OTEL_TRACES_SAMPLER_ARG='endpoint=http://cloudwatch-agent.amazon-cloudwatch:2000' ENV OTEL_TRACES_SAMPLER='xray' ENV OTEL_EXPORTER_OTLP_PROTOCOL='http/protobuf' ENV OTEL_EXPORTER_OTLP_TRACES_ENDPOINT='http://cloudwatch-agent.amazon-cloudwatch:4316/v1/traces' ENV OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT='http://cloudwatch-agent.amazon-cloudwatch:4316/v1/metrics' ENV OTEL_METRICS_EXPORTER='none' ENV OTEL_LOGS_EXPORTER='none' ENV NODE_OPTIONS='--import @aws/aws-distro-opentelemetry-node-autoinstrumentation/register --experimental-loader=@opentelemetry/instrumentation/hook.mjs' ENV OTEL_SERVICE_NAME='YOUR_SERVICE_NAME' #replace with a proper service name ENV OTEL_PROPAGATORS='tracecontext,baggage,b3,xray' ... # command to start the application # for example # CMD ["node", "index.mjs"]
  3. Fügen Sie die UmgebungsvariablenOTEL_RESOURCE_ATTRIBUTES_POD_NAME, OTEL_RESOURCE_ATTRIBUTES_NODE_NAMEOTEL_RESOURCE_ATTRIBUTES_DEPLOYMENT_NAME, POD_NAMESPACE und OTEL_RESOURCE_ATTRIBUTES zur Bereitstellungs-Yaml-Datei für die Anwendung hinzu. Zum Beispiel:

    apiVersion: apps/v1 kind: Deployment metadata: name: nodejs-app labels: app: nodejs-app spec: replicas: 2 selector: matchLabels: app: nodejs-app template: metadata: labels: app: nodejs-app # annotations: # make sure this annotation doesn't exit # instrumentation.opentelemetry.io/inject-nodejs: 'true' spec: containers: - name: nodejs-app image:your-nodejs-application-image #replace with a proper image uri imagePullPolicy: Always ports: - containerPort: 8000 env: - name: OTEL_RESOURCE_ATTRIBUTES_POD_NAME valueFrom: fieldRef: fieldPath: metadata.name - name: OTEL_RESOURCE_ATTRIBUTES_NODE_NAME valueFrom: fieldRef: fieldPath: spec.nodeName - name: OTEL_RESOURCE_ATTRIBUTES_DEPLOYMENT_NAME valueFrom: fieldRef: fieldPath: metadata.labels['app'] # Assuming 'app' label is set to the deployment name - name: POD_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace - name: OTEL_RESOURCE_ATTRIBUTES value: "k8s.deployment.name=$(OTEL_RESOURCE_ATTRIBUTES_DEPLOYMENT_NAME),k8s.namespace.name=$(POD_NAMESPACE),k8s.node.name=$(OTEL_RESOURCE_ATTRIBUTES_NODE_NAME),k8s.pod.name=$(OTEL_RESOURCE_ATTRIBUTES_POD_NAME)"
  4. Stellen Sie die Anwendung Node.js auf dem Cluster bereit.

Sobald Sie Ihre Anwendungen auf den Amazon EKS-Clustern aktiviert haben, können Sie den Zustand Ihrer Anwendung überwachen. Weitere Informationen finden Sie unter Den Betriebsstatus Ihrer Anwendungen mit Application Signals überwachen.

Aktivieren Sie Application Signals auf einem Amazon EKS-Cluster mithilfe der erweiterten Konfiguration des CloudWatch Observability-Add-ons

Ab Version v4.0.0-eksbuild.1 des CloudWatch Observability Amazon EKS-Add-ons können Sie Application Signals automatisch für alle Service-Workloads in Ihren EKS-Clustern aktivieren, indem Sie ein neues zentrales Auto Monitor-Konfigurationsflag in der erweiterten Konfiguration des Add-ons verwenden.

Um die automatische Überwachungsfunktion zu wählen, müssen Sie die erweiterte Konfiguration ändern, wenn Sie das Add-on oder das Helm-Diagramm erstellen oder aktualisieren. Wenn das CloudWatch Observability-Add-on monitorAllServices auf „true“ gesetzt ist, erkennt es alle Kubernetes-Dienst-Workloads und versucht, AWS Distro for OpenTelemetry (ADOT) während der Bereitstellung automatisch einzufügen. SDKs Darüber hinaus werden durch die Aktivierung alle Service-Workload-Pods neu gestartetrestartPods, sodass der ADOT im Rahmen eines automatisierten Neubereitstellungsprozesses sofort eingefügt wird. SDKs

--configuration-values '{ "manager":{ "applicationSignals":{ "autoMonitor":{ "monitorAllServices":true, "restartPods":true } } } }'

CloudWatch Das Observability Add-on bietet außerdem zusätzliche, detaillierte Kontrollmöglichkeiten, mit denen bestimmte Dienste je nach Bedarf in der neuen erweiterten Konfiguration aufgenommen oder ausgeschlossen werden können. Weitere Informationen finden Sie unter Konfiguration von Anwendungssignalen für Ihren Amazon EKS-Cluster .

Aktivieren Sie Anwendungssignale auf Amazon EKS mit AWS CDK

Wenn Sie Application Signals in diesem Konto noch nicht aktiviert haben, müssen Sie Application Signals die Berechtigungen gewähren, die es benötigt, um Ihre Services zu erkennen. Siehe Aktivieren Sie Application Signals in Ihrem Konto.

  1. Aktivieren Sie Application Signals für Ihre Anwendungen.

    import { aws_applicationsignals as applicationsignals } from 'aws-cdk-lib'; const cfnDiscovery = new applicationsignals.CfnDiscovery(this, 'ApplicationSignalsServiceRole', { } );

    Die CloudFormation Discovery-Ressource gewährt Application Signals die folgenden Berechtigungen:

    • xray:GetServiceGraph

    • logs:StartQuery

    • logs:GetQueryResults

    • cloudwatch:GetMetricData

    • cloudwatch:ListMetrics

    • tag:GetResources

    Weitere Informationen über diese Rolle finden Sie unter Dienstbezogene Rollenberechtigungen für CloudWatch Application Signals.

  2. Installieren Sie das amazon-cloudwatch-observability Add-on.

    1. Erstellen Sie eine IAM-Rolle mit dem CloudWatchAgentServerPolicy und dem OIDC, die dem Cluster zugeordnet sind.

      const cloudwatchRole = new Role(this, 'CloudWatchAgentAddOnRole', { assumedBy: new OpenIdConnectPrincipal(cluster.openIdConnectProvider), managedPolicies: [ManagedPolicy.fromAwsManagedPolicyName('CloudWatchAgentServerPolicy')], });
  3. Installieren Sie das Add-on mit der oben erstellten IAM-Rolle.

    new CfnAddon(this, 'CloudWatchAddon', { addonName: 'amazon-cloudwatch-observability', clusterName: cluster.clusterName, serviceAccountRoleArn: cloudwatchRole.roleArn });
  4. Fügen Sie dem PodTemplate Abschnitt Ihrer Workload-Manifestdatei eine der folgenden Optionen hinzu.

    Sprache Datei

    Java

    instrumentation.opentelemetry.io/inject-java: „wahr“

    Python

    instrumentation.opentelemetry.io/inject-python: „wahr“

    .Net

    instrumentation.opentelemetry.io/inject-dotnet: „wahr“

    Node.js

    instrumentation.opentelemetry.io/inject-nodejs: „wahr“

    const deployment = { apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "sample-app" }, spec: { replicas: 3, selector: { matchLabels: { "app": "sample-app" } }, template: { metadata: { labels: { "app": "sample-app" }, annotations: { "instrumentation.opentelemetry.io/inject-$LANG": "true" } }, spec: {...}, }, }, }; cluster.addManifest('sample-app', deployment)