View a markdown version of this page

OpenTelemetry Kollektor - 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.

OpenTelemetry Kollektor

Der OpenTelemetry Collector ist ein herstellerunabhängiger Open-Source-Agent, der Telemetriedaten empfängt, verarbeitet und exportiert. Er fungiert als zentrale Pipeline zwischen Ihren Anwendungen und Amazon. Er sammelt Metriken CloudWatch, Protokolle und Traces aus mehreren Quellen und sendet sie an das CloudWatch Protokoll (OTLP). OpenTelemetry

Die Verwendung des OpenTelemetry Collectors mit CloudWatch bietet die folgenden Vorteile:

  • Erfassen Sie Telemetriedaten von mehreren Anwendungen und Hosts über einen einzigen Agenten und reduzieren Sie so die Anzahl der Verbindungen zu CloudWatch.

  • Verarbeiten und filtern Sie Telemetriedaten, bevor Sie sie an sie senden CloudWatch, einschließlich Hinzufügen oder Entfernen von Attributen, Stapeldaten und Sampling-Traces.

  • Verwenden Sie dieselbe Collector-Konfiguration in allen AWS, lokalen und anderen Cloud-Umgebungen und sorgen Sie so für eine konsistente Telemetriepipeline, unabhängig davon, wo Ihre Anwendungen ausgeführt werden.

  • Senden Sie Metriken CloudWatch mit umfangreichen Labels an, die mithilfe der Prometheus Query Language (PromQL) in Query Studio abgefragt werden können. CloudWatch

Unterstützte Empfänger

Der OpenTelemetry Collector unterstützt eine Vielzahl von Empfängern für die Aufnahme von Telemetriedaten. Sie können OpenTelemetry Empfänger wie den OTLP-Empfänger für Anwendungen verwenden, die mit OpenTelemetry SDKs instrumentiert sind, oder Prometheus-Empfänger, um Metriken von vorhandenen Prometheus-Exporteuren zu entfernen. Zu den CloudWatch häufigsten Prometheus-Empfängern, die verwendet werden, gehören:

  • Prometheus-Empfänger zum Abtasten beliebiger Endpunkte Prometheus-compatible

  • Host-Metrik-Empfänger, zum Erfassen von Metriken auf Systemebene vom Host

  • Kubernetes Cluster-Empfänger, zum Erfassen von Metriken auf Clusterebene vom Kubernetes-API-Server

Sie können mehrere Empfänger in einem einzigen Collector konfigurieren, sodass Sie sowohl die Prometheus-Metriken als auch die Prometheus-Metriken sammeln OpenTelemetry und über dieselbe Pipeline an sie senden können. CloudWatch Die vollständige Liste der verfügbaren Empfänger finden Sie im OpenTelemetry Collector-Repository.

Erste Schritte

Voraussetzung — Wenn Sie den OTLP-Endpunkt für die Ablaufverfolgung verwenden, stellen Sie sicher, dass die Transaktionssuche aktiviert ist.

