1. Answers
  2. Integrate Dynatrace with Amazon ECS

How Do I Use Dynatrace With Amazon ECS?

Introduction

Integrating Dynatrace with Amazon ECS allows you to efficiently monitor and manage your containerized applications. Dynatrace provides real-time observability, ensuring that your applications run smoothly and any performance issues are quickly identified. By deploying the Dynatrace OneAgent as a sidecar container within your ECS task definitions, you can seamlessly collect and analyze performance data.

Step-by-Step Setup Guide

To integrate Dynatrace with Amazon ECS, you need to set up an ECS cluster and deploy the Dynatrace OneAgent. Follow these steps to achieve this integration:

  1. Create an ECS Cluster: Begin by setting up an ECS cluster where your services will run.
  2. Define a Task Definition: Include the Dynatrace OneAgent as a sidecar container in your task definition.
  3. Deploy an ECS Service: Run your ECS service with tasks that are monitored by Dynatrace.

Below is an example demonstrating how to implement this setup:

import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";

const example = new aws.ecs.Cluster("example", {name: "example"});
const ecsTaskExecution = new aws.iam.Role("ecs_task_execution", {
    name: "ecsTaskExecutionRole",
    assumeRolePolicy: `{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": "sts:AssumeRole",
      "Effect": "Allow",
      "Principal": {
        "Service": "ecs-tasks.amazonaws.com"
      }
    }
  ]
}
`,
});
const ecsTaskExecutionPolicy = new aws.iam.RolePolicyAttachment("ecs_task_execution_policy", {
    role: ecsTaskExecution.name,
    policyArn: "arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy",
});
const exampleTaskDefinition = new aws.ecs.TaskDefinition("example", {
    family: "example",
    networkMode: "awsvpc",
    requiresCompatibilities: ["FARGATE"],
    memory: "512",
    cpu: "256",
    executionRoleArn: ecsTaskExecution.arn,
    containerDefinitions: JSON.stringify([
        {
            name: "my-app",
            image: "amazon/amazon-ecs-sample",
            essential: true,
            portMappings: [{
                containerPort: 80,
                hostPort: 80,
            }],
        },
        {
            name: "dynatrace-oneagent",
            image: "docker.io/dynatrace/oneagent:latest",
            essential: false,
            environment: [
                {
                    name: "ONEAGENT_ENVIRONMENT_ID",
                    value: "example-environment-id",
                },
                {
                    name: "ONEAGENT_API_URL",
                    value: "https://<tenant>.dynatrace.com/api",
                },
                {
                    name: "ONEAGENT_API_TOKEN",
                    value: "your-dynatrace-api-token",
                },
            ],
        },
    ]),
});
const exampleService = new aws.ecs.Service("example", {
    name: "example",
    cluster: example.id,
    taskDefinition: exampleTaskDefinition.arn,
    desiredCount: 1,
    networkConfiguration: {
        subnets: ["subnet-0123456789abcdef0"],
        securityGroups: ["sg-0123456789abcdef0"],
    },
});
export const ecsClusterName = example.name;
export const ecsServiceName = exampleService.name;
export const ecsTaskDefinitionArn = exampleTaskDefinition.arn;

Key Points

  • ECS Cluster Setup: Establishes the foundational environment for your services.
  • Task Definition: Incorporates Dynatrace OneAgent as a sidecar, enabling performance monitoring.
  • Service Deployment: Ensures your applications are monitored effectively within the ECS environment.

Conclusion

Integrating Dynatrace with Amazon ECS is a powerful way to enhance your application’s observability and performance management. By following the steps outlined above, you can ensure that your ECS applications are monitored in real-time, allowing for proactive performance optimization. This setup not only improves application reliability but also helps in quickly identifying and resolving potential issues.

Deploy this code

Want to deploy this code? Sign up for a free Pulumi account to deploy in a few clicks.

Sign up

New to Pulumi?

Want to deploy this code? Sign up with Pulumi to deploy in a few clicks.

Sign up