AWS FireLens는 Amazon ECS (Elastic Container Service) 컨테이너에서 발생하는 로그 데이터를 쉽게 수집, 전송 및 처리할 수 있는 로그 라우팅 솔루션입니다. FireLens는 컨테이너 내에서 생성되는 로그 데이터를 중앙 집중화된 로그 스토리지나 다양한 로그 분석 도구로 전달하거나 가공할 수 있도록 도와줍니다.
FireLens의 작동 방식은 다음과 같습니다:
Log Router 컨테이너: Amazon ECS 컨테이너 내에 별도의 Log Router 컨테이너를 실행합니다. 이 컨테이너는 로그 데이터를 수집하고 처리하는 역할을 합니다.
로그 드라이버: FireLens는 로그 라우팅 작업을 수행하기 위해 여러 가지 로그 드라이버를 지원합니다. 예를 들어, Fluentd나 Fluent Bit과 같은 다양한 로그 드라이버를 선택하여 사용할 수 있습니다. 이러한 드라이버는 로그 데이터를 수집, 가공하고 원하는 대상으로 전송하는 역할을 수행합니다.
로그 전송 및 가공: FireLens 로그 드라이버는 컨테이너 내에서 발생하는 로그 데이터를 가로채고, 필요에 따라 변환하거나 여러 로그 저장소로 전송합니다. 예를 들어, CloudWatch Logs, Amazon S3, Amazon Kinesis 등으로 로그 데이터를 전송할 수 있습니다.
로그 가시성 및 분석: FireLens를 사용하여 로그 데이터를 중앙 집중화된 로그 관리 시스템으로 전송하면, 로그 데이터의 가시성과 분석이 용이해집니다. 이를 통해 애플리케이션의 상태, 이벤트, 문제를 모니터링하고 필요한 조치를 취할 수 있습니다.
유연한 로그 라우팅: FireLens를 사용하면 다양한 로그 저장소 및 분석 도구로 로그 데이터를 라우팅할 수 있습니다.
중앙 집중화: 로그 데이터를 중앙 집중화하여 관리하므로, 로그 데이터의 모니터링, 분석 및 보안이 간편해집니다.
컨테이너 환경 분리: 로그 처리 작업을 애플리케이션 코드와 분리하여 유지 관리의 편의성을 높일 수 있습니다.
log-router 컨테이너 생성 및 앱서버 컨테이너의 logConfiguration 생성
Json으로 생성하는게 더 빠름. 새계정 생성→Json으로 생성 클릭 후 아래 내용 복붙
{
"containerDefinitions": [
{
"name": "{앱 컨테이너 이름}",
"image": "{ecr의 이미지 주소}",
"cpu": 0,
"portMappings": [
{
"containerPort": {컨테이너 앱 포트},
"hostPort": {컨테이너 앱 포트},
"protocol": "tcp"
}
],
"essential": true,
"environment": [],
"logConfiguration": {
"logDriver": "awsfirelens",
"options": {
"AWS_Auth": "On",
"AWS_Region": "{AWS region}",
"Host": "{opensearch url}",
"Index": "{인덱스 명}",
"Name": "es",
"Port": "443",
"Suppress_Type_Name": "On",
"tls": "On"
}
}
},
{
"name": "log-router",
// 아래 이미지는 aws에서 제공하는 fluent-bit 이미지임.
"image": "906394416424.dkr.ecr.ap-northeast-2.amazonaws.com/aws-for-fluent-bit:stable",
"cpu": 0,
"memoryReservation": 50,
"essential": true,
"user": "0",
"logConfiguration": {
"logDriver": "awslogs",
"options": {
"awslogs-create-group": "true",
"awslogs-group": "firelens-container",
"awslogs-region": "{aws-region},
"awslogs-stream-prefix": "firelens"
}
},
"firelensConfiguration": {
"type": "fluentbit",
"options": {
"config-file-type": "file",
"config-file-value": "/fluent-bit/configs/parse-json.conf"
}
}
}
],
"taskRoleArn": "arn:aws:iam:::role/role-ecs-task",
"executionRoleArn": "arn:aws:iam:::role/role-ecs-task",
"networkMode": "awsvpc",
}
아래는 참고 가능한 문서입니다.
https://velog.io/@junhoskills10/ECS-TaskDefintion-FireLens-통합-활성화
즐겁게 읽었습니다. 유용한 정보 감사합니다.