Ausführen des X-Ray-Daemons auf Amazon ECS - AWS X-Ray

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.

Ausführen des X-Ray-Daemons auf Amazon ECS

Erstellen Sie in Amazon ECS ein Docker-Image, das den X-Ray-Daemon ausführt. Laden Sie es in ein Docker-Image-Repository und stellen Sie es dann für Ihren Amazon ECS--Cluster bereit. Sie können Ihrer Anwendung über Port-Zuordnungen und Netzwerkmodus-Einstellungen in Ihrer Aufgabendefinitionsdatei die Kommunikation mit dem Daemon-Container ermöglichen.

Verwenden des offiziellen -Docker-Image

X-Ray stellt ein Docker-Container-Image bereit, das Sie zusammen mit Ihrer Anwendung bereitstellen können.

$ docker pull amazon/aws-xray-daemon

Beispiel Aufgabendefinition

{ "name": "xray-daemon", "image": "amazon/aws-xray-daemon", "cpu": 32, "memoryReservation": 256, "portMappings" : [ { "hostPort": 0, "containerPort": 2000, "protocol": "udp" } ] }

Entwickeln und Erstellen eines Docker-Images

Bei einer benutzerdefinierten Konfiguration müssen Sie möglicherweise ein eigenes Docker-Image definieren.

Fügen Sie verwaltete Richtlinien zu Ihrer Aufgabenrolle hinzu, um dem Daemon Berechtigung zum Hochladen von Ablaufverfolgungsdaten in X-Ray gewähren. Weitere Informationen finden Sie unter Erteilen der Berechtigung zum Senden von Daten an X-Ray .

Erstellen Sie mit einer der folgenden Dockerfiles ein Abbild, mit dem der Daemon ausführt wird.

Beispiel Dockerfile — Amazon Linux

FROM amazonlinux RUN yum install -y unzip RUN curl -o daemon.zip https://s3.us-east-2.amazonaws.com/aws-xray-assets.us-east-2/xray-daemon/aws-xray-daemon-linux-3.x.zip RUN unzip daemon.zip && cp xray /usr/bin/xray ENTRYPOINT ["/usr/bin/xray", "-t", "0.0.0.0:2000", "-b", "0.0.0.0:2000"] EXPOSE 2000/udp EXPOSE 2000/tcp
Anmerkung

Die Flags -t und -b sind erforderlich, um eine Bindungsadresse anzugeben, die den Loopback einer Multi-Container-Umgebung überwacht.

Beispiel Dockerfile — Ubuntu

Für Debian-Derivate müssen Sie auch Zertifikate installieren, die von einer Zertifizierungsstelle (Certificate Authority, CA) ausgegeben wurden, um Probleme beim Herunterladen des Installationsprogramms zu vermeiden.

