AWS FireLens 시도
개요
컨테이너 로그를 외부로 라우팅하는 기능
TaskDefinition 매개 변수로 만들기
사용자 지정 로그 라우팅 - AWS
필요한 요소
FireLens 컨테이너 동작
로그 전송 도구로 Fluentd 또는 Fluent Bit 사용
Fluentd 다기능 자유도 높음
Fluent Bit 간이적 경량
롤
TaskRole 및 ExecutionRole 필요
→ 컨테이너의 응용 프로그램에서 사용
→ 로그 대상 CloudWatch LogGroup 만들기
만들기
ECS/Fargate 사용
환경
Windows 10
AWS CLI 1.16.191
AWS CLI 설치 - AWS
구성도
Nginx 로그는 FireLens와 Firehose를 통해 S3에
FireLens 로그는 CloudWatch Logs로 전송
Kinesis Data Firehose
아래를 참조하여 로그를 전송할 배달 스트림 생성
Amazon Kinesis Data Firehose 전송 스트림 생성 - AWS
롤
TaskRole
Kinesis Firehose에 대한 쓰기 권한
Amazon Kinesis Firehose 작업, 리소스 및 조건 키 - AWS
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"firehose:PutRecord",
"firehose:PutRecordBatch"
],
"Resource": "*"
}
]
}
ExecutionRole
공식 AmazonECSTaskExecutionRolePolicy에 CreateLogGroup 추가
Amazon ECS 작업 실행 IAM 역할 - AWS
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ecr:GetAuthorizationToken",
"ecr:BatchCheckLayerAvailability",
"ecr:GetDownloadUrlForLayer",
"ecr:BatchGetImage",
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "*"
}
]
}
CFn으로 작성
컨테이너 정의와 주의점만 기술
ContainerDefinitions:
- Name: nginx
Image: 'nginx:latest'
Essential: true
PortMappings:
- Protocol: tcp
ContainerPort: 80
LogConfiguration:
LogDriver: awsfirelens
Option:
Name: firehose
region: ap-northeast-1
delivery_stream: firelens-stream
- Name: firelens
Image: '906394416424.dkr.ecr.ap-northeast-1.amazonaws.com/aws-for-fluent-bit:latest'
Essential: true
FirelensConfiguration:
Type: fluentbit
LogConfiguration:
LogDraiver: awslogs
Option:
awslogs-create-group: true
awslogs-region: ap-northeast-1
awslogs-group: /ecs/firelens-container
awslogs-stream-prefix: firelens
Nginx 컨테이너
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"firehose:PutRecord",
"firehose:PutRecordBatch"
],
"Resource": "*"
}
]
}
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ecr:GetAuthorizationToken",
"ecr:BatchCheckLayerAvailability",
"ecr:GetDownloadUrlForLayer",
"ecr:BatchGetImage",
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "*"
}
]
}
ContainerDefinitions:
- Name: nginx
Image: 'nginx:latest'
Essential: true
PortMappings:
- Protocol: tcp
ContainerPort: 80
LogConfiguration:
LogDriver: awsfirelens
Option:
Name: firehose
region: ap-northeast-1
delivery_stream: firelens-stream
- Name: firelens
Image: '906394416424.dkr.ecr.ap-northeast-1.amazonaws.com/aws-for-fluent-bit:latest'
Essential: true
FirelensConfiguration:
Type: fluentbit
LogConfiguration:
LogDraiver: awslogs
Option:
awslogs-create-group: true
awslogs-region: ap-northeast-1
awslogs-group: /ecs/firelens-container
awslogs-stream-prefix: firelens
→ delivery_stream 키는 yaml이더라도 'snake_case'로 설명됩니다.
FireLens 컨테이너
→ 계층 구조에주의
→ 준비되어 있지 않으면 LogGroup은 명시 적으로 만들어야합니다
확인
S3
CloudWatch Logs
총괄
새로운 서비스이므로 시도하는 것만으로도 즐거웠습니다.
delivery_stream 키와 LogGroup 작성 잊어서 빠졌기 때문에 더 CFn 익숙해져 가야 한다는 기분
Reference
이 문제에 관하여(AWS FireLens 시도), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/itti1021/items/e899d6cf612aef551665
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(AWS FireLens 시도), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/itti1021/items/e899d6cf612aef551665텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)