높은 처리량을 위한 Amazon ECS 로그 구성
작업 정의를 생성할 때 log-driver-buffer-limit
에 값을 지정하여 메모리에 버퍼링되는 로그 줄 수를 지정할 수 있습니다. 자세한 정보는 Docker 설명서의 Fluentd logging driver
Docker에서 버퍼 메모리가 부족하여 새 메시지를 추가할 수 있도록 버퍼 메시지를 삭제할 수 있으므로 처리량이 많을 때 이 옵션을 사용합니다.
버퍼 제한 옵션과 함께 Amazon ECS용 FireLens를 사용할 때 다음 사항을 고려해야 합니다.
-
이 옵션은 플랫폼 버전
1.4.0
이상의 Amazon EC2 시작 유형 및 Fargate 시작 유형에서 지원됩니다. -
이 옵션은
logDriver
가awsfirelens
로 설정된 경우에만 유효합니다. -
기본 버퍼 제한은
1048576
개의 로그 줄입니다. -
버퍼 제한은 로그 라인
0
줄 이상,536870912
줄 미만이어야 합니다. -
이 버퍼에 사용되는 최대 메모리 양은 각 로그 줄의 크기와 버퍼 크기를 곱한 값입니다. 예를 들어 애플리케이션의 로그 줄이 평균
2
KiB인 경우 4096의 버퍼 제한은 최대8
MiB를 사용합니다. 작업 수준에서 할당된 총 메모리 양은 로그 드라이버 메모리 버퍼 외에도 모든 컨테이너에 할당된 메모리 양보다 커야 합니다.
awsfirelens
로그 드라이버가 태스크 정의에 지정되어 있으면 Amazon ECS 컨테이너 에이전트는 다음 환경 변수를 컨테이너에 주입합니다.
FLUENT_HOST
-
FireLens 컨테이너에 할당된 IP 주소입니다.
참고
bridge
네트워크 모드에서 EC2 시작 유형을 사용하는 경우 FireLens 로그 라우터 컨테이너(컨테이너 정의에firelensConfiguration
객체가 있는 컨테이너)를 다시 시작한 후 애플리케이션 컨테이너의FLUENT_HOST
환경 변수가 부정확해질 수 있습니다. 이는FLUENT_HOST
가 동적 IP 주소이며 재시작 후 변경될 수 있기 때문입니다. 애플리케이션 컨테이너에서FLUENT_HOST
IP 주소로 직접 로깅하면 주소가 변경된 후 실패하기 시작할 수 있습니다. 개별 컨테이너를 재시작하는 방법에 대한 자세한 내용은 컨테이너 재시작 정책이 있는 Amazon ECS 작업의 개별 컨테이너 재시작 섹션을 참조하세요. FLUENT_PORT
-
Fluent Forward 프로토콜이 수신 대기 중인 포트입니다.
FLUENT_HOST
및 FLUENT_PORT
환경 변수를 사용하면 stdout
을 거치지 않고 코드에서 로그 라우터로 직접 로깅할 수 있습니다. 자세한 정보는 GitHub에서 fluent-logger-golang
다음은 log-driver-buffer-limit
를 지정하는 구문입니다. my_service_
를 사용자 서비스의 이름으로 바꿉니다.
{ "containerDefinitions": [ { "name": "
my_service_
log_router", "image": "public.ecr.aws/aws-observability/aws-for-fluent-bit:stable", "cpu": 0, "memoryReservation": 51, "portMappings": [], "essential": true, "environment": [], "mountPoints": [], "volumesFrom": [], "user": "0", "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-group": "/ecs/ecs-aws-firelens-sidecar-container", "mode": "non-blocking", "awslogs-create-group": "true", "max-buffer-size": "25m", "awslogs-region": "us-east-1", "awslogs-stream-prefix": "firelens" }, "secretOptions": [] }, "systemControls": [], "firelensConfiguration": { "type": "fluentbit" } }, { "essential": true, "image": "httpd", "name": "app", "logConfiguration": { "logDriver": "awsfirelens", "options": { "Name": "firehose", "region": "us-west-2", "delivery_stream": "my-stream", "log-driver-buffer-limit": "51200" } }, "dependsOn": [ { "containerName": "log_router", "condition": "START" } ], "memoryReservation": 100 } ] }