Schritte:

  1. Laden Sie die neueste Version der OpenTelemetry Collector-Distribution herunter. Weitere Informationen finden Sie in den OpenTelemetry Collector-Versionen.

  2. Installieren Sie den OpenTelemetry Collector auf Ihrem Host. Der Collector läuft auf jedem Betriebssystem und jeder Plattform. Weitere Informationen finden Sie unter Installieren des Kollektors.

  3. Konfigurieren Sie die AWS Anmeldeinformationen auf Ihrem Amazon EC2- oder lokalen Host. Der Collector verwendet diese Anmeldeinformationen, um sich CloudWatch beim Senden von Telemetriedaten zu authentifizieren. Einzelheiten finden Sie weiter unten.

    Setup IAM permissions for Amazon EC2
    Befolgen Sie das nachstehende Verfahren, um die CloudWatchAgentServerPolicy-IAM-Richtlinie an die IAM-Rolle Ihrer Amazon-EC2-Instance anzufügen.
    1. Öffnen Sie unter https://console.aws.amazon.com/iam/ die IAM-Konsole.

    2. Wählen Sie Rollen und suchen Sie nach der Rolle, die von Ihrer Amazon-EC2-Instance verwendet wird.

    3. Wählen Sie auf der Registerkarte Berechtigungen die Option Berechtigungen hinzufügen und dann Richtlinien anfügen.

    4. Verwenden Sie das Suchfeld zur Suche nach der CloudWatchAgentServerPolicy-Richtlinie.

    5. Wählen Sie die CloudWatchAgentServerPolicy-Richtlinie und dann Berechtigungen hinzufügen aus.

    Setup IAM permissions for on-premise hosts
    Sie können einen IAM-Benutzer erstellen, der verwendet werden kann, um Ihren On-Premises-Hosts Berechtigungen zu erteilen.
    1. Öffnen Sie unter https://console.aws.amazon.com/iam/ die IAM-Konsole.

    2. Wählen Sie Benutzer und Neue Benutzer erstellen aus.

    3. Geben Sie unter Benutzerdetails für Benutzername einen Namen für den neuen IAM-Benutzer ein. Dies ist der Anmeldename AWS , der zur Authentifizierung Ihres Gastgebers verwendet wird.

    4. Wählen Sie Weiter aus.

    5. Wählen Sie auf der Seite Berechtigungen festlegen für Berechtigungsoptionen die Option Direktes Anfügen von Richtlinien aus.

    6. Wählen Sie aus der Liste der Berechtigungsrichtlinien die CloudWatchAgentServerPolicy Richtlinie aus, die Sie Ihrem Benutzer hinzufügen möchten.

    7. Wählen Sie Weiter aus.

    8. Vergewissern Sie sich auf der Seite „Überprüfen und erstellen“, dass Sie mit dem Benutzernamen zufrieden sind und dass die CloudWatchAgentServerPolicy Richtlinie in der Übersicht der Berechtigungen aufgeführt ist.

    9. Wählen Sie Create user (Benutzer erstellen) aus.

    10. AWS Zugriffsschlüssel und Geheimschlüssel erstellen und abrufen — Wählen Sie im Navigationsbereich der IAM-Konsole die Option Benutzer aus und wählen Sie dann den Benutzernamen des Benutzers aus, den Sie im vorherigen Schritt erstellt haben.

    11. Wählen Sie auf der Seite des Benutzers die Registerkarte Sicherheits-Anmeldeinformationen aus.

    12. Wählen Sie im Abschnitt Zugriffsschlüssel Zugriffsschlüssel erstellen.

    13. Wählen Sie für Zugriffsschlüssel erstellen – Schritt 1 die Option Befehlszeilenschnittstelle (CLI) aus.

    14. Geben Sie für Zugriffsschlüssel erstellen – Schritt 2 ein optionales Tag ein und wählen Sie Weiter aus.

    15. Wählen Sie unter Zugriffsschlüssel erstellen – Schritt 3 die Option CSV-Datei herunterladen aus, um eine CSV-Datei mit dem Zugriffsschlüssel und dem geheimen Zugriffsschlüssel Ihres IAM-Benutzers zu speichern. Diese Informationen sind für die nächsten Schritte erforderlich.

    16. Wählen Sie Fertig aus.

    17. Konfigurieren Sie Ihre AWS Anmeldeinformationen auf Ihrem lokalen Host, indem Sie den folgenden Befehl eingeben. Ersetzen Sie ACCESS_KEY_ID und SECRET_ACCESS_ID durch Ihren neu generierten Zugriffsschlüssel und den geheimen Zugriffsschlüssel aus der CSV-Datei, die Sie im vorherigen Schritt heruntergeladen haben.

      $ aws configure AWS Access Key ID [None]: ACCESS_KEY_ID AWS Secret Access Key [None]: SECRET_ACCESS_ID Default region name [None]: MY_REGION Default output format [None]: json
    Tipp

    Für lokale Hosts, die nur Metriken oder Logs senden müssen, können Sie die Bearer-Token-Authentifizierung als einfachere Alternative zur Konfiguration von AWS Zugriffsschlüsseln verwenden. Für Inarer-Token sind die aws configure Step- oder Anmeldeinformationsdateien auf dem Host nicht erforderlich. Weitere Informationen finden Sie unter Inhaber-Token-Authentifizierung für Metriken einrichten.

  4. Richten Sie AWS Anmeldeinformationen für Ihre Amazon EKS- oder Kubernetes-Cluster ein. Der einfachste Weg, mit Amazon EKS zu beginnen, ist die Verwendung des EKS OTel Container Insights-Add-on. Wenn Sie den OpenTelemetry Collector lieber direkt verwenden möchten, gehen Sie wie folgt vor, um AWS Anmeldeinformationen für Ihre Amazon EKS- oder Kubernetes-Cluster einzurichten, an die Telemetrie gesendet werden soll. CloudWatch

    Setup IAM permissions for Amazon EKS
    1. Erstellen Sie einen IAM-OIDC-Identitätsanbieter für Ihren Cluster mit dem folgenden Befehl.

      eksctl utils associate-iam-oidc-provider --cluster ${CLUSTER_NAME} --region ${REGION} --approve
    2. Weisen Sie dem Kubernetes-Service-Konto für OTel Collector mithilfe des folgenden Befehls IAM-Rollen zu.

      eksctl create iamserviceaccount \ --name ${COLLECTOR_SERVICE_ACCOUNT}\ --namespace ${NAMESPACE} \ --cluster ${CLUSTER_NAME} \ --region ${REGION} \ --attach-policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy \ --approve \ --override-existing-serviceaccounts
    Setup IAM permissions for Kubernetes
    1. Konfigurieren Sie Ihre AWS Anmeldeinformationen auf Ihrem lokalen Host, indem Sie den folgenden Befehl eingeben. Ersetzen Sie ACCESS_KEY_ID und SECRET_ACCESS_ID durch Ihren neu generierten Zugriffsschlüssel und geheimen Zugriffsschlüssel aus der CSV-Datei, die Sie im vorherigen Schritt heruntergeladen haben. Standardmäßig wird die Anmeldeinformationsdatei unter//gespeichert. home/user aws/credentials. .

      aws configure AWS Access Key ID [None]: ACCESS_KEY_ID AWS Secret Access Key [None]: SECRET_ACCESS_ID Default region name [None]: MY_REGION Default output format [None]: json
    2. Bearbeiten Sie die OpenTelemetry Collector-Ressource, um das neu erstellte AWS-Anmeldeinformationsgeheimnis hinzuzufügen, indem Sie den folgenden Befehl verwenden: kubectl edit OpenTelemetryCollector otel_collector

    3. Fügen Sie mithilfe des Dateieditors die AWS Anmeldeinformationen zum OpenTelemetryCollector Container hinzu, indem Sie die folgende Konfiguration am Anfang der Bereitstellung hinzufügen. Ersetzen Sie den Pfad /home/user/.aws/credentials durch den Speicherort Ihrer lokalen AWS Anmeldeinformationsdatei.

      spec: volumeMounts: - mountPath: /rootfs volumeMounts: - name: aws-credentials mountPath: /root/.aws readOnly: true volumes: - hostPath: path: /home/user/.aws/credentials name: aws-credentials
  5. Konfigurieren Sie den OTLP-Exporter in Ihrer Collector-Konfiguration so, dass er Telemetrie an den Endpunkt sendet. CloudWatch Siehe Beispiele unten.

