개발놀이터

AWS EKS 모니터링 환경 구축에 슬랙 알람 추가하기 본문

배포/kubernetes

AWS EKS 모니터링 환경 구축에 슬랙 알람 추가하기

마늘냄새폴폴 2024. 10. 15. 23:53

이전 포스팅과 이어집니다!

 

https://coding-review.tistory.com/560

 

AWS EKS 모니터링 환경 구축하기 (Prometheus, Grafana)

이전 포스팅에서 이어집니다!  https://coding-review.tistory.com/559 AWS EKS HPA로 확장성 높이기저번 포스팅에서 이어지는 내용입니다!  https://coding-review.tistory.com/558 AWS EKS 스프링 + Nginx + SSL저번 포스

coding-review.tistory.com

 

이전엔 프로메테우스 + 그라파나로 모니터링 환경을 구축해봤습니다. 이번 포스팅에선 이전 포스팅에다 슬랙을 추가해보도록 하겠습니다. 

 

이전 포스팅 내용은 담지 않았습니다!

 

helm repo add prometheus-community https://prometheus-community.github.io/helm-charts

helm repo update

helm install kube-state-metrics prometheus-community/kube-state-metrics --namespace kube-system

kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml

 

우선 메트릭 서버를 설치해야하는데 저는 kube-state-metrics와 metrics-server를 동시에 설치했습니다. 

 

그리고 슬랙을 설치하고 로그인 한 뒤 webhook을 연결해줘야합니다. 

 

슬랙 webhook을 연결하는 것은 구글에 많이 나와있어서 이 부분은 생략하도록 하겠습니다. 

 

만약 프로메테우스를 helm으로 설치하였다면 alertmanager가 같이 들어가있을텐데요. 이전 포스팅과 다른 점이 바로 이부분입니다. 

 

defaultRules:
  rules:
    alertmanager: true
    etcd: true

alertmanager:
  service:
    type: NodePort
  config:
    global:
      resolve_timeout: 5m
    route:
      group_wait: 30s
      group_interval: 12h
      receiver: 'slack-notifications'
      routes:
      - receiver: 'slack-notifications'
        match:
          - alertname: "InfoInhibitor|Watchdog"
    receivers:
    - name: 'slack-notifications'
      slack_configs:
      - channel: '{채널이름}'
        api_uri: {slack webhook api}
        send_resolved: true

kubeApiServer:
  enabled: true

kubelet:
  enabled: true

prometheus:
  thanosService:
    enabled: false 
  serviceMonitorSelectorNilUsesHelmValues: false 
  service:
    type: NodePort  
  retention: 5d  
  retentionSize: "10GiB" 
  storageSpec:
    volumeClaimTemplate:
      spec:
        storageClassName: gp2  
        accessModes: 
          - ReadWriteOnce  
        resources:
          requests:
            storage: 15Gi

 

이렇게 변경하고 다시 프로메테우스를 배포하면 됩니다. 

 

다시배포할 땐

 

helm uninstall prometheus --namespace ingress-nginx

helm install prometheus prometheus-community/prometheus --namespace ingress-nginx -f prometheus.yml

 

혹은 configmap만 따로 뽑아서 변경한 다음 alertmanager를 삭제하면 deployment가 알아서 다시 만들어줍니다. 

 

그리고 그라파나로 들어가줍니다. 

 

 

이전 포스팅의 그 대시보드 오른쪽에 Alert가 있는데 Alert는 대시보드를 저장하면 사용할 수 있습니다. New alert rule을 선택하면?

 

 

 

새로운 폴더와 evaluation group을 만들어줍니다. 

 

그리고 맨 아래로 보면?

 

 

View or create contact points를 선택합니다. 

 

 

제가 테스트한다고 하나 만들어놨는데 무시하시고 Add contact point를 선택합니다. 

 

 

여기서 슬랙을 선택하고 webhook URL을 입력하면 끝!

 

오른쪽 위에 Test를 한번 눌러보시면 슬랙에 테스트 메세지가 전송됩니다. 이제 맨 아래 저장을 누르고 우리가 만든 슬랙을 선택하면 끝입니다. 

 

그리고 CPU의 부하를 줘보겠습니다. 

 

 

그리고 슬랙을 보면!

 

 

이렇게 알람이 오는 것을 확인할 수 있습니다. 

 

마치며

이번 포스팅에선 모니터링에 알람까지 설정을 해봤습니다. PromQL로 동접자 쿼리를 날릴 수 있는지 확인해보고 모니터링은 마쳐야겠네요. 아 동접자 쿼리는 포스팅할 예정은 없습니다. 아마 구글에 많이 나와있지않을까 싶은데 저도 테스트만 해보고 포스팅은 안할 생각입니다. 

 

이제 점점 인프라가 완성되고 있네요. 드디어 끝이 보입니다! 다음 포스팅에서 뵙도록 하죠!

 

긴 글 읽어주셔서 감사합니다. 오늘도 즐거운 하루 되세요!