ECS Fargate에서 Datadog 에이전트를 통합하는 방법
30630 단어 observabilitysredatadogterraform
소개
다른 날에는 Fargate의 ECS에서 처음으로 Datadog Agent를 설정했습니다. the documentation 을 읽어도 이해가 되지 않아 여기에 적어봅니다.
메모
무슨 문제
우선 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"]
}
Reference
이 문제에 관하여(ECS Fargate에서 Datadog 에이전트를 통합하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/aws-builders/how-to-integrate-datadog-agent-in-ecs-fargate-4cli텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)