AWS

[ 9 ] - 모니터링

zhuxiclover 2024. 9. 30. 16:51

1.  개요

 ➜  [ what, when ] 무엇이 문제이고, 언제 발생했고, 이상현상 감지하고 알람을 일으키는 것

 ➜  모놀리식 구조

 

 ➜  observability

    ✅ [ how, why ] 어떻게 발생했고, 왜 발생했는지 이슈의 근본 이유 파악이 목적

    ✅  MSA 구조

 

 

** 참고 **

=> https://insight.infograb.net/blog/2024/06/05/011y-trends/

 

지금 주목해야 할 옵저버빌리티 트렌드 5가지

IT 업계에서는 2024년 옵저버빌리티 트렌드로 옵저버빌리티 ‘도구’로서 AI 영향력 확대, 옵저버빌리티 ‘대상’으로서 AI 관측 중요성 증가, 옵저버빌리티 비용 절감 노력, 오픈 소스와 OpenTelemet

insight.infograb.net

 

=> https://newrelic.com/kr/blog/best-practices/what-is-observability

 

옵저버빌리티(Observability)란? 옵저버빌리티가 비즈니스 목표 달성에 어떻게 도움이 되는지 알아

옵저버빌리티를 사용하면 모든 메트릭, 이벤트, 로그 및 트레이스를 사전에 수집, 시각화 및 분석하여 애플리케이션의 상태를 이해하고 복잡한 시스템에 대한 인사이트를 얻을 수 있습니다.

newrelic.com

 

 

 

2.  인증서

 ➜  AWS Certificate Manager 관련 작업

# 이 명령어로 확인하면 인증서가 처음에 없다. 다음 명령어로 생성하고 나서 다시 출력시키면 인증서가 출력
aws acm list-certificates

aws acm request-certificate \
--domain-name thrillionx.click \
--validation-method DNS \
--options CertificateTransparencyLoggingPreference=DISABLED

# 인증서 삭제하려는 경우
aws acm list-certificates => arn 확인

# 삭제
aws acm delete-certificate --certificate-arn arn:aws:acm:ap-northeast-3:050451371827:certificate/51a156eb-89ed-43a8-a284-03de60df0a50

# 추가
export CERT_ARN=$(aws acm request-certificate \
   --domain-name example.com \
   --subject-alternative-names "sjh-nginx.thrillionx.click" \
   --validation-method DNS \
   --options CertificateTransparencyLoggingPreference=DISABLED \
   --query CertificateArn --output text
)

 

 

   ✅  확인

 

   ✅  aws acm list-certificates

 

 

 

 ➜  aws eks logging

    ✅  control plane logging : aws managed vpc

    ✅  application logging : pod, container

    ✅  node logging : 노드자체, 워크 노드

 

 

 ➜  ARN 확인

(bs-sa-user4@myeks:default) [root@myeks-bastion-EC2 ~]# CERT_ARN=`aws acm list-certificates --query 'CertificateSummaryList[].CertificateArn[]' --output text`; echo $CERT_ARN
arn:aws:acm:ap-northeast-3:050451371827:certificate/b93696c6-327b-42a5-89b9-ba44390fb511
(bs-sa-user4@myeks:default) [root@myeks-bastion-EC2 ~]# echo $CERT_ARN
arn:aws:acm:ap-northeast-3:050451371827:certificate/b93696c6-327b-42a5-89b9-ba44390fb511

# 실수했을 경우
unset CERT_ARN 후 다시 명령어 입력

 

 

 ➜  EKS > 클러스터 > 관찰성 > 로깅 관리 on

 ➜  CloudWatch > 로그 > 로그 그룹

 

 

   ✅  확인

 

 

    ✅  로그 찾기 ( 로그 인사이트로 보기 > 코드 수정 )

fields @timestamp, @message
| filter @message like "UserAgent"
| parse @message /"UserAgent":"(?<UserAgent>[^"]+)"/
| stats count() by UserAgent
| sort count desc


fields @timestamp, @message
| filter @logStream ~= "kube-apiserver"
| sort @timestamp desc


