[ Datadog ] NTP 설정 가이드

Print

1. NTP 설정 필요 배경

NTP Offset 값의 차이로 인해 모니터링 불가 및 오탐 등의 이슈가 발생가능하며, 최근 관련 문의가 많이 발생 함에 따라 확인 된 NTP 설정 변경 안내를 드립니다.

Datadog NTP 관련 문의 사례

  • 네트워크, 방화벽 작업이 없었는데 모니터링 중이던 host가 안보이는 현상 발생

  • Datadog으로 API 호출했을 때 NTP 문제로 인한 Metric 정보 누락 현상 확인

  • Datadog Agent가 설치된 host에서 datadog NTP 데이터를 수집할 수 없어 host monitor의 오탐 발생

  • 서버 시간이 현재 시간보다 빠를 경우 Datadog 모니터링 문의

NTP 관련 Docs 내용

Datadog 서비스와 모니터링 대상 Host 간 Agent 시간이 15초 이상 차이 날 경우 아래 현상을 경험할 수 있습니다.(원문 : When the local Agent’s time is more than 15 seconds off from the Datadog service and other hosts you are monitoring, you may experience )

  • Incorrect alert triggers (오알람 발생)

  • Metric delays (메트릭 지연)

  • Gaps in graphs of metrics (메트릭 그래프의 차이)

※ NTP 참고 URL: Datadog NTP Integration 가이드

Datadog의 NTP 참조 순서

  • Datadog Agent가 실행되는 CSP의 사설 NTP를 감지하는 경우, CSP NTP 참조

  • 감지가 안되는 경우 Datadog NTP 값 참조. 0~3.datadog.pool.ntp.org 까지 4개의 Domain 제공
    ※ Note: NTP 요청은 Proxy 설정을 지원 하지 않습니다.

  • Proxy 서버 사용, On-premise 및 내부 폐쇄망 구조 등 Datadog NTP 참조가 안되는 사이트의 경우 NTP 설정 변경이 필요합니다.

2. NTP 점검

NTP는 Datadog의 상태 점검 기능인 Service Check을 통해 수집 상태를 확인할 수 있으며, 수집되면 ntp.offset 메트릭이 수집됩니다.

Check Summary 상태 확인

image-20240307-013848.png
  • Check Summary는 전체 Service Check의 요약 정보를 보여주는 메뉴입니다.
    메뉴 경로 : Monitors > Check Summary

  • ntp.in_sync 의 Status를 아래와 같이 확인 합니다.

    • OK : 상태 정상

    • Critical : NTP Offset이 차이 남

    • Unknown : ntp.offset 수집 안됨

ntp.offset 메트릭 확인

  • Metrics의 Summary 메뉴에서 ntp.offset 메트릭 수집 여부를 확인 할 수 있습니다.

    image-20240307-014017.png
  • Metrics의 Explorer 메뉴에서 ntp.offset 메트릭 값 확인 할 수 있습니다. . 수집주기는 15분입니다.

    image-20240307-014046.png
  • Monitors의 검색창에서 type:custom 이나 ntp로 검색을 하면 기본 NTP alert을 확인 가능 합니다.

  • 최근 2분동안의 NTP status 값을 근거로 알람 발생 합니다.

    image-20240307-014225.png
  • 현재 배포된 NTP alert rule의 경우 아래와 같이 Do not notify for Unknown status로 설정되어서 Unknown 상태 시에도 OK로 표시됩니다.

    image-20240307-014304.png

3. NTP 설정 변경

Proxy 사용, On-premise/내부망 사용 환경에서 NTP 설정 점검 결과 Unknown 상태로 나오는 경우는 아래와 같이 Local NTP로 변경 설정합니다.

Local NTP 설정을 했으나, 정상적으로 동작하지 않아 Unknown 상태로 나오는 경우, NTP 서버 IP를 지정하여 설정할 수 있습니다.

NTP Integration 설정

Linux / Windows 설정 방법

플랫폼

경로

Linux

/etc/datadog-agent/conf.d/ntp.d/conf.yaml

Windows

%ProgramData%\Datadog\conf.d\ntp.d\conf.yaml

