인프라/AWS

EKS Observability

스루나루 2024. 3. 31. 04:28
728x90
728x90

 

 

EKS Logging 

 EKS에서도 로깅을 확인 할 수가 있는데 보통 해당 로그에 대해서는 비활성화가 되어 있기 때문에 활성화를 eks 명령어를 통해서 활성화를 해줘야한다. 아니면 웹에서도 활성화가 가능하다 . 

 

 나의 로그 그룹을 확인하고 해당 그룹에 대한 로그들을 Cloud Watch를 통해서 확인을 할 수가 있다. 

 

 

 컨테이너 파드 로깅 

 

 사용 리전의 인증서 ARN확인을 하는데 아무것도 뜨지 않느다... 일단 해당 nginx에서는 필요가 없는 거 같으니 넘어가고 추후 수정을 해보자.... 설정을 잘못했나 싶어서 CloudFormation을 재배포 했지만 똑같이 인증 정보가 나타나지 않음 

 

 아래의 서비스를 배포 

service: 
  type: NodePort
networkPolicy: 
  enabled: false
ingress: 
  enabled: true
  ingressClassName: alb
  hostname: nginx.surunaru.shop
  pathType: Prefix
  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 
    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'

 

 배포 후 확인 

 

흠... 전혀 접속이 되지 않는다.. 

 

서비스 쪽에서 찾아보니 ...  아래와 같은 에러 메시지를 확인 

 

 Route53에서도 해당 dns 관련 정보가 없는 것을 확인 ... 추후 수정 필요

 

 

Container Insights metrics in Amazon CloudWatch & Fluent Bit 

 

 - CloudWatch Agent 파드와 Fluent Bit파드 두가지가 노드 안에 배포가 되고 메트릭과 로그를 수집 후 CloudWatch에 전송하여 로그를 확인 

 

 각 노드에 있는 파드들의 로그는 /var/log/containers에 쌓이는 중 

 CloudWatch는 이러한 로그들을 수집하여 시각화 해줄 수 있다. 

 

 CloudWatch Container observability 설치 

 

 매트릭과 로그를 수집하는 파드들이 배포됨을 확인

 

흠... 분명 nginx 배포를 했는데도 불구하고 로그가 쌓이지 않는다..

 

 애드온 설치 후 Container Insights에서 각 로그 등을 확인 가능 

 

 

 

Metrics-server & kwatch & boktube 

 

 

 

지난주 CloudFormation삭제할 때 도중에 꺼져서 다시 재배포 후 삭제한 게 문제였는지 에러가 실습이 제대로 진행이 되지 않는다.. 

 

다음과 같이 이상한 이미지 파드를 배포 후 슬랙을 확인해봐도 아무런 알람이 오지 않음 ... 

 

 

 

 

프로메테우스 

 

 - 현재는 위에서 배웠돈 로그에 대해 프로메테우스를 사용하여 각 로그를 수집후 추후 그라파나로 시각화를 사용 

 

 

 

프로메테우스 설치를 위해 ARN 인증서 확인을 해야하는데... 전혀 뜨지 않음..;; 

 

 yaml파일로 파드 배포시 아래와 같이 변수 자체에 값이 없어 에러로 배포가 제대로 되지 않음.. ;

 



하루종일 IAM도 바꿔보고 재배포 해보고 나름대로 확인도 해봤는데 자꾸 어디서 설정이 꼬였는지 에러가 난다... 

계정을 새로 하나 만드는게 빠를 거 같다..

 


 죄송합니다. 앞서 3주차에 삭제에 실수가 있었는지 도중에 설정이 꼬여서 그런지 실습이 제대로 되지 않아 4주차 관련 EKS 로그 관련 내용 정리로 변경하고자 합니다. 

 

 

메트릭 

 

1. 정의 

 로그에 관련된 4주차 에 대한 내용을 공부하다보면 메트릭이라는 단어가 자주 등장한다. 

 메트릭이란? 쿠버네티스 클러스터의 구성 요소나 애플리케이션에서 발생하는 다양한 측정 가능한 데이터를 뜻한다. 

 즉 메트릭이란 그냥 쿠버네티스에 관련된 수 많은 정보를 나타내는 하나의 데이터 즉 로그라고 봐도 무방할 거 같다. 

 우리는 이러한 메트릭을 확인하면서 클러스터 내의 노드가 어떤 상태인지 또 파드가 잘 동작하는지를 파악할 수 있기 때문에 유지보수 혹은 트러블 슈팅을 하기 위해서 무조건 잘 파악해야하는 부분 중 하나라고 볼 수 있다. 

 

 2. 종류 

 1) 노드 메트릭 : 각 노드 CPU나 메모리의 사용량이나 네트워크 트래픽 관련 정보 

 2) 파드 메트릭 : 파드가 사용하는 CPU나 메모리 사용량 등을 나타내는 정보 

 3) 서비스 메트릭 : 서비스 요청 수, 응답시간 등을 나타내는 정보 

 

