Terapkan menggunakan strategi sespan - Amazon CloudWatch

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Terapkan menggunakan strategi sespan

Langkah 1: Mengaktifkan Sinyal Aplikasi di akun Anda

Jika Anda belum mengaktifkan Sinyal Aplikasi di akun ini, Anda harus memberikan izin yang diperlukan Sinyal Aplikasi untuk menemukan layanan Anda. Untuk melakukan hal itu, lakukan hal berikut. Anda perlu melakukan ini sekali untuk akun Anda.

Untuk mengaktifkan Sinyal Aplikasi untuk aplikasi-aplikasi Anda
  1. Buka CloudWatch konsol di https://console.aws.amazon.com/cloudwatch/.

  2. Pada panel navigasi, silakan pilih Layanan.

  3. Pilih Mulai menemukan Layanan Anda.

  4. Pilih kotak centang kemudian pilih Mulai menemukan Layanan.

    Menyelesaikan langkah ini untuk pertama kalinya di akun Anda akan membuat peran AWSServiceRoleForCloudWatchApplicationSignalsterkait layanan. Peran ini akan memberi Sinyal Aplikasi izin-izin berikut:

    • xray:GetServiceGraph

    • logs:StartQuery

    • logs:GetQueryResults

    • cloudwatch:GetMetricData

    • cloudwatch:ListMetrics

    • tag:GetResources

    Untuk informasi selengkapnya tentang peran ini, silakan lihat Izin peran terkait layanan untuk Sinyal Aplikasi CloudWatch .

Langkah 2: Buat IAM peran

Anda harus membuat IAM peran. Jika Anda sudah membuat peran ini, Anda mungkin perlu menambahkan izin untuk itu.

  • ECSperan tugas- Kontainer menggunakan peran ini untuk menjalankan. Izin harus apa pun yang dibutuhkan aplikasi Anda, plus CloudWatchAgentServerPolicy.

Untuk informasi selengkapnya tentang membuat IAM peran, lihat Membuat IAM Peran.

Langkah 3: Siapkan konfigurasi CloudWatch agen

Pertama, siapkan konfigurasi agen dengan Sinyal Aplikasi yang diaktifkan. Untuk melakukan hal ini, buat file lokal bernama /tmp/ecs-cwagent.json.

{ "traces": { "traces_collected": { "application_signals": {} } }, "logs": { "metrics_collected": { "application_signals": {} } } }

Kemudian unggah konfigurasi ini ke SSM Parameter Store. Untuk melakukan hal ini, masukkan perintah berikut. Dalam file, ganti $REGION dengan nama Region Anda yang sebenarnya.

aws ssm put-parameter \ --name "ecs-cwagent" \ --type "String" \ --value "`cat /tmp/ecs-cwagent.json`" \ --region "$REGION"

Langkah 4: Instrumentasikan aplikasi Anda dengan CloudWatch agen

Langkah selanjutnya adalah instrumen aplikasi Anda untuk Sinyal CloudWatch Aplikasi.

