Search

CloudWatch Agent + Fluentbit

ENV

EKS_CLUSTER_NAME="<CLUSTER_NAME>" REGION_CODE="<REGION>" FluentBitHttpServer='On' FluentBitHttpPort='2020' FluentBitReadFromHead='Off' FluentBitReadFromTail='On'
Shell
복사

Install CloudWatch Agent ❗️(환경변수 체크해주기)

wget https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/daemonset/container-insights-monitoring/quickstart/cwagent-fluent-bit-quickstart.yaml sed -i 's/{{cluster_name}}/'${EKS_CLUSTER_NAME}'/;s/{{region_name}}/'${REGION_CODE}'/;s/{{http_server_toggle}}/'${FluentBitHttpServer}'/;s/{{http_server_port}}/'${FluentBitHttpPort}'/;s/{{read_from_head}}/'${FluentBitReadFromHead}'/;s/{{read_from_tail}}/'${FluentBitReadFromTail}'/' cwagent-fluent-bit-quickstart.yaml
Shell
복사
kubectl apply -f cwagent-fluent-bit-quickstart.yaml
Shell
복사

Check

kubectl get ds,pod,cm,sa -n amazon-cloudwatch kubectl describe clusterrole cloudwatch-agent-role fluent-bit-role # 클러스터롤 확인 kubectl describe clusterrolebindings cloudwatch-agent-role-binding fluent-bit-role-binding # 클러스터롤 바인딩 확인 kubectl -n amazon-cloudwatch logs -l name=cloudwatch-agent -f # 파드 로그 확인 kubectl -n amazon-cloudwatch logs -l k8s-app=fluent-bit -f # 파드 로그 확인
Shell
복사

CloudWatch Agent 설정 확인 (아래의 JSON을 참고)

kubectl describe cm cwagentconfig -n amazon-cloudwatch
Shell
복사
{ "agent": { "region": "ap-northeast-2" }, "logs": { "metrics_collected": { "kubernetes": { "cluster_name": "wsi-eks-cluster", "metrics_collection_interval": 60 } }, "force_flush_interval": 5 } }
JSON
복사

DaemonSet 확인

kubectl describe -n amazon-cloudwatch ds cloudwatch-agent
Shell
복사

Fluent Bit Cluster Info 확인

kubectl get cm -n amazon-cloudwatch fluent-bit-cluster-info -o yaml | yh
Shell
복사

Fluent Bit 설정 확인

kubectl describe cm fluent-bit-config -n amazon-cloudwatch
Shell
복사

Add Log & Check Log

kubectl exec -it -n skills deployment.apps/skills-app-deployment -- curl localhost:8080/healthcheck > /dev/null 2>&1 kubectl logs -n skills deployment.apps/skills-app-deployment -c skills-app
Shell
복사

 CloudWatch Log Group 가서 확인하기

로그 그룹 이름
로그 소스
/aws/containerinsights/Cluster_Name/application
/var/log/containers의 모든 로그 파일
/aws/containerinsights/Cluster_Name/host
/var/log/dmesg/var/log/secure 및 /var/log/messages에서의 로그
/aws/containerinsights/Cluster_Name/dataplane
kubelet.servicekubeproxy.service 및 docker.service에 대한 /var/log/journal에서의 로그
application: 컨테이너 또는 파드 로그
host: 노드 (호스트) 로그
dataplane: k8s DataPlane 로그
/var/log/containers
영역: 컨테이너
Kubernetes 컨테이너의 로그를 저장합니다. 각 컨테이너의 stdout과 stderr 출력이 이 디렉토리에 저장됩니다.
/var/log/dmesg
영역: 노드
커널 메시지 로그를 저장합니다. 시스템 부팅 과정과 커널 관련 이벤트를 기록합니다.
/var/log/secure
영역: 노드
보안 관련 로그를 저장합니다. 인증, 권한 부여, sudo 명령 등의 로그가 포함됩니다.
/var/log/messages
영역: 노드
일반 시스템 로그를 저장합니다. 다양한 시스템 메시지와 데몬 로그가 포함됩니다.
kubelet.service
영역: k8s Data plane
kubelet 서비스의 로그를 저장합니다. kubelet은 각 노드에서 실행되며, 파드와 컨테이너의 생명주기를 관리합니다.
kubeproxy.service
영역: k8s Data plane
kube-proxy 서비스의 로그를 저장합니다. kube-proxy는 네트워크 프록시로, Kubernetes 서비스의 네트워크 규칙을 관리합니다.
docker.service
영역: k8s Data plane
Docker 데몬의 로그를 저장합니다. Docker는 컨테이너를 관리하고 실행하는 데 사용됩니다.
/var/log/journal
영역: 노드
systemd-journald 로그를 저장합니다. 시스템 및 서비스 로그를 바이너리 형식으로 저장합니다.