3) 수집 방법 

 클러스터 내의 다양한 정보인 메트릭들을 파악하기 위해선 당연히 해당 메트릭을 모아야한다. 

 

  - cAdvisor 

 - 쿠버네티스 자체의 메트릭을 수집하는 모니터링 솔루션 

 - 컨테이너 별 실시간 리소스 사용량을 런타임부터 전달받아서 처리 

 - 여러 컨테이너에서 사용하는 메트릭을 수집후 가공해서 kubelet에 전달하는 역할 

 

프로메테우스 

 

1) 특징 

  - 오픈 소스로 무료로 사용이 가능 

  - 동적으로 확장 및 축소 되는 쿠버네티스 환경에서 자동으로 해당 내용을 감지

  - 중앙의 프로메테우스 서버가 모니터링 대상의 정보를 직접 가져오는 Pull방식을 사용 

Push 방식 

클라이언트에서 주기적으로 서버에 메트릭 데이터를 전송하는 방식 
데이터 분석이 힘들지만 수집 저장이 간편하고 전반적인 컨트롤이 가능한 방식 

 

  - 다양한 애플리케이션과 연동해서 사용이 가능 : MySQL , Elastic

  - 시계열 데이터베이스를 사용하여 순차적으로 메트릭을 보관 : 키와 값으로 이루어진 데이터 모델을 사용 

 

 

 2) 사용하는 이유 

  - 중앙 집중식 구성 및 관리 콘솔 제공 

  - 수 만개의 메트릭을 직접 보지 않고 쿼리를 통해서 필터링

  - Pull 방식 안 되면 Push방식으로 수집 가능 

 

 

 3) 구성

 1. 프로메테우스 서버 

  - 메트릭을 수집하고 시계열 데이터를 저장 및 web ui를 제공해주는 역할 

  - 프로메테우스 주요 기능을 수행 

 

 2. 노드 익스포터 

  - 메트릭 정보를 http로 공개하는 역할 

  - 공개한 내용은 프로메테우스 서버에서 수집

 

 3. kube-state-metrics 

  - 프로메테우스 서버가 수집할 수 있는 메트릭 데이터 형태로 가공 

 

  4. alert manager 

   - 프로메테우스의 경보 규칙 및 이벤트 발생시 메세지를 전달 

   - 주기적인 감시를 담당 

 

  5. push gateway 

   - 배치와 스케줄 작업시 수행되는 일회성 작업들의 상태를 저장 

 

  6. Client Library 

   - 코드로 메트릭을 정의하고 제어하는 계측 기능 추가 

 

  7. Exporter 

    - 프로메테우스의 요청을 받아들이고 요청된 데이터 수집 및 변환 프로메테우스에게 요청받은 데이터를 반환해주는 역할 = 작은 프록시 

 

 

그라파나  

 

1) 특징 

  -  다양한 데이터 소스 지원 : 프로메테우스 뿐만 아니라 다양한 데이터들과 호환이 되며 보다 범용적으로 데이터 시각화에 사용이 가능 

  -  차트 및 그래프 등 여러 데이터 시각화 툴들을 제공 

  -  경보 기능 : 특정 이벤트가 발생하면 경보 발생 

   - 사용자 친화적인 인터페이스 : 직관적인 사용자 인터페이스를 제공 -> 프로메테우스보다 훨씬 보기 좋음 

다른 시각화 툴과의 차이 

