

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

# Terapkan menggunakan strategi sidecar
<a name="CloudWatch-Application-Signals-ECS-Sidecar"></a>

## Langkah 1: Mengaktifkan Sinyal Aplikasi di akun Anda
<a name="CloudWatch-Application-Signals-ECS-Grant"></a>

Anda harus terlebih dahulu mengaktifkan Sinyal Aplikasi di akun Anda. Jika belum, lihat[Aktifkan Sinyal Aplikasi di akun Anda](CloudWatch-Application-Signals-Enable.md).

## Langkah 2: Membuat peran IAM
<a name="CloudWatch-Application-Signals-Enable-ECS-IAM"></a>

Anda harus membuat peran IAM. Jika Anda telah membuat peran ini, Anda mungkin perlu menambahkan izin untuk itu.
+ **Peran tugas ECS—** Kontainer menggunakan peran ini untuk beroperasi. Izin harus apa pun yang dibutuhkan aplikasi Anda, plus ** CloudWatchAgentServerPolicy**. 

Untuk informasi selengkapnya tentang membuat peran IAM, silakan lihat [Membuat Peran IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create.html).

## Langkah 3: Siapkan konfigurasi CloudWatch agen
<a name="CloudWatch-Application-Signals-Enable-ECS-PrepareAgent"></a>

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 Wilayah 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
<a name="CloudWatch-Application-Signals-Enable-ECS-Instrument"></a>

Langkah selanjutnya adalah instrumen aplikasi Anda untuk Sin CloudWatch yal Aplikasi.

------
#### [ Java ]

**Untuk instrumen aplikasi 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"
     }
   ]
   ```

1. Tambahkan definisi sidecar CloudWatch agen. Untuk melakukan hal ini, tambahkan sebuah kontainer baru yang bernama `ecs-cwagent` ke definisi tugas aplikasi Anda. Ganti {{$REGION}} dengan nama Wilayah Anda yang sebenarnya. Ganti {{$IMAGE}} dengan jalur ke gambar CloudWatch kontainer terbaru di Amazon Elastic Container Registry. Untuk informasi selengkapnya, silakan lihat [cloudwatch-agent](https://gallery.ecr.aws/cloudwatch-agent/cloudwatch-agent) di Amazon ECR.

   Jika Anda ingin mengaktifkan CloudWatch agen dengan strategi daemon sebagai gantinya, lihat instruksi di[Menyebarkan menggunakan strategi daemon](CloudWatch-Application-Signals-ECS-Daemon.md).

   ```
   {
     "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"
       }
     }
   }
   ```

1. Tambahkan sebuah kontainer baru yang bernama `init` ke penetapan tugas aplikasi Anda. Ganti {{$IMAGE}} dengan gambar terbaru dari repositori [ gambar ](https://gallery.ecr.aws/aws-observability/adot-autoinstrumentation-java)AWS Distro for OpenTelemetry Amazon ECR. 

   ```
   {
     "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
       }
     ]
   }
   ```

1. Tambahkan ketergantungan pada `init` wadah untuk memastikan bahwa wadah ini selesai sebelum wadah aplikasi Anda dimulai.

   ```
   "dependsOn": [
     {
       "containerName": "init",
       "condition": "SUCCESS"
     }
   ]
   ```

1. 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. ](https://opentelemetry.io/docs/zero-code/java/agent/)    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/AmazonCloudWatch/latest/monitoring/CloudWatch-Application-Signals-ECS-Sidecar.html)

1. 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 berikutnya sebagai gantinya.

   ```
   {
     "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"
       }
     ],
     "dependsOn": [
       {
         "containerName": "init",
         "condition": "SUCCESS"
       }
     ],
     "mountPoints": [
       {
         "sourceVolume": "opentelemetry-auto-instrumentation",
         "containerPath": "/otel-auto-instrumentation",
         "readOnly": false
       }
     ]
   }
   ```

------
#### [ Python ]

Sebelum Anda mengaktifkan Sinyal Aplikasi untuk aplikasi Python Anda, perhatikan pertimbangan berikut.
+ Dalam beberapa aplikasi kontainer, variabel `PYTHONPATH` lingkungan yang hilang terkadang dapat menyebabkan aplikasi gagal memulai. Untuk mengatasi masalah ini, pastikan Anda menyetel variabel `PYTHONPATH` lingkungan ke lokasi direktori kerja aplikasi Anda. Ini karena masalah yang diketahui dengan OpenTelemetry instrumentasi otomatis. Untuk informasi selengkapnya tentang masalah ini, lihat Pengaturan autoinstrumentasi [ Python PYTHONPATH tidak sesuai. ](https://github.com/open-telemetry/opentelemetry-operator/issues/2302)
+ Untuk aplikasi Django, ada konfigurasi tambahan yang diperlukan, yang diuraikan dalam dokument [ asi ](https://opentelemetry-python.readthedocs.io/en/latest/examples/django/README.html) OpenTelemetry Python.
  + Gunakan ben `--noreload` dera untuk mencegah pemuatan ulang otomatis.
  + Atur variabel `DJANGO_SETTINGS_MODULE` lingkungan ke lokasi `settings.py` file aplikasi Django Anda. Ini memastikan bahwa OpenTelemetry dapat mengakses dan mengintegrasikan dengan benar dengan pengaturan Django Anda. 
+ Jika Anda menggunakan server pre-fork (WSGI atau ASGI) seperti Gunicorn, uWSGI, atau Uvicorn untuk aplikasi Python Anda, selain langkah-langkah berikut di bagian ini, lihat informasi untuk membuat Sinyal Aplikasi berfungsi. [Tidak ada data Sinyal Aplikasi untuk aplikasi Python yang menggunakan server pre-fork (WSGI atau ASGI)](CloudWatch-Application-Signals-Enable-Troubleshoot.md#Application-Signals-troubleshoot-Python-WSGI)

**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"
     }
   ]
   ```

