반응형
개요
kubernetes pod의 로그를 수집하기 위해서 fluent-bit을 사용할 수 있습니다.
(그외 다른 것도 있습니다.)
로그 수집 흐름
example 1) fluent-bit -> Loki -> Grafana
example 2) fluent-bit -> CloudWatch -> Grafana
example 3) fluent-bit -> ElasticSearch -> Grafana
> 로그 저장소를 원하는 것으로 선택하시면 됩니다.
참조 링크
1. fluent-bit 커스텀 설치 : https://dongwook35.tistory.com/93
2. AWS CloudWatch 로그 수집 공식 메뉴얼 : https://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/Container-Insights-setup-logs-FluentBit.html
1. IAM 설정
- Fluent Bit(Pod)에서 로그를 수집하고 CloudWatch에 로그 그룹에 로그 적재에 필요한 권한이 필요합니다.
1. https://console.aws.amazon.com/iam/에서 IAM 콘솔을 엽니다.
2. 왼쪽 탐색 창에서 역할(Roles)을 선택합니다. 그런 다음 역할 생성(Create role)을 선택합니다.
3. 사용자 지정 신뢰 정책 클릭
1. 사용자 지정 신뢰 정책 내용 입력하기
- xxx 내용에 해당 정보 넣기
- AccountID, OIDC URL 정보
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Federated": "arn:aws:iam::xxxxx:oidc-provider/oidc.eks.ap-northeast-2.amazonaws.com/id/xxx"
},
"Action": "sts:AssumeRoleWithWebIdentity",
"Condition": {
"StringEquals": {
"oidc.eks.ap-northeast-2.amazonaws.com/id/xxx:sub": "system:serviceaccount:amazon-cloudwatch:fluent-bit",
"oidc.eks.ap-northeast-2.amazonaws.com/id/xxx:aud": "sts.amazonaws.com"
}
}
}
]
}
2. 다음(Next)을 선택합니다.
4. 권한 추가에서 "cloudwatchFullAccess"를 입력합니다.
그런 다음 검색에 반환된 정책 이름 왼쪽에 있는 확인란을 체크합니다.
다음(Next)을 선택합니다.
5. 역할 생성
- 역할 이름 입력
- 설명 입력
2. NameSpaces 생성
fluent-bit PoD를 배포할 Namespace를 생성합니다.
- namespace 배포
kubectl apply -f https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/daemonset/container-insights-monitoring/cloudwatch-namespace.yaml
3. ConfigMap 생성
fluent-bit PoD에 옵션 설정으로 사용할 ConfigMap 생성합니다.
- 변수 설정
# 변수 설정
ClusterName=ddo-apne2-dev-xxx
RegionName=ap-northeast-2
FluentBitHttpPort='2020'
FluentBitReadFromHead='Off'
[[ ${FluentBitReadFromHead} = 'On' ]] && FluentBitReadFromTail='Off'|| FluentBitReadFromTail='On'
[[ -z ${FluentBitHttpPort} ]] && FluentBitHttpServer='Off' || FluentBitHttpServer='On'
- ConfigMap 배포
# cluster-info라는 ConfigMap을 생성합니다
kubectl create configmap fluent-bit-cluster-info \
--from-literal=cluster.name=${ClusterName} \
--from-literal=http.server=${FluentBitHttpServer} \
--from-literal=http.port=${FluentBitHttpPort} \
--from-literal=read.head=${FluentBitReadFromHead} \
--from-literal=read.tail=${FluentBitReadFromTail} \
--from-literal=logs.region=${RegionName} -n amazon-cloudwatch
> #FluentBitReadFromHead : 기본적으로 Fluent Bit는 테일에서 로그 파일을 읽으며 배포된 후 새 로그만 캡처합니다.
반대를 원하는 경우 FluentBitReadFromHead='On'으로 설정하면 파일 시스템의 모든 로그를 수집합니다
배포 확인 명령어
kubectl get cm fluent-bit-cluster-info -o yaml -n amazon-cloudwatch
4. Fluent bit 설치
fluent-bit pod를 daemonset으로 배포합니다.
- fluentd-bit yaml 다운로드 및 수정
# Fluentbit deamonset yaml 파일 다운로드
wget https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/daemonset/container-insights-monitoring/fluent-bit/fluent-bit.yaml
# Fluentbit serviceaccount RBAC 설정
# xxxxx에 알맞은 정보를 입력하세요.
# 위에서 생성한 Cloudwatch Role ARN 주소
vi fluent-bit.yaml
annotations:
eks.amazonaws.com/role-arn: arn:aws:iam::xxxxx:role/ddo-apne2-dev-xxxx
- fluent-bit 설치
# fluent-bit 설치
kubectl apply -f fluent-bit.yaml -n amazon-cloudwatch
# fluent-bit 설치 확인
kubectl get pods -n amazon-cloudwatch
5. Fluent bit Log 수집 확인
fluent-bit log을 확인해서 정상적으로 로그수집 및 Cloudwatch으로 로그가 저장이 되고 있는지 확인
# fluent-bit 로그 확인
kubectl log fluent-bit-xxx -n amazon-cloudwatch
6. CloudWatch 로그그룹에 로그 저장 확인
Cloudwatch으로 로그가 저장이 되고 있는지 확인
- AWS CloudWatch 로그인 : https://ap-northeast-2.console.aws.amazon.com/cloudwatch
- 탐색창 > 로그 그룹 클릭 > 목록 확인
- /aws/containerinsights/Cluster_Name/application
- /aws/containerinsights/Cluster_Name/host
- /aws/containerinsights/Cluster_Name/dataplane
6. Grafana 설정
- Import ID : 14109
반응형
'모니터링 > prometheus' 카테고리의 다른 글
[ Fargate ] Adot-collector 설치 (fargate 메트릭,로그) (0) | 2025.02.26 |
---|---|
[ Fargate ] Fargate 로깅 (1) | 2023.10.20 |
fluent-bit (0) | 2023.10.18 |
[ AMP ] Amazon Managed service for Prometheus 구축 (0) | 2023.10.05 |
[ prometheus ] scrape 설정 (0) | 2023.09.26 |