devnoong.log
article thumbnail
728x90

Container Insights란?

CloudWatch Container Insight는 컨테이너형 애플리케이션 및 마이크로 서비스에 대한 모니터링, 트러블 슈팅 및 알람을 위한 완전 관리형 관측 서비스입니다. 

 

CloudWatch 콘솔에서 자동화된 대시보드를 통해 container metrics, Prometeus metrics, application logsperformance log events탐색, 분석 및 시각화할 수 있습니다.

1. mainfests 관리 폴더 생성

cd ~/environment
mkdir -p manifests/cloudwatch-insight && cd manifests/cloudwatch-insight

2. CloudWatch agent, Fluent Bit 설치 

 amazon-cloudwatch라는 네임스페이스를 생성합니다.

kubectl create ns amazon-cloudwatch

 아래의 명령어에 대한 결과 값으로 해당 네임스페이스를 확인합니다.

kubectl get ns

 

아래의 명령어들을 이용하여 CloudWatch 에이전트 및 Fluent Bit를 설치에 필요한 환경 변수들을 등록합니다.

ClusterName=eks-demo
RegionName=ap-northeast-2
FluentBitHttpPort='2020'
FluentBitReadFromHead='Off'
[[ ${FluentBitReadFromHead} = 'On' ]] && FluentBitReadFromTail='Off'|| FluentBitReadFromTail='On'
[[ -z ${FluentBitHttpPort} ]] && FluentBitHttpServer='Off' || FluentBitHttpServer='On'

 

 yaml 파일을 다운로드합니다.

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}}/'${ClusterName}'/;s/{{region_name}}/'${RegionName}'/;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

 

해당 파일을 오픈한 후, fluent-bit DaemonSet 객체를 찾은 다음 아래의 값을 464번 째 줄인 spec 밑에 추가합니다.

affinity:
  nodeAffinity:
    requiredDuringSchedulingIgnoredDuringExecution:
      nodeSelectorTerms:
      - matchExpressions:
        - key: eks.amazonaws.com/compute-type
          operator: NotIn
          values:
          - fargate

 

변경된 파일을 디플로이합니다

kubectl apply -f cwagent-fluent-bit-quickstart.yaml

 

2. CloudWatch agent, Fluent Bit 설치 확인하기

정상적으로 설치되었는지 확인합니다.

 

이에 대한 결과로 cloudwatch-agent pod 및 fluent-bit pod가 각각 3개씩 나오면 됩니다.

kubectl get po -n amazon-cloudwatch

 

추가적으로 아래의 명령어를 통해서 2개의 Daemonset이 출력되는 것을 확인할 수 있습니다.

kubectl get daemonsets -n amazon-cloudwatch

 

728x90