Authentifizieren Sie sich mit einem Inhaber-Token (API-Schlüssel)

Wenn Sie die AWS Anmeldeinformationen auf dem Host nicht konfigurieren müssen — wenn Sie beispielsweise auf einer anderen AWS Infrastruktur, anderen Cloud-Anbietern oder CI/CD Pipelines ausgeführt werden —, können Sie die Bearer-Token-Authentifizierung anstelle von SigV4 verwenden. Bearer-Token werden für die Metriken- und Logs-Endpunkte unterstützt (für jeden Dienst sind separate API-Schlüssel erforderlich). Die Bearer-Token-Authentifizierung wird für Traces nicht unterstützt.

Anweisungen zur Einrichtung finden Sie unterInhaber-Token-Authentifizierung für Metriken einrichten. Informationen zu Protokollen finden Sie unter Inhaber-Token-Authentifizierung für Protokolle https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_HTTP_Endpoints_BearerTokenAuth.html einrichten.

Ein Beispiel für eine Collector-Konfiguration mit Bearer-Token finden Sie im Beispiel für Bearer-Token-Metriken in den folgenden Collector-Konfigurationsbeispielen.

Beispiele für eine Collector-Konfiguration

Kopieren Sie den folgenden Inhalt und fügen Sie ihn ein, um Ihren Kollektor so zu konfigurieren, dass er Protokolle und Ablaufverfolgungen an die OTLP-Endpunkte sendet.

receivers: otlp: protocols: grpc: endpoint: 0.0.0.0:4317 http: endpoint: 0.0.0.0:4318 exporters: otlphttp/logs: compression: gzip logs_endpoint: logs_otlp_endpoint headers: x-aws-log-group: ency_log_group x-aws-log-stream: default auth: authenticator: sigv4auth/logs otlphttp/traces: compression: gzip traces_endpoint: traces_otlp_endpoint auth: authenticator: sigv4auth/traces extensions: sigv4auth/logs: region: "region" service: "logs" sigv4auth/traces: region: "region" service: "xray" service: telemetry: extensions: [sigv4auth/logs, sigv4auth/traces] pipelines: logs: receivers: [otlp] exporters: [otlphttp/logs] traces: receivers: [otlp] exporters: [otlphttp/traces]