Datadog Agent Manager 의 Checks 메뉴에서 Manage Checks의 ntp.d\conf.yaml 선택 후 설정

  • conf.yaml 설정

    • Local NTP 사용시

      init_config:
      instances:
        - use_local_defined_servers: true         ## Local NTP 사용 시 true 변경. (Default)false
    • 지정 NTP 서버 사용시

      init_config:
      instances:
          ## @param host - string - optional
          ## Single NTP server hostname or IP address to connect to.
        - host: OOO.OOO.OOO.OOO             ## NTP 주소를 직접 입력
  • 설정 후 Agent 재시작
    설정 변경 후 Datadog Agent 재시작을 해야 적용됩니다.

OS

Command

Linux

CentOs/Redhat

sudo systemctl restart datadog-agent

sudo restart datadog-agent

Ubuntu/Debian

sudo service datadog-agent restart

Windows

  • cmd에서 아래 command 실행
    "%ProgramFiles%\Datadog\Datadog Agent\bin\agent.exe" status

  • Datadog Agent Manager > Restart Agent

  • Windows Icon tray > Datadog Icon tray 마우스 우클릭 > restart

  • Local NTP 설정 시 참조 값

    • Linux(UNIX): /etc/ntp.conf 혹은 etc/xntp.conf 값 참조

    • Windows: HKLM\SYSTEM\CurrentControlSet\Services\W32Time\Parameters\NtpServer 참조

    • Local에서 OS의 위의 정보를 참조하지 않을 경우 Unknown으로 인식 합니다.

Kubernetes 설정 방법

Kubernetes managed service 로 생성된 노드가 Linux 및 Windows OS 여부에 따라 하기 경로에 ntp 관련 설정 값이 존재하는지 여부 및 각 Cloud provider의 Worker node 에서 공식적으로 로컬 NTP 서버를 지원하는지 Cloud provider를 통해 확인 필요

## For Unix system, the servers defined in "/etc/{ntp,xntp,ntpd,chrony}.conf" and "/etc/openntpd/ntpd.conf" are used.

## For Windows system, the servers defined in registry key HKLM\\SYSTEM\\CurrentControlSet\\Services\\W32Time\\Parameters\\NtpServer are used.

  • Datadog Agent Configmap에 ‘use_local_defined_servers: true’ 설정 추가 하세요.
    ※ 직접 NTP 서버 IP를 지정하려 하시는 경우 에는 Datadog Agent Configmap에
    'use_local_defined_servers:ture'설정이 아닌 ‘host: <IP정보>’ 설정을 추가 하시기 바랍니다.

  • Helm 배포 values.yaml 설정 예(Linux node 기준)

    • Local NTP 사용시

      confd: 
          ntp.yaml: |-
            init_config:
            instances:
              - use_local_defined_servers: true
      
      # agents.volumes -- Specify additional volumes to mount in the dd-agent container
      volumeMounts:
           - name: ntp
             mountPath: /etc/ntp.conf
        volumes:
           - name: ntp
             hostPath:
               path: /etc/ntp.conf
    • 지정 NTP 서버 사용시

      confd: 
          ntp.yaml: |-
            init_config:
            instances:
              - host: OOO.OOO.OOO.OOO
  • 설정 후 helm chart upgrade (Agent pod 자동 재기동)

    helm upgrade -f values.yaml <RELEASE NAME> datadog/datadog

4. NTP Alert 설정

