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.
Eine benutzerdefinierte Einrichtung verwenden, um Application Signals auf Amazon ECS zu aktivieren
Verwenden Sie diese Anweisungen zur benutzerdefinierten Einrichtung, um Ihre Anwendungen auf Amazon ECS in CloudWatch Application Signals zu integrieren. Sie installieren und konfigurieren den CloudWatch Agenten und die AWS Distribution für OpenTelemetry sich selbst.
Nur der Netzwerkmodus awsvpc
wird unterstützt. Sowohl der EC2- als auch der Fargate-Starttyp werden unterstützt.
Auf Amazon ECS-Clustern erkennt Application Signals die Namen Ihrer Services nicht automatisch. Sie müssen Ihre Servicenamen während der benutzerdefinierten Einrichtung angeben, und die Namen, die Sie angeben, werden auf den Dashboards von Application Signals angezeigt.
Schritt 1: Application Signals in Ihrem Konto 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. Gehen Sie dazu wie folgt vor. Dies muss nur einmal für Ihr Konto durchgeführt werden.
So aktivieren Sie Application Signals für Ihre Anwendungen
Öffnen Sie die CloudWatch Konsole unter https://console.aws.amazon.com/cloudwatch/.
Wählen Sie im Navigationsbereich Services.
Wählen Sie Mit der Entdeckung Ihrer Services beginnen.
Aktivieren Sie das Kontrollkästchen und wählen Sie Mit der Entdeckung von Services beginnen.
Wenn Sie diesen Schritt zum ersten Mal in Ihrem Konto ausführen, wird die AWSServiceRoleForCloudWatchApplicationSignalsdienstverknüpfte Rolle erstellt. Diese Rolle 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 Anwendungssignale CloudWatch .
Schritt 2: IAM-Rollen erstellen
Sie müssen eine IAM-Rolle erstellen. Wenn Sie diese Rolle bereits erstellt haben, müssen Sie ihr möglicherweise Berechtigungen hinzufügen.
Weitere Informationen zum Erstellen von IAM-Rollen finden Sie unter Erstellen von IAM-Rollen.
Schritt 3: Bereiten Sie die CloudWatch Agentenkonfiguration vor
Bereiten Sie zunächst die Agentenkonfiguration mit Application Signals aktiviert vor. Erstellen Sie dazu eine lokale Datei mit dem Namen /tmp/ecs-cwagent.json
.
{
"traces": {
"traces_collected": {
"application_signals": {}
}
},
"logs": {
"metrics_collected": {
"application_signals": {}
}
}
}
Laden Sie dann diese Konfiguration in den SSM-Parameterspeicher hoch. Geben Sie dazu den folgenden Befehl ein. Ersetzen Sie in der Datei $REGION
durch Ihren tatsächlichen Regionsnamen.
aws ssm put-parameter \
--name "ecs-cwagent" \
--type "String" \
--value "`cat /tmp/ecs-cwagent.json`" \
--region "$REGION
"
Schritt 4: Instrumentieren Sie Ihre Anwendung mit dem CloudWatch Agenten
Der nächste Schritt besteht darin, Ihre Anwendung für CloudWatch Application Signals zu instrumentieren.
- Java
-
Um Ihre Anwendung auf Amazon ECS mit dem CloudWatch Agenten zu instrumentieren
Geben Sie zunächst einen Bind-Mount an. Das Volume wird in den nächsten Schritten verwendet, um Dateien containerübergreifend freizugeben. Sie werden diesen Bind-Mount später in diesem Verfahren verwenden.
"volumes": [
{
"name": "opentelemetry-auto-instrumentation"
}
]
Fügen Sie eine CloudWatch Sidecar-Definition für Agenten hinzu. Fügen Sie dazu einen neuen Container namens ecs-cwagent
an die Aufgabendefinition Ihrer Anwendung an. Ersetzen Sie $REGION
durch Ihren tatsächlichen Regionsnamen. Ersetzen Sie $IMAGE
durch den Pfad zum neuesten CloudWatch Container-Image in Amazon Elastic Container Registry. Weitere Informationen finden Sie unter cloudwatch-agent auf Amazon ECR.
{
"name": "ecs-cwagent",
"image": "$IMAGE
",
"essential": true,
"secrets": [
{
"name": "CW_CONFIG_CONTENT",
"valueFrom": "ecs-cwagent"
}
],
"logConfiguration": {
"logDriver": "awslogs",
"options": {
"awslogs-create-group": "true",
"awslogs-group": "/ecs/ecs-cwagent",
"awslogs-region": "$REGION
",
"awslogs-stream-prefix": "ecs"
}
}
}
Fügen Sie einen neuen Container namens init
an die Aufgabendefinition Ihrer Anwendung an. Ersetzen Sie $IMAGE
durch das neueste Bild aus dem AWS Distro for OpenTelemetry Amazon ECR-Image-Repository.
{
"name": "init",
"image": "$IMAGE
",
"essential": false,
"command": [
"cp",
"/javaagent.jar",
"/otel-auto-instrumentation/javaagent.jar"
],
"mountPoints": [
{
"sourceVolume": "opentelemetry-auto-instrumentation",
"containerPath": "/otel-auto-instrumentation",
"readOnly": false
}
]
}
Fügen Sie die folgenden Umgebungsvariablen Ihrem Anwendungs-Container hinzu. Sie müssen Version 1.32.2 oder höher des Agenten AWS Distro for OpenTelemetry Auto-Instrumentation für Java verwenden
Umgebungsvariable |
Einstellen zur Aktivierung von Application Signals |
OTEL_RESOURCE_ATTRIBUTES
|
Geben Sie die folgenden Informationen als Schlüssel-Wert-Paare an:
service.name legt den Namen des Services fest. Dies wird in den Dashboards von Application Signals als Servicename der Anwendung angezeigt. Wenn Sie keinen Wert für diesen Schlüssel angeben, wird der Standardwert von UnknownService verwendet.
deployment.environment legt die Umgebung fest, in der die Anwendung ausgeführt wird. Dies wird in den Dashboards von Application Signals als Gehostet in-Umgebung Ihrer Anwendung angezeigt. Wenn Sie dies nicht angeben, generic:default wird der Standardwert von verwendet.
Dieser Attributschlüssel wird nur von Application Signals verwendet und in Röntgen-Trace-Anmerkungen und CloudWatch metrische Dimensionen umgewandelt.
(Optional) Um die Korrelation von Ablaufprotokollen aws.log.group.names zu aktivieren, legen Sie eine zusätzliche Umgebungsvariable als Protokollgruppennamen für Ihr Anwendungsprotokoll fest. Auf diese Weise können die Ablaufverfolgungen aus Ihrer Anwendung mit den relevanten Protokolleinträgen aus dieser speziellen Protokollgruppe korreliert werden. Ersetzen Sie für diese Variable $YOUR_APPLICATION_LOG_GROUP durch den Namen der Protokollgruppe für Ihre Anwendung. Sie müssen auch die Logging-Konfiguration in Ihrer Anwendung ändern. Weitere Informationen finden Sie unter Aktivieren Sie die Korrelation von Ablaufprotokollen.
|
OTEL_AWS_APPLICATION_SIGNALS_ENABLED
|
Stellen Sie eintrue , dass Ihr Container damit beginnt, X-Ray-Traces und CloudWatch -Metriken an Application Signals zu senden. |
OTEL_METRICS_EXPORTER
|
Stellen Sie auf none ein, um andere Metrik-Exportprogramme zu deaktivieren. |
OTEL_LOGS_EXPORTER
|
Stellen Sie diese Option none ein, um andere Protokollexportprogramme zu deaktivieren. |
OTEL_EXPORTER_OTLP_PROTOCOL
|
Legt fest, http/protobuf dass Metriken und Traces über HTTP an Anwendungssignale gesendet werden sollen. |
OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT
|
Legt fest, dass Metriken http://localhost:4316/v1/metrics an den CloudWatch Beiwagen gesendet werden sollen. |
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT
|
Auf einstellen, http://localhost:4316/v1/traces um Traces an den Beiwagen zu senden. CloudWatch |
OTEL_TRACES_SAMPLER
|
Stellen Sie dies auf ein, xray um X-Ray als Traces-Sampler festzulegen. |
OTEL_PROPAGATORS
|
xray Als einen der Propagatoren festlegen.
|
JAVA_TOOL_OPTIONS
|
Legt fest, dass AWS_ADOT_JAVA_INSTRUMENTATION_PATH durch den Pfad " -javaagent:$AWS_ADOT_JAVA_INSTRUMENTATION_PATH " ersetzt wird, in dem der Autoinstrumentation-Agent von Distro for Java gespeichert ist. AWS OpenTelemetry Beispiel: /otel-auto-instrumentation/javaagent.jar |
Mounten Sie das Volume opentelemetry-auto-instrumentation
, das Sie in Schritt 1 dieses Verfahrens definiert haben.
Verwenden Sie für eine Java-Anwendung Folgendes.
{
"name": "my-app
",
...
"environment": [
{
"name": "OTEL_RESOURCE_ATTRIBUTES",
"value": "aws.log.group.names=$YOUR_APPLICATION_LOG_GROUP
,aws.hostedin.environment=$HOST_ENV
,service.name=$SVC_NAME
"
},
{
"name": "OTEL_LOGS_EXPORTER",
"value": "none"
},
{
"name": "OTEL_METRICS_EXPORTER",
"value": "none"
},
{
"name": "OTEL_EXPORTER_OTLP_PROTOCOL",
"value": "http/protobuf"
},
{
"name": "OTEL_AWS_APPLICATION_SIGNALS_ENABLED",
"value": "true"
},
{
"name": "JAVA_TOOL_OPTIONS",
"value": " -javaagent:/otel-auto-instrumentation/javaagent.jar"
},
{
"name": "OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT",
"value": "http://localhost:4316/v1/metrics"
},
{
"name": "OTEL_EXPORTER_OTLP_TRACES_ENDPOINT",
"value": "http://localhost:4316/v1/traces"
},
{
"name": "OTEL_TRACES_SAMPLER",
"value": "xray"
},
{
"name": "OTEL_PROPAGATORS",
"value": "tracecontext,baggage,b3,xray"
}
],
"mountPoints": [
{
"sourceVolume": "opentelemetry-auto-instrumentation",
"containerPath": "/otel-auto-instrumentation",
"readOnly": false
}
]
}
- Python
-
Bevor Sie Application Signals für Ihre Python-Anwendungen aktivieren, sollten Sie die folgenden Überlegungen beachten.
In einigen containerisierten Anwendungen kann eine fehlende PYTHONPATH
Umgebungsvariable manchmal dazu führen, dass die Anwendung nicht gestartet werden kann. Um dieses Problem zu beheben, stellen Sie sicher, dass Sie die PYTHONPATH
Umgebungsvariable auf den Speicherort des Arbeitsverzeichnisses Ihrer Anwendung setzen. Dies ist auf ein bekanntes Problem mit der OpenTelemetry automatischen Instrumentierung zurückzuführen. Weitere Informationen zu diesem Problem finden Sie unter Die Python-Autoinstrumentation-Einstellung von PYTHONPATH ist nicht kompatibel.
Für Django-Anwendungen sind zusätzliche Konfigurationen erforderlich, die in der OpenTelemetry Python-Dokumentation beschrieben werden.
Verwenden Sie das --noreload
Flag, um ein automatisches Neuladen zu verhindern.
Setzen Sie die DJANGO_SETTINGS_MODULE
Umgebungsvariable auf den Speicherort der Datei Ihrer Django-Anwendung. settings.py
Dadurch wird sichergestellt, dass OpenTelemetry Sie korrekt auf Ihre Django-Einstellungen zugreifen und diese integrieren können.
Um Ihre Python-Anwendung auf Amazon ECS mit dem CloudWatch Agenten zu instrumentieren
Geben Sie zunächst einen Bind-Mount an. Das Volume wird in den nächsten Schritten verwendet, um Dateien containerübergreifend freizugeben. Sie werden diesen Bind-Mount später in diesem Verfahren verwenden.
"volumes": [
{
"name": "opentelemetry-auto-instrumentation-python"
}
]
Fügen Sie eine CloudWatch Agent-Sidecar-Definition hinzu. Fügen Sie dazu einen neuen Container namens ecs-cwagent
an die Aufgabendefinition Ihrer Anwendung an. Ersetzen Sie $REGION
durch Ihren tatsächlichen Regionsnamen. Ersetzen Sie $IMAGE
durch den Pfad zum neuesten CloudWatch Container-Image in Amazon Elastic Container Registry. Weitere Informationen finden Sie unter cloudwatch-agent auf Amazon ECR.
{
"name": "ecs-cwagent",
"image": "$IMAGE
",
"essential": true,
"secrets": [
{
"name": "CW_CONFIG_CONTENT",
"valueFrom": "ecs-cwagent"
}
],
"logConfiguration": {
"logDriver": "awslogs",
"options": {
"awslogs-create-group": "true",
"awslogs-group": "/ecs/ecs-cwagent",
"awslogs-region": "$REGION
",
"awslogs-stream-prefix": "ecs"
}
}
}
Fügen Sie einen neuen Container namens init
an die Aufgabendefinition Ihrer Anwendung an. Ersetzen Sie $IMAGE
durch das neueste Bild aus dem AWS Distro for OpenTelemetry Amazon ECR-Image-Repository.
{
"name": "init",
"image": "$IMAGE",
"essential": false,
"command": [
"cp",
"-a",
"/autoinstrumentation/.",
"/otel-auto-instrumentation-python"
],
"mountPoints": [
{
"sourceVolume": "opentelemetry-auto-instrumentation-python",
"containerPath": "/otel-auto-instrumentation-python",
"readOnly": false
}
]
}
Fügen Sie die folgenden Umgebungsvariablen Ihrem Anwendungs-Container hinzu.
Umgebungsvariable |
Einstellen zur Aktivierung von Application Signals |
OTEL_RESOURCE_ATTRIBUTES
|
Geben Sie die folgenden Informationen als Schlüssel-Wert-Paare an:
service.name legt den Namen des Services fest. Dies wird in den Dashboards von Application Signals als Servicename der Anwendung angezeigt. Wenn Sie keinen Wert für diesen Schlüssel angeben, wird der Standardwert von UnknownService verwendet.
deployment.environment legt die Umgebung fest, in der die Anwendung ausgeführt wird. Dies wird in den Dashboards von Application Signals als Gehostet in-Umgebung Ihrer Anwendung angezeigt. Wenn Sie dies nicht angeben, generic:default wird der Standardwert von verwendet.
Dieser Attributschlüssel wird nur von Application Signals verwendet und in Röntgen-Trace-Anmerkungen und CloudWatch metrische Dimensionen umgewandelt.
(Optional) Um die Korrelation von Ablaufprotokollen aws.log.group.names zu aktivieren, legen Sie eine zusätzliche Umgebungsvariable als Protokollgruppennamen für Ihr Anwendungsprotokoll fest. Auf diese Weise können die Ablaufverfolgungen aus Ihrer Anwendung mit den relevanten Protokolleinträgen aus dieser speziellen Protokollgruppe korreliert werden. Ersetzen Sie für diese Variable $YOUR_APPLICATION_LOG_GROUP durch den Namen der Protokollgruppe für Ihre Anwendung. Sie müssen auch die Logging-Konfiguration in Ihrer Anwendung ändern. Weitere Informationen finden Sie unter Aktivieren Sie die Korrelation von Ablaufprotokollen.
|
OTEL_AWS_APPLICATION_SIGNALS_ENABLED
|
Stellen Sie eintrue , dass Ihr Container damit beginnt, X-Ray-Traces und CloudWatch -Metriken an Application Signals zu senden. |
OTEL_METRICS_EXPORTER
|
Stellen Sie auf none ein, um andere Metrik-Exportprogramme zu deaktivieren. |
OTEL_EXPORTER_OTLP_PROTOCOL
|
Stellen Sie einhttp/protobuf , dass Metriken und Traces CloudWatch über HTTP gesendet werden sollen. |
OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT
|
Auf einstellen, http://127.0.0.1:4316/v1/metrics um Metriken an den CloudWatch Beiwagen zu senden. |
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT
|
Auf einstellen, http://127.0.0.1:4316/v1/traces um Traces an den Beiwagen zu senden. CloudWatch |
OTEL_TRACES_SAMPLER
|
Stellen Sie dies auf ein, xray um X-Ray als Traces-Sampler festzulegen. |
OTEL_PROPAGATORS
|
xray Als einen der Propagatoren hinzufügen.
|
OTEL_PYTHON_DISTRO
|
Auf einstellen, aws_distro um die ADOT-Python-Instrumentierung zu verwenden. |
OTEL_PYTHON_CONFIGURATOR
|
Auf einstellen, aws_configuration um die ADOT-Python-Konfiguration zu verwenden. |
PYTHONPATH
|
$APP_PATH Ersetzen Sie durch den Speicherort des Arbeitsverzeichnisses der Anwendung innerhalb des Containers. Dies ist erforderlich, damit der Python-Interpreter Ihre Anwendungsmodule finden kann.
|
DJANGO_SETTINGS_MODULE
|
Nur für Django-Anwendungen erforderlich. Stellen Sie es auf den Speicherort der Datei Ihrer Django-Anwendung einsettings.py . Ersetzen$PATH_TO_SETTINGS . |
Mounten Sie das Volume opentelemetry-auto-instrumentation-python
, das Sie in Schritt 1 dieses Verfahrens definiert haben. Im folgenden Beispiel OTEL_RESOURCE_ATTRIBUTES
enthält der Wert für eine optionale Option, mit deren Hilfe aws.log.group.names
die Korrelation von Ablaufverfolgungsprotokollen aktiviert werden kann. Weitere Informationen finden Sie in der Tabelle im vorherigen Schritt.
Verwenden Sie für eine Python-Anwendung Folgendes.
{
"name": "my-app
",
...
"environment": [
{
"name": "PYTHONPATH",
"value": "/otel-auto-instrumentation-python/opentelemetry/instrumentation/auto_instrumentation:$APP_PATH:/otel-auto-instrumentation-python"
},
{
"name": "OTEL_EXPORTER_OTLP_PROTOCOL",
"value": "http/protobuf"
},
{
"name": "OTEL_TRACES_SAMPLER",
"value": "xray"
},
{
"name": "OTEL_TRACES_SAMPLER_ARG",
"value": "endpoint=http://localhost:2000"
},
{
"name": "OTEL_LOGS_EXPORTER",
"value": "none"
},
{
"name": "OTEL_PYTHON_DISTRO",
"value": "aws_distro"
},
{
"name": "OTEL_PYTHON_CONFIGURATOR",
"value": "aws_configurator"
},
{
"name": "OTEL_EXPORTER_OTLP_TRACES_ENDPOINT",
"value": "http://localhost:4316/v1/traces"
},
{
"name": "OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT",
"value": "http://localhost:4316/v1/metrics"
},
{
"name": "OTEL_METRICS_EXPORTER",
"value": "none"
},
{
"name": "OTEL_AWS_APPLICATION_SIGNALS_ENABLED",
"value": "true"
},
{
"name": "OTEL_RESOURCE_ATTRIBUTES",
"value": "aws.log.group.names=$YOUR_APPLICATION_LOG_GROUP
,aws.hostedin.environment=$HOST_ENV
,service.name=$SVC_NAME
"
},
{
"name": "DJANGO_SETTINGS_MODULE",
"value": "$PATH_TO_SETTINGS.settings"
}
],
"mountPoints": [
{
"sourceVolume": "opentelemetry-auto-instrumentation-python",
"containerPath": "/otel-auto-instrumentation-python",
"readOnly": false
}
]
}
Schritt 5: Ihre Anwendung bereitstellen
Erstellen Sie eine neue Version Ihrer Aufgabendefinition und stellen Sie sie in Ihrem Anwendungscluster bereit. In der neu erstellten Aufgabe sollten Sie drei Container sehen: