ECS Fargate에서 Datadog 에이전트를 통합하는 방법

소개



다른 날에는 Fargate의 ECS에서 처음으로 Datadog Agent를 설정했습니다. the documentation 을 읽어도 이해가 되지 않아 여기에 적어봅니다.

메모


  • 문서에서 언급한 것처럼 Fargate에서 EKS를 설정하는 방법을 알고 싶다면 문서가 다르므로 주의하십시오. 이것 좀 봐 document .
  • 설정을 위해 다른 컨테이너를 만들지 말고 컨테이너를 사이드카 컨테이너로 수정하십시오.
  • 처음에 다른 컨테이너를 만들어야 한다고 오해했습니다.

  • 에이전트를 통합하면 ECS Fargate에서 일부 지표를 얻을 수 있습니다.
  • 결국 로그를 얻는 방법에 대해 포스팅하겠습니다!


  • 무슨 문제



    우선 the document은 WebUI, AWS CLI, CloudFormation을 통해서만 생성하는 방법만 보여주고 있는데, ECS를 생성할 때 Terraform을 사용했기 때문에 혼란스럽습니다.

    내 말은, 이미 Terraform에 구축된 Fargate에 Datadog Agent를 설치하고 싶었기 때문에 처음에는 무엇을 해야 할지 몰랐습니다.
    하지만 이 경우 사실 이미 존재하는 작업 정의를 수정하는 문제일 뿐입니다.

    설정 방법



    다음은 내 샘플 작업 정의이므로 이 파일만 수정합니다.

    {
        "containerDefinitions": [
            {
                "logConfiguration": {
                    "logDriver": "awslogs",
                    "options": {
                        "awslogs-group": "hoge-hoge-hoge-dev-cwlg-api-server",
                        "awslogs-region": "ap-northeast-1",
                        "awslogs-stream-prefix": "/ecs"
                    }
                },
                "portMappings": [
                    {
                        "protocol": "tcp",
                        "containerPort": 8080
                    }
                ],
                "command": [
                    "sh",
                    "-c",
                    "npm run prisma:migrate:deploy && npm start"
                ],
                "environment": [
                    {
                        "name": "SERVER_PORT_NUMBER",
                        "value": "8080"
                    },
                    {
                        "name": "AWS_S3_REGION",
                        "value": "ap-northeast-1"
                    },
                    {
                        "name": "TZ",
                        "value": "Asia/Tokyo"
                    },
                    {
                        "name": "SLACK_TOKEN",
                        "value": "hoge-99999969-60614-hoge-hoge-mEWS1wNZ0E765VkUvkM7"
                    }
                ],
                "secrets": [
                    {
                        "name": "DATABASE_URL",
                        "valueFrom": "/hoge-study-dev/api-secret-hoge/HOGE_DATABASE_URL"
                    },
                    {
                        "name": "IMPORT_PROBLEM_END_POINT_SECRET",
                        "valueFrom": "/hoge-study-dev/api-secret-hoge/HOGE_END_POINT_SECRET"
                    },
                    {
                        "name": "COGNITO_USER_POOL_ID",
                        "valueFrom": "/hoge-study-dev/api-secret-hoge/HOGE_USER_POOL_ID"
                    }
                ],
                "essential": true,
                "pseudoTerminal": true,
                "readonlyRootFilesystem": false,
                "privileged": false,
                "name": "app"
            }
        ],
        "memory": "2048",
        "cpu": "1024",
        "executionRoleArn": "arn:aws:iam::99999999999:role/hoge-dev-role-api-server-exec",
        "taskRoleArn": "arn:aws:iam::99999999999:role/hoge-dev-role-api-server-task",
        "family": "hoge-dev-task-api-server",
        "networkMode": "awsvpc",
        "requiresCompatibilities": ["FARGATE"]
    }
    


    Datadog 에이전트에 대한 샘플 작업 정의입니다.

    {
        "image": "datadog/agent:latest",
        "logConfiguration": {
            "logDriver": "awslogs",
            "options": {
                "awslogs-group": "/hoge/hoge/datadog-agent-dev",
                "awslogs-region": "ap-northeast-1",
                "awslogs-stream-prefix": "ecs"
            }
        },
        "cpu": 10,
        "memory": 256,
        "mountPoints": [],
        "environment": [
            {
                "name": "ECS_FARGATE",
                "value": "true"
            },
            {
                "name": "DD_PROCESS_AGENT_ENABLED",
                "value": "true"
            },
            {
                "name": "DD_DOGSTATSD_NON_LOCAL_TRAFFIC",
                "value": "true"
            }
        ],
        "secrets": [
            {
                "name": "DD_API_KEY",
                "valueFrom": "/hoge-ssm/DATADOG_API_KEY"
            }
        ],
        "name": "api-server-datadog-agent"
    }
    


    어떤 매개변수




    열쇠
    가치
    특징



    영상
    datadog/에이전트:최신
    컨테이너 이미지

    환경: ECS_FARGATE
    진실
    에이전트 ECS Fargate를 명시적으로 설정

    환경: DD_PROCESS_AGENT_ENABLED
    진실
    활성화된 실시간 프로세스 수집

    환경: DD_DOGSTATSD_NON_LOCAL_TRAFFIC
    진실
    UDP8125에서 DogStatsD로 측정항목 수정

    비밀: DD_API_KEY
    /hoge-ssm/DATADOG_API_KEY
    Datadog API 키

    이름
    api-server-datadog-agent
    내 컨테이너 이름



    Datadog API 키가 없는 경우 조직 페이지를 얻을 수 있으므로 docs을 확인하십시오.


    또한 그 예제에 작은 기술을 넣었기 때문에 DD_API_KEY 하드코딩을 피하기 위해 SSM 매개변수 저장소를 사용합니다.
    기술에 관심이 있는 분은 the doc을 참조하십시오.


    드디어 파일 완성💡

    {
        "containerDefinitions": [
            {
                "logConfiguration": {
                    "logDriver": "awslogs",
                    "options": {
                        "awslogs-group": "hoge-hoge-hoge-dev-cwlg-api-server",
                        "awslogs-region": "ap-northeast-1",
                        "awslogs-stream-prefix": "/ecs"
                    }
                },
                "portMappings": [
                    {
                        "protocol": "tcp",
                        "containerPort": 8080
                    }
                ],
                "command": [
                    "sh",
                    "-c",
                    "npm run prisma:migrate:deploy && npm start"
                ],
                "environment": [
                    {
                        "name": "SERVER_PORT_NUMBER",
                        "value": "8080"
                    },
                    {
                        "name": "AWS_S3_REGION",
                        "value": "ap-northeast-1"
                    },
                    {
                        "name": "TZ",
                        "value": "Asia/Tokyo"
                    },
                    {
                        "name": "SLACK_TOKEN",
                        "value": "hoge-99999969-60614-hoge-hoge-mEWS1wNZ0E765VkUvkM7"
                    }
                ],
                "secrets": [
                    {
                        "name": "DATABASE_URL",
                        "valueFrom": "/hoge-study-dev/api-secret-hoge/HOGE_DATABASE_URL"
                    },
                    {
                        "name": "IMPORT_PROBLEM_END_POINT_SECRET",
                        "valueFrom": "/hoge-study-dev/api-secret-hoge/HOGE_END_POINT_SECRET"
                    },
                    {
                        "name": "COGNITO_USER_POOL_ID",
                        "valueFrom": "/hoge-study-dev/api-secret-hoge/HOGE_USER_POOL_ID"
                    }
                ],
                "essential": true,
                "pseudoTerminal": true,
                "readonlyRootFilesystem": false,
                "privileged": false,
                "name": "app"
            },
            ,
            {
                "image": "datadog/agent:latest",
                "logConfiguration": {
                    "logDriver": "awslogs",
                    "options": {
                        "awslogs-group": "/hoge/hoge/datadog-agent-dev",
                        "awslogs-region": "ap-northeast-1",
                        "awslogs-stream-prefix": "ecs"
                    }
                },
                "cpu": 10,
                "memory": 256,
                "mountPoints": [],
                "environment": [
                    {
                        "name": "ECS_FARGATE",
                        "value": "true"
                    },
                    {
                        "name": "DD_PROCESS_AGENT_ENABLED",
                        "value": "true"
                    },
                    {
                        "name": "DD_DOGSTATSD_NON_LOCAL_TRAFFIC",
                        "value": "true"
                    }
                ],
                "secrets": [
                    {
                        "name": "DD_API_KEY",
                        "valueFrom": "/hoge-dev/api-secret-hoge/DATADOG_API_KEY"
                    }
                ],
                "name": "api-server-datadog-agent"
            }
        ],
        "memory": "2048",
        "cpu": "1024",
        "executionRoleArn": "arn:aws:iam::99999999999:role/hoge-dev-role-api-server-exec",
        "taskRoleArn": "arn:aws:iam::99999999999:role/hoge-dev-role-api-server-task",
        "family": "hoge-dev-task-api-server",
        "networkMode": "awsvpc",
        "requiresCompatibilities": ["FARGATE"]
    }
    

    좋은 웹페이지 즐겨찾기