1. Tambahkan definisi sidecar CloudWatch agen. Untuk melakukan hal ini, tambahkan sebuah kontainer baru yang bernama `ecs-cwagent` ke definisi tugas aplikasi Anda. Ganti {{$REGION}} dengan nama Wilayah Anda yang sebenarnya. Ganti {{$IMAGE}} dengan jalur ke gambar CloudWatch kontainer terbaru di Amazon Elastic Container Registry. Untuk informasi selengkapnya, silakan lihat [cloudwatch-agent](https://gallery.ecr.aws/cloudwatch-agent/cloudwatch-agent) di Amazon ECR.

   Jika Anda ingin mengaktifkan CloudWatch agen dengan strategi daemon sebagai gantinya, lihat instruksi di[Menyebarkan menggunakan strategi daemon](CloudWatch-Application-Signals-ECS-Daemon.md).

   ```
   {
     "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"
       }
     }
   }
   ```

1. Tambahkan sebuah kontainer baru yang bernama `init` ke penetapan tugas aplikasi Anda. Ganti {{$IMAGE}} dengan gambar terbaru dari repositori [ gambar ](https://gallery.ecr.aws/aws-observability/adot-autoinstrumentation-python)AWS Distro for OpenTelemetry Amazon ECR.

   ```
   {
       "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
           }
       ]
   }
   ```

1. Tambahkan ketergantungan pada `init` wadah untuk memastikan bahwa wadah ini selesai sebelum wadah aplikasi Anda dimulai.

   ```
   "dependsOn": [
     {
       "containerName": "init",
       "condition": "SUCCESS"
     }
   ]
   ```

1. Tambahkan variabel lingkungan berikut ke kontainer aplikasi Anda.    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/AmazonCloudWatch/latest/monitoring/CloudWatch-Application-Signals-ECS-Sidecar.html)

1. 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 berikutnya sebagai gantinya. 

   ```
   {
     "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
       }
     ]
   }
   ```

1. (Opsional) Untuk mengaktifkan korelasi log, lakukan hal berikut sebelum Anda memasang volume. Di`OTEL_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, menyetel variabel lingkungan saat ini sudah cukup. Untuk informasi selengkapnya, lihat [Aktifkan metrik untuk mencatat korelasi](Application-Signals-MetricLogCorrelation.md). Untuk mengaktifkan korelasi pelacakan ke log, Anda juga perlu mengubah konfigurasi logging di aplikasi Anda. Untuk informasi selengkapnya, lihat [Aktifkan korelasi pelacakan ke log](Application-Signals-TraceLogCorrelation.md). 

   Berikut adalah contohnya. Untuk mengaktifkan korelasi log, gunakan contoh ini saat Anda memasang volume `opentelemetry-auto-instrumentation-python` yang Anda tentukan pada 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 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"
     }
   ]
   ```

1. Tambahkan definisi sidecar CloudWatch agen. Untuk melakukan hal ini, tambahkan sebuah kontainer baru yang bernama `ecs-cwagent` ke definisi tugas aplikasi Anda. Ganti {{$REGION}} dengan nama Wilayah Anda yang sebenarnya. Ganti {{$IMAGE}} dengan jalur ke gambar CloudWatch kontainer terbaru di Amazon Elastic Container Registry. Untuk informasi selengkapnya, silakan lihat [cloudwatch-agent](https://gallery.ecr.aws/cloudwatch-agent/cloudwatch-agent) di Amazon ECR.

   Jika Anda ingin mengaktifkan CloudWatch agen dengan strategi daemon sebagai gantinya, lihat instruksi di[Menyebarkan menggunakan strategi daemon](CloudWatch-Application-Signals-ECS-Daemon.md).

   ```
   {
     "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"
       }
     }
   }
   ```

1. Tambahkan sebuah kontainer baru yang bernama `init` ke penetapan tugas aplikasi Anda. Ganti {{$IMAGE}} dengan gambar terbaru dari repositori [ gambar ](https://gallery.ecr.aws/aws-observability/adot-autoinstrumentation-dotnet)AWS Distro for OpenTelemetry Amazon ECR. 

   Untuk instance 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 instance kontainer 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
         }
     ]
   }
   ```

1. Tambahkan ketergantungan pada `init` wadah untuk memastikan bahwa wadah ini selesai sebelum wadah aplikasi Anda dimulai.

   ```
   "dependsOn": [
       {
           "containerName": "init",
           "condition": "SUCCESS"
       }
   ]
   ```

1. 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. ](https://opentelemetry.io/docs/zero-code/net/)    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/AmazonCloudWatch/latest/monitoring/CloudWatch-Application-Signals-ECS-Sidecar.html)

1. 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-dotnet-service-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_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"
           }
       ],
       "dependsOn": [
       {
         "containerName": "init",
         "condition": "SUCCESS"
       }
     ],
       "mountPoints": [
           {
               "sourceVolume": "opentelemetry-auto-instrumentation",
               "containerPath": "/otel-auto-instrumentation",
               "readOnly": false
           }
       ]
   }
   ```

   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=dotnet-service-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_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 Node.js aplikasi dengan ESM, lihat [Setting up a Node.js application with the ESM module format](#ECS-NodeJs-ESM) sebelum memulai langkah-langkah ini.

**Untuk instrumen aplikasi 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-node"
     }
   ]
   ```

1. Tambahkan definisi sidecar CloudWatch agen. Untuk melakukan hal ini, tambahkan sebuah kontainer baru yang bernama `ecs-cwagent` ke definisi tugas aplikasi Anda. Ganti {{$REGION}} dengan nama Wilayah Anda yang sebenarnya. Ganti {{$IMAGE}} dengan jalur ke gambar CloudWatch kontainer terbaru di Amazon Elastic Container Registry. Untuk informasi selengkapnya, silakan lihat [cloudwatch-agent](https://gallery.ecr.aws/cloudwatch-agent/cloudwatch-agent) di Amazon ECR.

   Jika Anda ingin mengaktifkan CloudWatch agen dengan strategi daemon sebagai gantinya, lihat instruksi di[Menyebarkan menggunakan strategi daemon](CloudWatch-Application-Signals-ECS-Daemon.md).

   ```
   {
     "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"
       }
     }
   }
   ```

1. Tambahkan sebuah kontainer baru yang bernama `init` ke penetapan tugas aplikasi Anda. Ganti {{$IMAGE}} dengan gambar terbaru dari repositori [ gambar ](https://gallery.ecr.aws/aws-observability/adot-autoinstrumentation-node)AWS Distro for OpenTelemetry Amazon ECR. 

   ```
   {
     "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
       }
     ],
   }
   ```

1. Tambahkan ketergantungan pada `init` wadah untuk memastikan bahwa wadah ini selesai sebelum wadah aplikasi Anda dimulai.

   ```
   "dependsOn": [
     {
       "containerName": "init",
       "condition": "SUCCESS"
     }
   ]
   ```

1. Tambahkan variabel lingkungan berikut ke kontainer aplikasi Anda.    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/AmazonCloudWatch/latest/monitoring/CloudWatch-Application-Signals-ECS-Sidecar.html)

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

   Untuk Container Aplikasi Anda, tambahkan dependensi pada `init` wadah untuk memastikan bahwa wadah selesai sebelum wadah 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"
       }
     ]
   }
   ```