Monitors > New Monitor > Service Check 메뉴에서 설정 가능하며, 기본으로 제공되는 ‘Clock in sync with NTP’ Monitor를 수정 해 사용 가능합니다.

  • Service Check Monitor 구성

    image-20240223-050235.png

    ① Pick a Service Check
    - 모니터링 가능한 Service Check 대상 선택. 이 경우 ntp.in_sync 선택 합니다.

    image-20240307-044926.png


    ② Pick monitor scope: Tag 기반의 범위 설정

    image-20240223-055442.png

    - 모니터링 범위 설정
    : 동일 Service Check이 갖고 있는 전체 host부터 tag 기반의 범위 선택 지원 합니다.
    Scope의 조건을 선택 시는 AND 조건의 로직으로 동작 합니다.
    전체 host를 대상으로 할 시 ‘All Monitored Hosts’로 선택 하시면 됩니다.
    - Excluding 조건 적용
    : Tag 기반의 제외 범위 선택을 지원 합니다.
    Excluding 조건 적용 시에는 OR 조건의 로직으로 동작 합니다.

    ③ Set alert conditions: alert 발생 조건 설정

    image-20240307-045224.png


    ▶ Aelrt 발생 조건 설정
    - SSH Check를 Monitor를 설정 시에는 Check Alert으로 선택 합니다.
    a. Check Alert : 단일 Service 별 alert 발생 조건 설정. 연속 alert 실패 회수로 조정.
    b. Cluster Alert : Cluster 그룹 내 Service Check 실패 비율로 alert 발생 조건 설정
    ▶ Alert 발생 group by 조건 설정.
    - Host를 선택합니다.
    ▶ Alert 발생 및 해소 조건 설정
    - Warning/Critical/OK 상태가 되는 조건 설정 합니다.
    - Warning/Critical에는 연속 실패 횟수를, OK에는 성공 횟수를 선택 합니다.
    - Do not notify / Notify for Unknown status 설정은 Unknown으로 모니터링 되는 항목이 있는 경우
    Alert을 발생하여 인지할 수 있도록 Notify를 선택해 사용합니다.
    ▶ Do not notify / Notify 설정
    - 데이터 수집이 없을 시 알림에 대한 설정 입니다.
    - Default는 ‘Do not notify’ 이며, Nofiy 로 설정 시 설정된 시간 동안 데이터가 없는 경우
    Nodata 알람이 발생합니다.
    ▶ Alert 자동 Resolve 설정
    - Alert 발생 후 상황이 해제되어 resolve가 되지 않아 Alert 상태가 지속되는 경우
    설정된 시간이 지나면 자동적으로 resolve 처리를 하는 기능입니다.
    - Default는 ‘Never’로 자동 resolve를 하지 않습니다. 자동 resolve 처리를 하시려면
    시간을 선택하시면 됩니다.

    ④ Notify your team: 전파 설정

    image-20240307-050324.png

    ▶ Alert Title
    - 알람 발생시 전파되는 Message의 제목입니다.
    ▶ Alert Message
    - 알람 발생시 전파되는 Message의 내용입니다.
    ▶ Use Message Template Variables
    - Alert title과 Message 본문에 사용 가능한 Template 및 변수 사용법을 확인할 수 있습니다.
    ▶ Notify your services and your team members 설정
    - opsgenie / slack / TEAMS / webhook 등 integration된 채널 및 email 등의 Noti 채널이 표시됩니다.
    알람을 전파할 채널 혹은 대상 email을 설정하시기 바랍니다.
    ▶ Content displayed 설정(Message 구성 내용 설정)
    - query / snapshot 등 자동 추가되는 내용을 Message에 포함 할지 여부 설정 합니다.
    ▶ Include Triggering tags in notification title 설정
    - 알람 발생시 전파되는 Message의 제목에 알람이 발생된 대상에 대한 tag를 표시합니다.
    ▶ Aggregation 설정
    - SSH check 대상 host 별로 알람을 발생시키므로 Multi Alert - Host 가 선택되어야 합니다.
    ▶ Renotification 설정
    - Alert(Warning) 혹은 Nodata가  지속될 경우 선택한 시간마다 재알람을 전파합니다.
    ▶ Tags 설정
    - Manage Monitors 에서 조회시, Downtime schedule 설정시 사용가능한 moniotor를 위한 Tag를
    설정합니다.
    ▶ Priority 설정
    - P1~P5로 알람의 심각도(중요도) 등을 설정합니다.

    ⑤ Define permission and audit notifications

    image-20240307-050759.png

    ▶ Restrict editing 설정
    - Alert에 대한 수정 권한을 설정합니다.
    Role 선택시 해당 role을 가진 User들은 모두 수정이 가능합니다
    ▶ Test Notifications
    - 버튼을 클릭하면 설정된 내용을 선택한 채널로 Test 알람을 발송합니다.
    ▶ Create
    - 버튼을 클릭하면 설정된 내용을 저장합니다.

이 답변이 유용합니까? 아니오

Send feedback
도움이 되어드리지 못해 죄송합니다. 아티클 개선을 위해 의견을 제공해 주시기 바랍니다.