그라파나와 비슷한 데이터 시각화 서비스 중 비슷한 데이터 독이란 서비스가 있다. 
해당 서비스 또한 그라파나 처럼 데이터를 시각화 시켜준다는 점에서는 유사하지만 데이터 독은 데이터를 직접 저장하고 있는 것과는 달리 그라파나는 내부가 아닌 외부에 저장하고 쿼리를 통해 데이터를 동적으로 가지고 온다는 것이 큰 차이이다. 
 보통 우리가 쿠버네티스 환경을 사용할 때 모니터링 도구를 주로 그라파나와 프로메테우스를 연동해서 사용하는데 프로메테우스가 메트릭을 수집 및 보관하면 해당 메트릭을 그라파나가 원할 때 슥슥 가지고와서 사용하니까 이러한 구성을 주로 사용하는 거 같다. 
 그라파나는 직접 쿼리 날려서 가져오는 방식이라 보다 빠르게 최신 데이터를 대시보드에 반영할 수 있다. 

 

 

 

 

 

 

 

 

참고

 

https://themapisto.tistory.com/44

 

[프로메테우스] (3) CAdvisor란?

안녕하세요. 프로메테우스에 대해서 궁금해서 들어온 여러분들 설치부터 해보셨겠죠? 만약 안해보셨다면 해보고 오시죠 2020.12.11 - [컨테이너/Prometheus] - [프로메테우스] (1) 프로메테우스 설치 ✅

themapisto.tistory.com

 

https://gruuuuu.github.io/cloud/monitoring-k8s1/

 

Kubernetes Monitoring - Concept, Architecture

Overview Kubernetes의 Monitoring 개념과 아키텍처에 대해서 기술하겠습니다. 참고 링크들 아리수/쿠버네티스 모니터링 아키텍처(kubernetes monitoring architecture) 조대협의블로그/쿠버네티스 #13 - 모니터링 (

gruuuuu.github.io

https://jennifersoft.com/ko/blog/kubernetes/2023-12-20-kubernetes-14/

 

14. 프로메테우스 - 쿠버네티스 모니터링 시스템

이번 장은 오픈소스 모니터링 시스템 프로메테우스를 알아봅니다. 내용에 앞서 쿠버네티스 환경의 모니터링은 전통적인 VM(가상 머신) 환경의 모니터링과 어떠한 차이점이 있는지 알아보겠습니

jennifersoft.com

https://velog.io/@moey920/%EC%95%88%EC%A0%95%EC%A0%81%EC%9D%B8-%EC%9A%B4%EC%98%81%EC%9D%84-%EC%99%84%EC%84%B1%ED%95%98%EB%8A%94-%EB%AA%A8%EB%8B%88%ED%84%B0%EB%A7%81.-%ED%94%84%EB%A1%9C%EB%A9%94%ED%85%8C%EC%9A%B0%EC%8A%A4%EC%99%80-%EA%B7%B8%EB%9D%BC%ED%8C%8C%EB%82%98

 

안정적인 운영을 완성하는 모니터링, 프로메테우스와 그라파나

메트릭이란?시계열 데이터베이스란?애너테이션으로 매트릭 수집하기멀티 컨테이너 패턴다양한 종류의 프로메테우스 익스포터PromQL 정규 표현식쿠버네티스 내에서 도메인 이름을 제공하는 CoreD

velog.io

https://velog.io/@hyunshoon/Monitoring-Prometheus-%EC%B4%9D-%EC%A0%95%EB%A6%AC#metric-%EC%88%98%EC%A7%91-%EB%B0%A9%EC%8B%9D%EC%9D%98-%EC%9D%B4%ED%95%B4-push-vs-pull

 

[Monitoring] Prometheus 총 정리

🔥 Goal > 나만의 모니터링 문서를 만든다. 각 하위 개념의 자세한 정리를 따로 포스팅하여 링크를 첨부한다. 프로메테우스를 심도 깊게 정리한다. 프로메테우스로 무엇을, 어떻게 모니터링 할지

velog.io

https://www.44bits.io/ko/keyword/grafana

 

그라파나(Grafana)란?

그라파나(Grafana)는 그라파나 랩(Grafana Labs)에서 오픈소스로 개발하고 있는 메트릭/로그 시각화 대시보드 애플리케이션입니다. 처음에는 그라파이트(Graphite)와 인플럭스DB(InfluxDB)와 같은 메트릭

www.44bits.io

https://owin2828.github.io/devlog/2020/03/13/etc-5.html

 

[Prometheus]프로메테우스 개념 구조 및 quick start - 낮코밤코

들어가기 앞서 프로메테우스는 오픈 소스 기반의 모니터링 시스템이다. ELK 와 같은 로깅이 아니라, 대상 시스템으로 부터 각종 모니터링 지표를 수집하여 저장하고 검색할 수 있는 시스템이다.

owin2828.github.io

 

728x90
728x90