Anwendungen auf Amazon-EKS-Clustern aktivieren
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 die erweiterte Konfiguration der AWS-Managementkonsole, AWS CDK, oder Add-Ons von CloudWatch Observability für die automatische Überwachung verwenden.
Themen
Application Signals auf Amazon-EKS-Clustern mit der Konsole aktivieren
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 OpenTelemetry bereits mit einer Anwendung verwenden, die Sie für Application Signals aktivieren möchten, sehen Sie sich Unterstützte Systeme an, bevor Sie Application Signals aktivieren.
So aktivieren Sie Application Signals für Ihre Anwendungen auf einem vorhandenen Amazon-EKS-Cluster
Anmerkung
Sofern Application Signals noch nicht aktiviert ist, befolgen Sie die Anweisungen in Application Signals in Ihrem Konto aktivieren und anschließend wie unten beschrieben.
Öffnen Sie die CloudWatch-Konsole unter https://console.aws.amazon.com/cloudwatch/
. Wählen Sie Application Signals.
Wählen Sie für Plattform angeben die Option EKS.
Wählen Sie für Einen EKS-Cluster auswählen den Cluster aus, in dem Sie Application Signals aktivieren möchten.
Wenn für diesen Cluster das Add-On von Amazon CloudWatch Observability EKS noch nicht aktiviert ist, werden Sie aufgefordert, es zu aktivieren. In diesem Fall, gehen Sie wie folgt vor:
Wählen Sie CloudWatch-Beobachtbarkeits-EKS-Add-On hinzufügen. Die Amazon-EKS-Konsole wird angezeigt.
Aktivieren Sie das Kontrollkästchen für Amazon-CloudWatch-Beobachtbarkeit und wählen Sie Weiter.
Das Beobachtbarkeits-EKS-Add-On von CloudWatch aktiviert sowohl Application Signals als auch CloudWatch Container Insights mit verbesserter Beobachtbarkeit für Amazon EKS. Weitere Informationen zu Container Insights finden Sie unter Container Insights.
Wählen Sie die neueste Version des zu installierenden Add-Ons.
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. Ersetzen Sie
my-worker-node-roledurch die IAM-Rolle, die von Ihren Kubernetes-Worker-Knoten verwendet wird.aws iam attach-role-policy \ --role-namemy-worker-node-role\ --policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy \ --policy-arn arn:aws:iam::aws:policy/AWSXRayWriteOnlyAccessInformationen zum Erstellen einer Servicerolle für die Verwendung des Add-Ons finden Sie unter Installieren des CloudWatch-Agenten über das Add-On von Amazon CloudWatch Observability EKS oder das Helm-Chart.
Wählen Sie Weiter, bestätigen Sie die Informationen auf dem Bildschirm und wählen Sie Erstellen.
Wählen Sie auf dem nächsten Bildschirm CloudWatch Application Signals aktivieren, um zur CloudWatch-Konsole zurückzukehren und den Vorgang abzuschließen.
-
Es gibt zwei Optionen, um Ihre Anwendungen für Application Signals zu aktivieren. Aus Konsistenzgründen wird die Auswahl einer Option pro Cluster empfohlen.
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 Einrichten einer Node.js-Anwendung mit dem ESM-Modulformat fort.
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 unter Keine Application-Signals-Daten für eine Python-Anwendung, die einen WSGI-Server verwendet Informationen zur Verwendung von Application Signals.
Wir haben auch andere Punkte ermittelt, die Sie bei der Aktivierung von Python-Anwendungen für Application Signals berücksichtigen sollten. Weitere Informationen finden Sie unter Die Python-Anwendung wird nicht gestartet, nachdem Application Signals aktiviert wurde.
Einrichten 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.
So aktivieren Sie Application Signals für eine Node.js-Anwendung mit ESM
Installieren Sie die relevanten Abhängigkeiten in Ihrer Node.js-Anwendung für die automatische Instrumentierung:
npm install @aws/aws-distro-opentelemetry-node-autoinstrumentation npm install @opentelemetry/instrumentation@0.54.0Fü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"]Fügen Sie die Umgebungsvariablen
OTEL_RESOURCE_ATTRIBUTES_POD_NAME,OTEL_RESOURCE_ATTRIBUTES_NODE_NAME,OTEL_RESOURCE_ATTRIBUTES_DEPLOYMENT_NAME,POD_NAMESPACEundOTEL_RESOURCE_ATTRIBUTESzur 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)"Stellen Sie die Node.js-Anwendung für den 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 Add-Ons von CloudWatch Beobachtbarkeit
Ab Version v4.0.0-eksbuild.1 des Amazon EKS-Add-ons CloudWatch Beobachtbarkeit können Sie Application Signals automatisch für alle Service-Workloads in Ihren EKS-Clustern aktivieren, indem Sie ein neues zentrales Flag zur Konfiguration der automatischen Überwachung in der erweiterten Konfiguration des Add-ons verwenden.
Um das automatische Überwachungsfeature zu wählen, müssen Sie die erweiterte Konfiguration ändern, wenn Sie das Add-on oder den Helm-Chart erstellen oder aktualisieren. Wenn monitorAllServices auf wahr gesetzt wird, erkennt das CloudWatch Beobachtbarkeits-Add-on alle Kubernetes-Service-Workloads und versucht, AWS Distro für OpenTelemetry (ADOT)-SDKs während der Bereitstellung automatisch einzufügen. Darüber hinaus werden durch die Aktivierung von restartPods alle Service-Workload-Pods neu gestartet, sodass die ADOT-SDKs im Rahmen eines automatisierten Neubereitstellungsprozesses sofort eingefügt werden.
--configuration-values '{ "manager":{ "applicationSignals":{ "autoMonitor":{ "monitorAllServices":true, "restartPods":true } } } }'
Das CloudWatch-Beobachtbarkeits-Add-on bietet außerdem zusätzliche, detaillierte Kontrollmöglichkeiten, um bestimmte Services je nach Bedarf in der neuen erweiterten Konfiguration ein- oder auszuschließen. Weitere Informationen finden Sie unter Konfigurieren von Application Signals für Ihren Amazon-EKS-Cluster .
Application Signals auf Amazon-EKS mit AWS CDK aktivieren
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 Application Signals in Ihrem Konto aktivieren.
Application Signals für Ihre Anwendungen aktivieren.
import { aws_applicationsignals as applicationsignals } from 'aws-cdk-lib'; const cfnDiscovery = new applicationsignals.CfnDiscovery(this, 'ApplicationSignalsServiceRole', { } );Die Discovery-CloudFormation-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 Serviceverknüpfte Rollenberechtigungen für CloudWatch Application Signals.
-
Das
amazon-cloudwatch-observability-Add-on installieren.Erstellen Sie eine IAM-Rolle mit dem
CloudWatchAgentServerPolicyund dem OIDC, die dem Cluster zugeordnet sind.const cloudwatchRole = new Role(this, 'CloudWatchAgentAddOnRole', { assumedBy: new OpenIdConnectPrincipal(cluster.openIdConnectProvider), managedPolicies: [ManagedPolicy.fromAwsManagedPolicyName('CloudWatchAgentServerPolicy')], });
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 });Fügen Sie dem
PodTemplateAbschnitt Ihrer Workload-Manifestdatei eine der folgenden Optionen hinzu.Sprache Datei Java
instrumentation.opentelemetry.io/inject-java: "true"
Python
instrumentation.opentelemetry.io/inject-python: "true"
.Net
instrumentation.opentelemetry.io/inject-dotnet: "true"
Node.js
instrumentation.opentelemetry.io/inject-nodejs: "true"
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)