FROM ubuntu:16.04 RUN apt-get update && apt-get install -y --force-yes --no-install-recommends apt-transport-https curl ca-certificates wget && apt-get clean && apt-get autoremove && rm -rf /var/lib/apt/lists/* RUN wget https://s3.us-east-2.amazonaws.com/aws-xray-assets.us-east-2/xray-daemon/aws-xray-daemon-3.x.deb RUN dpkg -i aws-xray-daemon-3.x.deb ENTRYPOINT ["/usr/bin/xray", "--bind=0.0.0.0:2000", "--bind-tcp=0.0.0.0:2000"] EXPOSE 2000/udp EXPOSE 2000/tcp

In Ihrer Aufgabendefinition hängt die Konfiguration von dem Netzwerkmodus ab, den Sie tatsächlich nutzen. Brückennetzwerke sind die Standardeinstellung und können in Ihrer Standard-VPC verwendet werden. Stellen Sie in einem Bridge-Netzwerk dieAWS_XRAY_DAEMON_ADDRESS-Umgebungsvariable, um dem X-Ray-SDK mitzuteilen, auf welchen Container-Port verwiesen werden soll. Sie können beispielsweise UDP-Port 2000 veröffentlichen und einen Link von Ihrem Anwendungs-Container zum Daemon-Container erstellen.

Beispiel Aufgabendefinition

{ "name": "xray-daemon", "image": "123456789012.dkr.ecr.us-east-2.amazonaws.com/xray-daemon", "cpu": 32, "memoryReservation": 256, "portMappings" : [ { "hostPort": 0, "containerPort": 2000, "protocol": "udp" } ] }, { "name": "scorekeep-api", "image": "123456789012.dkr.ecr.us-east-2.amazonaws.com/scorekeep-api", "cpu": 192, "memoryReservation": 512, "environment": [ { "name" : "AWS_REGION", "value" : "us-east-2" }, { "name" : "NOTIFICATION_TOPIC", "value" : "arn:aws:sns:us-east-2:123456789012:scorekeep-notifications" }, { "name" : "AWS_XRAY_DAEMON_ADDRESS", "value" : "xray-daemon:2000" } ], "portMappings" : [ { "hostPort": 5000, "containerPort": 5000 } ], "links": [ "xray-daemon" ] }

Wenn Sie Ihren Cluster im privaten Subnetz einer VPC ausführen, können Sie Ihren Containern mit dem awsvpc-Netzwerkmodus einer Elastic Network-Schnittstelle (ENI) zuweisen. Auf diese Weise können Sie die Nutzung von Links vermeiden. Lassen Sie den Host-Port in den Port-Zuordnungen, dem Link und der Umgebungsvariable AWS_XRAY_DAEMON_ADDRESS weg.

Beispiel VPC-Aufgabendefinition

{ "family": "scorekeep", "networkMode":"awsvpc", "containerDefinitions": [ { "name": "xray-daemon", "image": "123456789012.dkr.ecr.us-east-2.amazonaws.com/xray-daemon", "cpu": 32, "memoryReservation": 256, "portMappings" : [ { "containerPort": 2000, "protocol": "udp" } ] }, { "name": "scorekeep-api", "image": "123456789012.dkr.ecr.us-east-2.amazonaws.com/scorekeep-api", "cpu": 192, "memoryReservation": 512, "environment": [ { "name" : "AWS_REGION", "value" : "us-east-2" }, { "name" : "NOTIFICATION_TOPIC", "value" : "arn:aws:sns:us-east-2:123456789012:scorekeep-notifications" } ], "portMappings" : [ { "containerPort": 5000 } ] } ] }

Konfigurieren von Befehlszeilenoptionen in der Amazon ECS-Konsole

Befehlszeilenoptionen überschreiben Konflikte in der Konfigurationsdatei Ihres Abbildes. Befehlszeilenoptionen werden normalerweise für lokale Tests verwendet, können aber auch aus praktischen Gründen beim Festlegen von Umgebungsvariablen oder zur Steuerung des Startvorgangs verwendet werden.

Durch Hinzufügen von Befehlszeilenoptionen aktualisieren Sie den Docker CMD, der an den Container übergeben wird. Weitere Informationen finden Sie in der Referenz zu docker run.

So legen Sie eine Befehlszeilenoption fest

  1. Öffnen Sie die Amazon ECS-Konsole unter https://console.aws.amazon.com/ecs/.

  2. Wählen Sie auf der Navigationsleiste die Region aus, in der Ihre Aufgabendefinition enthalten ist.

  3. Wählen Sie im Navigationsbereich Task Definitions aus.

  4. Aktivieren Sie auf der Seite Task Definitions das Kontrollkästchen links neben der Aufgabendefinition, die Sie überarbeiten möchten, und wählen Sie dann Create new revision aus.

  5. Wählen Sie auf der Seite Create new revision of Task Definition (Neue Revision der Aufgabendefinition erstellen) den Container aus.

  6. Fügen Sie im Abschnitt ENVIRONMENT Ihre durch Komma getrennte Liste von Befehlszeilenoptionen zum Feld Command hinzu.

  7. Wählen Sie Update (Aktualisieren).

  8. Überprüfen Sie die Informationen und wählen Sie dann Create aus.

Das folgende Beispiel zeigt, wie eine durch Kommas getrennte Befehlszeilenoption für die Option RoleARN geschrieben wird. DieRoleARN-Option übernimmt die angegebene IAM-Rolle zum Hochladen von Segmenten auf ein anderes Konto.

--role-arn, arn:aws:iam::123456789012:role/xray-cross-account

Weitere Informationen zu den verfügbaren Befehlszeilenoptionen in X-Ray finden Sie unterKonfigurieren vonAWS X-RayDaemonaus.