fields @timestamp, @message
| filter @logStream ~= "authenticator"
| sort @timestamp desc

 

 

    ✅  Deleting log 확인

 

 

 ➜  helm 설치

helm repo add stable https://charts.helm.sh/stable
helm repo update
helm repo add bitnami https://charts.bitnami.com/bitnami
helm install nginx bitnami/nginx

 

    ✅  kubectl get svc,pod,deploy

 

 

** T.S **

 ➜  loadbalancing에서 externalip가 pending인 경우

    ✅  프라이빗 서브넷과 퍼블릭 서브넷에 태그를 붙임

    ✅  수동 할당 : 서브넷 > 태그 > kubernetes.io/role/interal-elb, 1 [프라이빗, 서브넷 동일하게 추가]

 

 

** 참고 **

=> https://docs.aws.amazon.com/cli/latest/reference/acm/request-certificate.html

 

request-certificate — AWS CLI 1.34.29 Command Reference

Note: You are viewing the documentation for an older major version of the AWS CLI (version 1). AWS CLI version 2, the latest major version of AWS CLI, is now stable and recommended for general use. To view this page for the AWS CLI version 2, click here. F

docs.aws.amazon.com

 

 

 ➜  ssh ec2-user@$N1 sudo tree -C /var/log/containers

    ✅  링크 걸려 있는 것 확인

 

 

 ➜  ssh ec2-user@$N1 sudo ls -l /var/log/

 

 

 ➜  ssh ec2-user@$N1 sudo ls -al

 

 

 

3.  로드밸런서 올리기

 ➜  yaml 올리기

helm uninstall nginx

cat <<EOT > nginx-values.yaml
service:
    type: NodePort

ingress:
  enabled: true
  ingressClassName: alb
  hostname: nginx-shinjh.thrillionx.click
  path: /*
  annotations: 
    alb.ingress.kubernetes.io/scheme: internet-facing
    alb.ingress.kubernetes.io/target-type: ip
    alb.ingress.kubernetes.io/listen-ports: '[{"HTTPS":443}, {"HTTP":80}]'
    alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:ap-northeast-3:050451371827:certificate/b93696c6-327b-42a5-89b9-ba44390fb511
    alb.ingress.kubernetes.io/success-codes: 200-399
    alb.ingress.kubernetes.io/load-balancer-name: myeks-ingress-alb
    alb.ingress.kubernetes.io/group.name: study
    alb.ingress.kubernetes.io/ssl-redirect: '443'
EOT

helm install nginx-shinjh bitnami/nginx --version 14.1.0 -f nginx-values.yaml

 

 

 ➜  확인

    ✅  로드밸런서

 

 

    ✅  대상 그룹

 

 

    ✅  kubectl get ingress

    ✅  kubectl get ingress nginx-shinjh

 

 

 ➜  control plane 로깅과 application 로깅 : host 로그, dataplane 로그

    ✅  eks에서

https://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/Container-Insights-setup-logs-FluentBit.html

 

Fluent Bit를 DaemonSet로 설정하여 CloudWatch Logs에 로그 전송 - Amazon CloudWatch

Container Insights에 이미 FluentD가 구성되어 있고 FluentD DaemonSet가 예상대로 실행되지 않는 경우(containerd 런타임을 사용하는 경우 발생할 수 있음), Fluent Bit를 설치하기 전에 Fluent Bit를 제거해야 Fluent

docs.aws.amazon.com

 

 

 ➜  fluentbit의 로그 위치

    ✅  application log => /aws/containsights/XXX/application

    ✅  host log => /aws/containerinsights/XXX/host

    ✅  dataplane => /aws/containerinsights/XXX/dataplane

'AWS' 카테고리의 다른 글

[ 11 ] - AWS EKS - Autoscaling  (0) 2024.10.04
[ 10 ] - prometheus  (0) 2024.10.02
[ 8 ] - External DNS  (0) 2024.09.27
[ 7 ] - EKS Storage Monitoring  (0) 2024.09.26
[ 6 ] - EKS Storage : Snapshot Controller  (0) 2024.09.25