1. (Opsional) Untuk mengaktifkan korelasi log, lakukan hal berikut sebelum Anda memasang volume. Di`OTEL_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, menyetel variabel lingkungan saat ini sudah cukup. Untuk informasi selengkapnya, lihat [Aktifkan metrik untuk mencatat korelasi](Application-Signals-MetricLogCorrelation.md). Untuk mengaktifkan korelasi pelacakan ke log, Anda juga perlu mengubah konfigurasi logging di aplikasi Anda. Untuk informasi selengkapnya, lihat [Aktifkan korelasi pelacakan ke log](Application-Signals-TraceLogCorrelation.md). 

   Berikut adalah contohnya. Gunakan contoh ini untuk mengaktifkan korelasi log saat Anda memasang volume `opentelemetry-auto-instrumentation` yang Anda tentukan pada 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"
       }
     ]
   }
   ```<a name="ECS-NodeJs-ESM"></a>

**Menyiapkan Node.js aplikasi dengan format modul ESM **

Kami menyediakan dukungan terbatas untuk Node.js aplikasi dengan format modul ESM. Lihat perinciannya di [Keterbatasan yang diketahui tentang Node.js ESM](CloudWatch-Application-Signals-supportmatrix.md#ESM-limitations).

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

**Untuk mengaktifkan Sinyal Aplikasi untuk Node.js aplikasi dengan ESM**

1. Instal dependensi yang relevan ke Node.js aplikasi Anda untuk autoinstrumentasi:

   ```
   npm install @aws/aws-distro-opentelemetry-node-autoinstrumentation
   npm install @opentelemetry/instrumentation@0.54.0
   ```

1. Pada langkah 5 dan 6 dalam prosedur sebelumnya, lepaskan pemasangan volume`opentelemetry-auto-instrumentation-node`:

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

   Ganti opsi simpul 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
<a name="CloudWatch-Application-Signals-Enable-ECS-Deploy"></a>

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, wadah khusus ini mungkin tidak ada atau mungkin diganti dengan wadah layanan Anda sendiri.

## (Opsional) Langkah 6: Pantau kesehatan aplikasi Anda
<a name="CloudWatch-Application-Signals-Monitor-sidecar"></a>

Setelah mengaktifkan aplikasi di Amazon ECS, Anda dapat memantau kesehatan aplikasi Anda. Untuk informasi selengkapnya, lihat [Memantau kondisi kesehatan operasional aplikasi Anda dengan Sinyal Aplikasi](Services.md).