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.service, kubeproxy.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 로그를 저장합니다. 시스템 및 서비스 로그를 바이너리 형식으로 저장합니다.