Das Folgende ist ein Beispiel für das Senden von Protokollen und Ablaufverfolgungen mit sigv4 an us-east-1.

receivers: otlp: protocols: grpc: endpoint: 0.0.0.0:4317 http: endpoint: 0.0.0.0:4318 exporters: otlphttp/logs: compression: gzip logs_endpoint: https://logs.us-east-1.amazonaws.com/v1/logs headers: x-aws-log-group: MyApplicationLogs x-aws-log-stream: default auth: authenticator: sigv4auth/logs otlphttp/traces: compression: gzip traces_endpoint: https://xray.us-east-1.amazonaws.com/v1/traces auth: authenticator: sigv4auth/traces extensions: sigv4auth/logs: region: "us-east-1" service: "logs" sigv4auth/traces: region: "us-east-1" service: "xray" service: telemetry: extensions: [sigv4auth/logs, sigv4auth/traces] pipelines: logs: receivers: [otlp] exporters: [otlphttp/logs] traces: receivers: [otlp] exporters: [otlphttp/traces]
Anmerkung

Konfigurieren Sie Ihre OpenTelemetry SDKs mit einer Always_On-Sampling-Konfiguration, um Spannweiten von 100% zuverlässig aufzuzeichnen und mit Application Signals einen vollständigen Überblick über Ihre kritischen Anwendungen zu erhalten. CloudWatch Weitere Informationen finden Sie in einem Beispiel für eine OpenTelemetry Java-SDK-Sampler-Konfiguration. Ein Beispiel zum Einrichten von OpenTelemetry Collector mit X-Ray OTLP-Endpunkt finden Sie im Demo-Repository für Anwendungssignale.

Kopieren Sie den folgenden Inhalt und fügen Sie ihn ein, um Ihren Collector so zu konfigurieren, dass er Metriken an die OTLP-Endpunkte sendet.

receivers: otlp: protocols: http: endpoint: "0.0.0.0:4318" processors: batch: send_batch_size: 200 timeout: 10s exporters: otlphttp: tls: insecure: false endpoint: metrics_otlp_endpoint auth: authenticator: sigv4auth extensions: sigv4auth: service: "monitoring" region: "region" service: extensions: [sigv4auth] pipelines: metrics: receivers: [otlp] processors: [batch] exporters: [otlphttp]

Das Folgende ist ein Beispiel für das Senden von Metriken mithilfe von sigv4 an us-east-1.

receivers: otlp: protocols: http: endpoint: "0.0.0.0:4318" processors: batch: send_batch_size: 200 timeout: 10s exporters: otlphttp: tls: insecure: false endpoint: "https://monitoring.us-east-1.amazonaws.com/v1/metrics:443" auth: authenticator: sigv4auth extensions: sigv4auth: service: "monitoring" region: "us-east-1" service: extensions: [sigv4auth] pipelines: metrics: receivers: [otlp] processors: [batch] exporters: [otlphttp]

Metriken mit Bearer-Token-Authentifizierung

Im Folgenden finden Sie ein Beispiel für das Senden von Metriken mithilfe eines Bearer-Tokens an us-east-1. Anweisungen zur Einrichtung und bewährte Sicherheitsmethoden finden Sie unter. Inhaber-Token-Authentifizierung für Metriken einrichten

extensions: bearertokenauth: filename: "/etc/otel/cw-api-key" receivers: otlp: protocols: http: endpoint: "0.0.0.0:4318" processors: batch: send_batch_size: 200 timeout: 10s exporters: otlphttp: tls: insecure: false endpoint: "https://monitoring.us-east-1.amazonaws.com/v1/metrics" auth: authenticator: bearertokenauth service: extensions: [bearertokenauth] pipelines: metrics: receivers: [otlp] processors: [batch] exporters: [otlphttp]
Wichtig

Codieren Sie API-Schlüssel niemals direkt in Collector-Konfigurationsdateien fest. Verwenden Sie diese Option, filename um aus einem bereitgestellten Geheimnis zu lesen, oder ${env:VAR} um aus einer Umgebungsvariablen zu lesen, die von Ihrem Secrets Manager injiziert wurde.

Anmerkung

Im Gegensatz zu SigV4 benötigen Bearer-Token keine AWS Anmeldeinformationsdateien, IAM-Rollen oder IRSA-Konfiguration. Der Collector kann auf jeder Plattform ohne SDK-Abhängigkeiten ausgeführt werden. AWS