본문 바로가기

모니터링/Datadog

Datadog으로 kubernetes 모니터링

반응형

Datadog으로 Kubernetes환경 모니터링을 생성해 보겠다.

아래 내용은 EKS를 기반으로 테스트 및 작성되었다.


1. EKS metric 수집을 위한 설정

  • EKS apiserver metric 수집을 위해선 default/kubernetes service에 아래 annotations을 추가해 주어야 한다.
annotations:
  ad.datadoghq.com/endpoints.check_names: '["kube_apiserver_metrics"]'
  ad.datadoghq.com/endpoints.init_configs: '[{}]'
  ad.datadoghq.com/endpoints.instances: '[{ "prometheus_url": "https://%%host%%:%%port%%/metrics", "bearer_token_auth": "true" }]'

 

2. monitors 설정

  • Datadog ORG페이지에서 Integrations에 kubernetes관련 항목들을 install 하고 Data Collected, Monitors등 탭에서 metrics정보 및 기본 monitors항목들 조회가 가능하다.
  • Monitors에서 +New Monitor항목을 누르면 신규 Monitor생성 화면으로 이동되며 Host, Metric, Service Check 등 여러가지 방법의 모니터링 항목을 지원한다.
  • kubernetes모니터링엔 주로 Metric과 Service Check를 사용하며 둘 모두에서 제공되는 기능들도 있는데 성능테스트를 했을 때 차이는 거의 없었다.
  • metrics
모니터링 항목 query 조건
NodeNotReady kubernetes_state.node.by_condition status:unknown,condition:ready
Node CPU Idle system.cpu.idle  
Node Memory Usable system.mem.pct_usable  
PodWaiting kubernetes_state.container.status_report.count.waiting !reason:containercreating
DiskPressure kubernetes_state.node.by_condition condition:diskpressure,status:false
MemoryPressure kubernetes_state.node.by_condition condition:memorypressure,status:false
PidPressure kubernetes_state.node.by_condition condition:pidpressure,status:false
Node Disk Usage system.disk.used  
PodTerminated kubernetes_state.container.status_report.count.terminated !reason:Completed
Datadog Agent Down (datadog.agent.running) + (datadog.cluster_agent.running)  

 

  • service check
모니터링 항목 query 조건
Kubelet Down kubernetes.kubelet.check  
APIServer Down kube_apiserver_controlplane.up  

 

  • url check : values.yaml파일에 아래와 같이 설정 추가 후 helm upgrade로 재배포
confd: {}
     http_check.yaml: |-
       init_config:
       instances:
         - name: "url_check"
           url: "https://eng-nate.tistory.com"
           min_collection_interval: 30              # default : 15초

 

모니터링 항목 query 조건
URL Check network.http.cant_connect  

 

반응형

추가적인 설정들은 환경과 상황에 따라 달라지는 부분이 많다.

처음엔 좀 복잡할 수 있으나 쓰다보면 편한 것 같고 추가적으로 기능도 계속 개선되는 것 같다.

반응형