Java
Untuk instrumen aplikasi Anda di Amazon ECS dengan CloudWatch agen
  1. Pertama, tentukan bind mount. Volume akan digunakan untuk berbagi file di seluruh kontainer pada langkah-langkah selanjutnya. Anda akan menggunakan bind mount ini nanti dalam prosedur ini.

    "volumes": [ { "name": "opentelemetry-auto-instrumentation" } ]
  2. Tambahkan definisi sespan CloudWatch agen. Untuk melakukan hal ini, tambahkan sebuah kontainer baru yang bernama ecs-cwagent ke definisi tugas aplikasi Anda. Ganti $REGION dengan nama Region Anda yang sebenarnya. Ganti $IMAGE dengan jalur ke gambar CloudWatch kontainer terbaru di Amazon Elastic Container Registry. Untuk informasi selengkapnya, lihat cloudwatch-agent di Amazon. ECR

    Jika Anda ingin mengaktifkan CloudWatch agen dengan strategi daemon sebagai gantinya, lihat instruksi di. Terapkan menggunakan strategi daemon

    { "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" } } }
  3. Tambahkan sebuah kontainer baru yang bernama init ke penetapan tugas aplikasi Anda. Ganti $IMAGE dengan gambar terbaru dari repositori ECR gambar AWS Distro untuk OpenTelemetry Amazon.

    { "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 } ] }
  4. Tambahkan variabel lingkungan berikut ke kontainer aplikasi Anda. Anda harus menggunakan versi 1.32.2 atau yang lebih baru dari AWS Distro untuk agen OpenTelemetry instrumentasi otomatis untuk Java.

    Variabel Lingkungan Pengaturan untuk mengaktifkan Sinyal Aplikasi

    OTEL_RESOURCE_ATTRIBUTES

    Tentukan informasi berikut sebagai pasangan kunci-nilai:

    • service.name menetapkan nama layanan. Ini akan diputar sebagai nama layanan di dasbor Sinyal Aplikasi Anda. Jika Anda tidak memberikan nilai untuk kunci ini, maka UnknownService digunakan sebagai nilai default.

    • deployment.environment menetapkan lingkungan tempat aplikasi berjalan. Ini akan diputar sebagai Ditempati Di lingkungan aplikasi Anda di dasbor Sinyal Aplikasi. Jika Anda tidak menentukan ini, default dari generic:default digunakan.

    Kunci atribut ini hanya digunakan oleh Sinyal Aplikasi, dan diubah menjadi anotasi jejak X-Ray dan dimensi CloudWatch metrik.

    (Opsional) Untuk mengaktifkan korelasi log untuk Sinyal Aplikasi, tetapkan variabel aws.log.group.names lingkungan tambahan menjadi nama grup log untuk log aplikasi Anda. Dengan demikian, jejak dan metrik dari aplikasi Anda dapat dikorelasikan dengan entri log yang relevan dari grup log. Untuk variabel ini, ganti $YOUR_APPLICATION_LOG_GROUP dengan nama grup log untuk aplikasi Anda. Jika Anda memiliki beberapa grup log, Anda dapat menggunakan ampersand (&) untuk memisahkannya seperti dalam contoh ini:. aws.log.group.names=log-group-1&log-group-2 Untuk mengaktifkan metrik untuk mencatat korelasi, pengaturan variabel lingkungan saat ini sudah cukup. Untuk informasi selengkapnya, lihat Aktifkan metrik untuk mencatat korelasi. Untuk mengaktifkan korelasi trace to log, Anda juga perlu mengubah konfigurasi logging di aplikasi Anda. Untuk informasi selengkapnya, lihat Aktifkan jejak untuk mencatat korelasi.

    OTEL_AWS_APPLICATION_SIGNALS_ENABLED

    Atur true agar wadah Anda mulai mengirim jejak dan CloudWatch metrik X-Ray ke Sinyal Aplikasi.

    OTEL_METRICS_EXPORTER

    Atur none untuk menonaktifkan pengekspor metrik lainnya.

    OTEL_LOGS_EXPORTER

    Setel none untuk menonaktifkan eksportir log lainnya.

    OTEL_EXPORTER_OTLP_PROTOCOL

    Setel http/protobuf untuk mengirim metrik dan jejak ke Sinyal Aplikasi menggunakanHTTP.

    OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT

    Setel http://localhost:4316/v1/metrics untuk mengirim metrik ke CloudWatch sespan.

    OTEL_EXPORTER_OTLP_TRACES_ENDPOINT

    Setel http://localhost:4316/v1/traces untuk mengirim jejak ke CloudWatch sespan.

    OTEL_TRACES_SAMPLER

    Setel ini xray untuk mengatur X-Ray sebagai sampler jejak.

    OTEL_PROPAGATORS

    Ditetapkan xray sebagai salah satu propagator.

    JAVA_TOOL_OPTIONS

    Setel untuk " -javaagent:$AWS_ADOT_JAVA_INSTRUMENTATION_PATH" Ganti AWS_ADOT_JAVA_INSTRUMENTATION_PATH dengan jalur tempat agen instrumentasi otomatis AWS Distro untuk OpenTelemetry Java disimpan. Sebagai contoh, /otel-auto-instrumentation/javaagent.jar.

  5. Pasang volume opentelemetry-auto-instrumentation yang sudah Anda tentukan pada langkah 1 prosedur ini. Jika Anda tidak perlu mengaktifkan korelasi log dengan metrik dan jejak, gunakan contoh berikut untuk aplikasi Java. Jika Anda ingin mengaktifkan korelasi log, lihat langkah selanjutnya.

    { "name": "my-app", ... "environment": [ { "name": "OTEL_RESOURCE_ATTRIBUTES", "value": "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

Sebelum Anda mengaktifkan Sinyal Aplikasi untuk aplikasi Python Anda, perhatikan pertimbangan berikut.

Untuk instrumen aplikasi Python Anda di Amazon ECS dengan agen CloudWatch
  1. Pertama, tentukan bind mount. Volume akan digunakan untuk berbagi file di seluruh kontainer pada langkah-langkah selanjutnya. Anda akan menggunakan bind mount ini nanti dalam prosedur ini.

    "volumes": [ { "name": "opentelemetry-auto-instrumentation-python" } ]
  2. Tambahkan definisi sespan CloudWatch agen. Untuk melakukan hal ini, tambahkan sebuah kontainer baru yang bernama ecs-cwagent ke definisi tugas aplikasi Anda. Ganti $REGION dengan nama Region Anda yang sebenarnya. Ganti $IMAGE dengan jalur ke gambar CloudWatch kontainer terbaru di Amazon Elastic Container Registry. Untuk informasi selengkapnya, lihat cloudwatch-agent di Amazon. ECR

    Jika Anda ingin mengaktifkan CloudWatch agen dengan strategi daemon sebagai gantinya, lihat instruksi di. Terapkan menggunakan strategi daemon

    { "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" } } }
  3. Tambahkan sebuah kontainer baru yang bernama init ke penetapan tugas aplikasi Anda. Ganti $IMAGE dengan gambar terbaru dari repositori ECR gambar AWS Distro untuk OpenTelemetry Amazon.

    { "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 } ] }
  4. Tambahkan variabel lingkungan berikut ke kontainer aplikasi Anda.

    Variabel Lingkungan Pengaturan untuk mengaktifkan Sinyal Aplikasi

    OTEL_RESOURCE_ATTRIBUTES

    Tentukan informasi berikut sebagai pasangan kunci-nilai:

    • service.name menetapkan nama layanan. Ini akan diputar sebagai nama layanan di dasbor Sinyal Aplikasi Anda. Jika Anda tidak memberikan nilai untuk kunci ini, maka UnknownService digunakan sebagai nilai default.

    • deployment.environment menetapkan lingkungan tempat aplikasi berjalan. Ini akan diputar sebagai Ditempati Di lingkungan aplikasi Anda di dasbor Sinyal Aplikasi. Jika Anda tidak menentukan ini, default dari generic:default digunakan.

    Kunci atribut ini hanya digunakan oleh Sinyal Aplikasi, dan diubah menjadi anotasi jejak X-Ray dan dimensi CloudWatch metrik.

    (Opsional) Untuk mengaktifkan korelasi log untuk Sinyal Aplikasi, tetapkan variabel aws.log.group.names lingkungan tambahan menjadi nama grup log untuk log aplikasi Anda. Dengan demikian, jejak dan metrik dari aplikasi Anda dapat dikorelasikan dengan entri log yang relevan dari grup log. Untuk variabel ini, ganti $YOUR_APPLICATION_LOG_GROUP dengan nama grup log untuk aplikasi Anda. Jika Anda memiliki beberapa grup log, Anda dapat menggunakan ampersand (&) untuk memisahkannya seperti dalam contoh ini:. aws.log.group.names=log-group-1&log-group-2 Untuk mengaktifkan metrik untuk mencatat korelasi, pengaturan variabel lingkungan saat ini sudah cukup. Untuk informasi selengkapnya, lihat Aktifkan metrik untuk mencatat korelasi. Untuk mengaktifkan korelasi trace to log, Anda juga perlu mengubah konfigurasi logging di aplikasi Anda. Untuk informasi selengkapnya, lihat Aktifkan jejak untuk mencatat korelasi.

    OTEL_AWS_APPLICATION_SIGNALS_ENABLED

    Atur true agar wadah Anda mulai mengirim jejak dan CloudWatch metrik X-Ray ke Sinyal Aplikasi.

    OTEL_METRICS_EXPORTER

    Atur none untuk menonaktifkan pengekspor metrik lainnya.

    OTEL_EXPORTER_OTLP_PROTOCOL

    Setel http/protobuf untuk mengirim metrik dan jejak untuk CloudWatch digunakanHTTP.

    OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT

    Setel http://127.0.0.1:4316/v1/metrics untuk mengirim metrik ke CloudWatch sespan.

    OTEL_EXPORTER_OTLP_TRACES_ENDPOINT

    Setel http://127.0.0.1:4316/v1/traces untuk mengirim jejak ke CloudWatch sespan.

    OTEL_TRACES_SAMPLER

    Setel ini xray untuk mengatur X-Ray sebagai sampler jejak.

    OTEL_PROPAGATORS

    Tambahkan xray sebagai salah satu propagator.

    OTEL_PYTHON_DISTRO

    Atur aws_distro untuk menggunakan instrumentasi ADOT Python.

    OTEL_PYTHON_CONFIGURATOR

    Atur aws_configuration untuk menggunakan konfigurasi ADOT Python.

    PYTHONPATH

    Ganti $APP_PATH dengan lokasi direktori kerja aplikasi di dalam wadah. Hal ini diperlukan untuk interpreter Python untuk menemukan modul aplikasi Anda.

    DJANGO_SETTINGS_MODULE

    Diperlukan hanya untuk aplikasi Django. Setel ke lokasi settings.py berkas aplikasi Django Anda. Ganti$PATH_TO_SETTINGS.

  5. Pasang volume opentelemetry-auto-instrumentation-python yang sudah Anda tentukan pada langkah 1 prosedur ini. Jika Anda tidak perlu mengaktifkan korelasi log dengan metrik dan jejak, gunakan contoh berikut untuk aplikasi Python. Jika Anda ingin mengaktifkan korelasi log, lihat langkah selanjutnya.

    { "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": "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 } ] }
  6. (Opsional) Untuk mengaktifkan korelasi log, lakukan hal berikut sebelum Anda memasang volume. DiOTEL_RESOURCE_ATTRIBUTES, tetapkan variabel lingkungan tambahan aws.log.group.names untuk grup log aplikasi Anda. Dengan demikian, jejak dan metrik dari aplikasi Anda dapat dikorelasikan dengan entri log yang relevan dari grup log ini. Untuk variabel ini, ganti $YOUR_APPLICATION_LOG_GROUP dengan nama grup log untuk aplikasi Anda. Jika Anda memiliki beberapa grup log, Anda dapat menggunakan ampersand (&) untuk memisahkannya seperti dalam contoh ini:. aws.log.group.names=log-group-1&log-group-2 Untuk mengaktifkan metrik untuk mencatat korelasi, pengaturan variabel lingkungan saat ini sudah cukup. Untuk informasi selengkapnya, lihat Aktifkan metrik untuk mencatat korelasi. Untuk mengaktifkan korelasi trace to log, Anda juga perlu mengubah konfigurasi logging di aplikasi Anda. Untuk informasi selengkapnya, lihat Aktifkan jejak untuk mencatat korelasi.

    Berikut adalah contohnya. Untuk mengaktifkan korelasi log, gunakan contoh ini saat Anda memasang volume opentelemetry-auto-instrumentation-python yang Anda tentukan di langkah 1 prosedur ini.

    { "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,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 } ] }
.NET
Untuk instrumen aplikasi Anda di Amazon ECS dengan CloudWatch agen
  1. Pertama, tentukan bind mount. Volume akan digunakan untuk berbagi file di seluruh kontainer pada langkah-langkah selanjutnya. Anda akan menggunakan bind mount ini nanti dalam prosedur ini.

    "volumes": [ { "name": "opentelemetry-auto-instrumentation" } ]
  2. Tambahkan definisi sespan CloudWatch agen. Untuk melakukan hal ini, tambahkan sebuah kontainer baru yang bernama ecs-cwagent ke definisi tugas aplikasi Anda. Ganti $REGION dengan nama Region Anda yang sebenarnya. Ganti $IMAGE dengan jalur ke gambar CloudWatch kontainer terbaru di Amazon Elastic Container Registry. Untuk informasi selengkapnya, lihat cloudwatch-agent di Amazon. ECR

    Jika Anda ingin mengaktifkan CloudWatch agen dengan strategi daemon sebagai gantinya, lihat instruksi di. Terapkan menggunakan strategi daemon

    { "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" } } }
  3. Tambahkan sebuah kontainer baru yang bernama init ke penetapan tugas aplikasi Anda. Ganti $IMAGE dengan gambar terbaru dari repositori ECR gambar AWS Distro untuk OpenTelemetry Amazon.

    Untuk contoh kontainer Linux, gunakan yang berikut ini.

    { "name": "init", "image": "$IMAGE", "essential": false, "command": [ "cp", "-a", "autoinstrumentation/.", "/otel-auto-instrumentation" ], "mountPoints": [ { "sourceVolume": "opentelemetry-auto-instrumentation", "containerPath": "/otel-auto-instrumentation", "readOnly": false } ] }

    Untuk contoh wadah Windows Server, gunakan yang berikut ini.

    { "name": "init", "image": "$IMAGE", "essential": false, "command": [ "CMD", "/c", "xcopy", "/e", "C:\\autoinstrumentation\\*", "C:\\otel-auto-instrumentation", "&&", "icacls", "C:\\otel-auto-instrumentation", "/grant", "*S-1-1-0:R", "/T" ], "mountPoints": [ { "sourceVolume": "opentelemetry-auto-instrumentation", "containerPath": "C:\\otel-auto-instrumentation", "readOnly": false } ] }
  4. Tambahkan dependensi pada init wadah untuk memastikan bahwa kontainer selesai sebelum wadah aplikasi Anda dimulai.

    "dependsOn": [ { "containerName": "init", "condition": "SUCCESS" } ]
  5. Tambahkan variabel lingkungan berikut ke kontainer aplikasi Anda. Anda harus menggunakan versi 1.1.0 atau yang lebih baru dari AWS Distro untuk agen OpenTelemetry instrumentasi otomatis untuk. NET.

    Variabel Lingkungan Pengaturan untuk mengaktifkan Sinyal Aplikasi

    OTEL_RESOURCE_ATTRIBUTES

    Tentukan informasi berikut sebagai pasangan kunci-nilai:

    • service.name menetapkan nama layanan. Ini akan diputar sebagai nama layanan di dasbor Sinyal Aplikasi Anda. Jika Anda tidak memberikan nilai untuk kunci ini, maka UnknownService digunakan sebagai nilai default.

    • deployment.environment menetapkan lingkungan tempat aplikasi berjalan. Ini akan diputar sebagai Ditempati Di lingkungan aplikasi Anda di dasbor Sinyal Aplikasi. Jika Anda tidak menentukan ini, default dari generic:default digunakan.

    Kunci atribut ini hanya digunakan oleh Sinyal Aplikasi, dan diubah menjadi anotasi jejak X-Ray dan dimensi CloudWatch metrik.

    OTEL_AWS_APPLICATION_SIGNALS_ENABLED

    Atur true agar wadah Anda mulai mengirim jejak dan CloudWatch metrik X-Ray ke Sinyal Aplikasi.

    OTEL_METRICS_EXPORTER

    Atur none untuk menonaktifkan pengekspor metrik lainnya.

    OTEL_LOGS_EXPORTER

    Setel none untuk menonaktifkan eksportir log lainnya.

    OTEL_EXPORTER_OTLP_PROTOCOL

    Setel http/protobuf untuk mengirim metrik dan jejak ke Sinyal Aplikasi menggunakanHTTP.

    OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT

    Setel http://localhost:4316/v1/metrics untuk mengirim metrik ke CloudWatch sespan.

    OTEL_EXPORTER_OTLP_ENDPOINT

    Setel http://localhost:4316/ untuk mengirim jejak ke CloudWatch sespan.

    OTEL_EXPORTER_OTLP_TRACES_ENDPOINT

    Setel http://localhost:4316/v1/traces untuk mengirim jejak ke CloudWatch sespan.

    OTEL_DOTNET_AUTO_HOME

    Setel ke lokasi instalasiADOT. NETinstrumentasi otomatis.

    OTEL_DOTNET_AUTO_PLUGINS

    Setel AWS.Distro.OpenTelemetry.AutoInstrumentation.Plugin, AWS.Distro.OpenTelemetry.AutoInstrumentation untuk mengaktifkan plugin Sinyal Aplikasi.

    CORECLR_ENABLE_PROFILING

    Setel 1 untuk mengaktifkan profiler.

    CORECLR_PROFILER

    Setel ke {918728DD-259F-4A6A-AC2B-B85E1B658318} CLSID sebagai profiler.

    CORECLR_PROFILER_PATH

    Setel ini ke jalur profiler.

    Di Linux, atur ke ${OTEL_DOTNET_AUTO_HOME}/linux-x64/OpenTelemetry.AutoInstrumentation.Native.so

    Pada Windows Server, atur ke ${OTEL_DOTNET_AUTO_HOME}/win-x64/OpenTelemetry.AutoInstrumentation.Native.dll

    DOTNET_ADDITIONAL_DEPS

    Setel ini ke jalur folder${OTEL_DOTNET_AUTO_HOME}/AdditionalDeps.

    DOTNET_SHARED_STORE

    Setel ini ke jalur folder${OTEL_DOTNET_AUTO_HOME}/store.

    DOTNET_STARTUP_HOOKS

    Setel ini ke jalur perakitan terkelola ${OTEL_DOTNET_AUTO_HOME}/net/OpenTelemetry.AutoInstrumentation.StartupHook.dll untuk dijalankan sebelum titik masuk aplikasi utama.

  6. Pasang volume opentelemetry-auto-instrumentation yang sudah Anda tentukan pada langkah 1 prosedur ini. Untuk Linux, gunakan yang berikut ini.

    { "name": "my-app", ... "environment": [ { "name": "OTEL_RESOURCE_ATTRIBUTES", "value": "service.name=$SVC_NAME" }, { "name": "CORECLR_ENABLE_PROFILING", "value": "1" }, { "name": "CORECLR_PROFILER", "value": "{918728DD-259F-4A6A-AC2B-B85E1B658318}" }, { "name": "CORECLR_PROFILER_PATH", "value": "/otel-auto-instrumentation/linux-x64/OpenTelemetry.AutoInstrumentation.Native.so" }, { "name": "DOTNET_ADDITIONAL_DEPS", "value": "/otel-auto-instrumentation/AdditionalDeps" }, { "name": "DOTNET_SHARED_STORE", "value": "/otel-auto-instrumentation/store" }, { "name": "DOTNET_STARTUP_HOOKS", "value": "/otel-auto-instrumentation/net/OpenTelemetry.AutoInstrumentation.StartupHook.dll" }, { "name": "OTEL_DOTNET_AUTO_HOME", "value": "/otel-auto-instrumentation" }, { "name": "OTEL_DOTNET_AUTO_PLUGINS", "value": "AWS.Distro.OpenTelemetry.AutoInstrumentation.Plugin, AWS.Distro.OpenTelemetry.AutoInstrumentation" }, { "name": "OTEL_RESOURCE_ATTRIBUTES", "value": "aws.log.group.names=$YOUR_APPLICATION_LOG_GROUP,service.name=aws-otel-integ-test" }, { "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": "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_EXPORTER_OTLP_ENDPOINT", "value": "http://localhost:4316" }, { "name": "OTEL_TRACES_SAMPLER", "value": "xray" }, { "name": "OTEL_TRACES_SAMPLER_ARG", "value": "endpoint=http://localhost:2000" }, { "name": "OTEL_PROPAGATORS", "value": "tracecontext,baggage,b3,xray" } ], "mountPoints": [ { "sourceVolume": "opentelemetry-auto-instrumentation", "containerPath": "/otel-auto-instrumentation", "readOnly": false } ], "dependsOn": [ { "containerName": "init", "condition": "SUCCESS" } ] }

    Untuk Windows Server, gunakan yang berikut ini.

    { "name": "my-app", ... "environment": [ { "name": "OTEL_RESOURCE_ATTRIBUTES", "value": "service.name=$SVC_NAME" }, { "name": "CORECLR_ENABLE_PROFILING", "value": "1" }, { "name": "CORECLR_PROFILER", "value": "{918728DD-259F-4A6A-AC2B-B85E1B658318}" }, { "name": "CORECLR_PROFILER_PATH", "value": "C:\\otel-auto-instrumentation\\win-x64\\OpenTelemetry.AutoInstrumentation.Native.dll" }, { "name": "DOTNET_ADDITIONAL_DEPS", "value": "C:\\otel-auto-instrumentation\\AdditionalDeps" }, { "name": "DOTNET_SHARED_STORE", "value": "C:\\otel-auto-instrumentation\\store" }, { "name": "DOTNET_STARTUP_HOOKS", "value": "C:\\otel-auto-instrumentation\\net\\OpenTelemetry.AutoInstrumentation.StartupHook.dll" }, { "name": "OTEL_DOTNET_AUTO_HOME", "value": "C:\\otel-auto-instrumentation" }, { "name": "OTEL_DOTNET_AUTO_PLUGINS", "value": "AWS.Distro.OpenTelemetry.AutoInstrumentation.Plugin, AWS.Distro.OpenTelemetry.AutoInstrumentation" }, { "name": "OTEL_RESOURCE_ATTRIBUTES", "value": "aws.log.group.names=$YOUR_APPLICATION_LOG_GROUP,service.name=aws-otel-integ-test" }, { "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": "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_EXPORTER_OTLP_ENDPOINT", "value": "http://localhost:4316" }, { "name": "OTEL_TRACES_SAMPLER", "value": "xray" }, { "name": "OTEL_TRACES_SAMPLER_ARG", "value": "endpoint=http://localhost:2000" }, { "name": "OTEL_PROPAGATORS", "value": "tracecontext,baggage,b3,xray" } ], "mountPoints": [ { "sourceVolume": "opentelemetry-auto-instrumentation", "containerPath": "C:\\otel-auto-instrumentation", "readOnly": false } ], "dependsOn": [ { "containerName": "init", "condition": "SUCCESS" } ] }
Node.js
catatan

Jika Anda mengaktifkan Sinyal Aplikasi untuk aplikasi Node.js denganESM, lihat Setting up a Node.js application with the ESM module format sebelum Anda memulai langkah-langkah ini.

Untuk instrumen aplikasi Anda di Amazon ECS dengan CloudWatch agen
  1. Pertama, tentukan bind mount. Volume akan digunakan untuk berbagi file di seluruh kontainer pada langkah-langkah selanjutnya. Anda akan menggunakan bind mount ini nanti dalam prosedur ini.

    "volumes": [ { "name": "opentelemetry-auto-instrumentation-node" } ]
  2. Tambahkan definisi sespan CloudWatch agen. Untuk melakukan hal ini, tambahkan sebuah kontainer baru yang bernama ecs-cwagent ke definisi tugas aplikasi Anda. Ganti $REGION dengan nama Region Anda yang sebenarnya. Ganti $IMAGE dengan jalur ke gambar CloudWatch kontainer terbaru di Amazon Elastic Container Registry. Untuk informasi selengkapnya, lihat cloudwatch-agent di Amazon. ECR

    Jika Anda ingin mengaktifkan CloudWatch agen dengan strategi daemon sebagai gantinya, lihat instruksi di. Terapkan menggunakan strategi daemon

    { "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" } } }
  3. Tambahkan sebuah kontainer baru yang bernama init ke penetapan tugas aplikasi Anda. Ganti $IMAGE dengan gambar terbaru dari repositori ECR gambar AWS Distro untuk OpenTelemetry Amazon.

    { "name": "init", "image": "$IMAGE", "essential": false, "command": [ "cp", "-a", "/autoinstrumentation/.", "/otel-auto-instrumentation-node" ], "mountPoints": [ { "sourceVolume": "opentelemetry-auto-instrumentation-node", "containerPath": "/otel-auto-instrumentation-node", "readOnly": false } ], }
  4. Tambahkan variabel lingkungan berikut ke kontainer aplikasi Anda.

    Variabel Lingkungan Pengaturan untuk mengaktifkan Sinyal Aplikasi

    OTEL_RESOURCE_ATTRIBUTES

    Tentukan informasi berikut sebagai pasangan kunci-nilai:

    • service.name menetapkan nama layanan. Ini akan diputar sebagai nama layanan di dasbor Sinyal Aplikasi Anda. Jika Anda tidak memberikan nilai untuk kunci ini, maka UnknownService digunakan sebagai nilai default.

    • deployment.environment menetapkan lingkungan tempat aplikasi berjalan. Ini akan diputar sebagai Ditempati Di lingkungan aplikasi Anda di dasbor Sinyal Aplikasi. Jika Anda tidak menentukan ini, default dari generic:default digunakan.

    Kunci atribut ini hanya digunakan oleh Sinyal Aplikasi, dan diubah menjadi anotasi jejak X-Ray dan dimensi CloudWatch metrik.

    (Opsional) Untuk mengaktifkan korelasi log untuk Sinyal Aplikasi, tetapkan variabel aws.log.group.names lingkungan tambahan menjadi nama grup log untuk log aplikasi Anda. Dengan demikian, jejak dan metrik dari aplikasi Anda dapat dikorelasikan dengan entri log yang relevan dari grup log. Untuk variabel ini, ganti $YOUR_APPLICATION_LOG_GROUP dengan nama grup log untuk aplikasi Anda. Jika Anda memiliki beberapa grup log, Anda dapat menggunakan ampersand (&) untuk memisahkannya seperti dalam contoh ini:. aws.log.group.names=log-group-1&log-group-2 Untuk mengaktifkan metrik untuk mencatat korelasi, pengaturan variabel lingkungan saat ini sudah cukup. Untuk informasi selengkapnya, lihat Aktifkan metrik untuk mencatat korelasi. Untuk mengaktifkan korelasi trace to log, Anda juga perlu mengubah konfigurasi logging di aplikasi Anda. Untuk informasi selengkapnya, lihat Aktifkan jejak untuk mencatat korelasi.

    OTEL_AWS_APPLICATION_SIGNALS_ENABLED

    Atur true agar wadah Anda mulai mengirim jejak dan CloudWatch metrik X-Ray ke Sinyal Aplikasi.

    OTEL_METRICS_EXPORTER

    Atur none untuk menonaktifkan pengekspor metrik lainnya.

    OTEL_LOGS_EXPORTER

    Setel none untuk menonaktifkan eksportir log lainnya.

    OTEL_EXPORTER_OTLP_PROTOCOL

    Setel http/protobuf untuk mengirim metrik dan jejak ke Sinyal Aplikasi menggunakanOTLP/HTTPdan protobuf.

    OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT

    Setel http://localhost:4316/v1/metrics untuk mengirim metrik ke CloudWatch sespan.

    OTEL_EXPORTER_OTLP_TRACES_ENDPOINT

    Setel http://localhost:4316/v1/traces untuk mengirim jejak ke CloudWatch sespan.

    OTEL_TRACES_SAMPLER

    Setel ini xray untuk mengatur X-Ray sebagai sampler jejak.

    OTEL_PROPAGATORS

    Ditetapkan xray sebagai salah satu propagator.

    NODE_OPTIONS

    Setel ke--require AWS_ADOT_NODE_INSTRUMENTATION_PATH. Ganti AWS_ADOT_NODE_INSTRUMENTATION_PATH dengan jalur di mana instrumentasi otomatis AWS Distro untuk OpenTelemetry Node.js disimpan. Sebagai contoh, /otel-auto-instrumentation-node/autoinstrumentation.js.

  5. Pasang volume opentelemetry-auto-instrumentation yang sudah Anda tentukan pada langkah 1 prosedur ini. Jika Anda tidak perlu mengaktifkan korelasi log dengan metrik dan jejak, gunakan contoh berikut untuk aplikasi Node.js. Jika Anda ingin mengaktifkan korelasi log, lihat langkah selanjutnya.

    Untuk Application Container Anda, tambahkan dependensi pada init container untuk memastikan bahwa container selesai sebelum container aplikasi Anda dimulai.

    { "name": "my-app", ... "environment": [ { "name": "OTEL_RESOURCE_ATTRIBUTES", "value": "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": "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_TRACES_SAMPLER_ARG", "value": "endpoint=http://localhost:2000" }, { "name": "NODE_OPTIONS", "value": "--require /otel-auto-instrumentation-node/autoinstrumentation.js" } ], "mountPoints": [ { "sourceVolume": "opentelemetry-auto-instrumentation-node", "containerPath": "/otel-auto-instrumentation-node", "readOnly": false } ], "dependsOn": [ { "containerName": "init", "condition": "SUCCESS" } ] }
  6. (Opsional) Untuk mengaktifkan korelasi log, lakukan hal berikut sebelum Anda memasang volume. DiOTEL_RESOURCE_ATTRIBUTES, tetapkan variabel lingkungan tambahan aws.log.group.names untuk grup log aplikasi Anda. Dengan demikian, jejak dan metrik dari aplikasi Anda dapat dikorelasikan dengan entri log yang relevan dari grup log ini. Untuk variabel ini, ganti $YOUR_APPLICATION_LOG_GROUP dengan nama grup log untuk aplikasi Anda. Jika Anda memiliki beberapa grup log, Anda dapat menggunakan ampersand (&) untuk memisahkannya seperti dalam contoh ini:. aws.log.group.names=log-group-1&log-group-2 Untuk mengaktifkan metrik untuk mencatat korelasi, pengaturan variabel lingkungan saat ini sudah cukup. Untuk informasi selengkapnya, lihat Aktifkan metrik untuk mencatat korelasi. Untuk mengaktifkan korelasi trace to log, Anda juga perlu mengubah konfigurasi logging di aplikasi Anda. Untuk informasi selengkapnya, lihat Aktifkan jejak untuk mencatat korelasi.

    Berikut adalah contohnya. Gunakan contoh ini untuk mengaktifkan korelasi log saat Anda memasang volume opentelemetry-auto-instrumentation yang Anda tentukan di langkah 1 prosedur ini.

    { "name": "my-app", ... "environment": [ { "name": "OTEL_RESOURCE_ATTRIBUTES", "value": "aws.log.group.names=$YOUR_APPLICATION_LOG_GROUP,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": "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_TRACES_SAMPLER_ARG", "value": "endpoint=http://localhost:2000" }, { "name": "NODE_OPTIONS", "value": "--require /otel-auto-instrumentation-node/autoinstrumentation.js" } ], "mountPoints": [ { "sourceVolume": "opentelemetry-auto-instrumentation-node", "containerPath": "/otel-auto-instrumentation-node", "readOnly": false } ], "dependsOn": [ { "containerName": "init", "condition": "SUCCESS" } ] }

Menyiapkan aplikasi Node.js dengan format ESM modul

Kami menyediakan dukungan terbatas untuk aplikasi Node.js dengan format ESM modul. Untuk detailnya, lihat Keterbatasan yang diketahui tentang Node.js dengan ESM.

Untuk format ESM modul, menggunakan init wadah untuk menyuntikkan instrumentasi Node.js SDK tidak berlaku. Untuk mengaktifkan Sinyal Aplikasi untuk Node.js denganESM, lewati langkah 1 dan 3 dari prosedur sebelumnya, dan lakukan hal berikut sebagai gantinya.

Untuk mengaktifkan Sinyal Aplikasi untuk aplikasi Node.js dengan ESM
  1. Instal dependensi yang relevan ke aplikasi Node.js Anda untuk autoinstrumentasi:

    npm install @aws/aws-distro-opentelemetry-node-autoinstrumentation npm install @opentelemetry/instrumentation@0.54.0
  2. Pada langkah 5 dan 6 pada prosedur sebelumnya, lepaskan pemasangan volumeopentelemetry-auto-instrumentation-node:

    "mountPoints": [ { "sourceVolume": "opentelemetry-auto-instrumentation-node", "containerPath": "/otel-auto-instrumentation-node", "readOnly": false } ]

    Ganti opsi node dengan yang berikut ini.

    { "name": "NODE_OPTIONS", "value": "--import @aws/aws-distro-opentelemetry-node-autoinstrumentation/register --experimental-loader=@opentelemetry/instrumentation/hook.mjs" }

Langkah 5: Menerapkan aplikasi Anda

Buat revisi baru penetapan tugas Anda dan terapkan ke klaster aplikasi Anda. Anda akan melihat tiga kontainer dalam tugas yang baru saja Anda buat:

  • init— Wadah yang diperlukan untuk menginisialisasi Sinyal Aplikasi.

  • ecs-cwagent— Sebuah wadah yang menjalankan CloudWatch agen

  • my-app— Ini adalah contoh wadah aplikasi dalam dokumentasi kami. Dalam beban kerja Anda yang sebenarnya, penampung khusus ini mungkin tidak ada atau mungkin diganti dengan kontainer layanan Anda sendiri.