먼저 기본적으로 데이터독 로그 에이전트 매커니즘은 아래와 같다. 네트워크 혹은 이슈 발생 시 버퍼에 지연된 로그 인덱스 값을 넣고, 이슈가 해소되면 재전송한다.
https://docs.datadoghq.com/logs/guide/mechanisms-ensure-logs-not-lost/#log-rotate
데이터독 로그매니지먼트는 기본적으로 로그의 time 관련 어트리뷰트가 없으면, 로그가 인입되는 시간을 기준으로 DATE를 생성한다.
만약 로그에 TIME 관련 스탬프가 있다면 로그파이프라인을 통해 로그의 DATE를 지정할 수 있다.
데이터독은 아직 국내 리전이 없기 때문에 로그의 경우 해외망을 통해 전송된다. 거의 실시간으로 로그가 인입된다고 보면 되지만, 아주 약간의 지연이 발생될 수 있는데 대략 500ms 정도 차이가 난다.
(네트워크 시간뿐만 아니라 로그를 큐잉 하는 시간도 있어서 로그량이 많은 경우 지연 시간이 더 감소)
아무튼 어떤 경우에는 로그 지연시간까지 확인하고 싶은 경우가 있을 수 있다.
그 경우에는 로그파이프라인에서 date 리매퍼를 사용하지 않고 데이터독에 실제 인입되는 시간을 DATE로 남게 한다.
그리고 데이터독 로그 API를 사용하여 실제 로그가 생성된 시간과 데이터독에 로그가 인입된 시간을 비교할 수 있다.
아래와 같은 형식으로 POST 요청을 날리면 json 형식으로 로그들을 받을 수 있다. (5분 전 로그들)
(로그 응답 값을 1,000개 제한)
curl -L -X POST "https://api.datadoghq.com/api/v2/logs/events/search" \
-H "Content-Type: application/json" \
-H "DD-API-KEY: xx" \
-H "DD-APPLICATION-KEY: xx" \
--data-raw \
'{
"filter": {
"from": "now-5m",
"to": "now",
"query": "service:hello-nest"
},
"options": {
"timeOffset": 32400,
"timezone": "Asia/Seoul"
}
}'
응답값은 아래와 같은 json 형식이며, 데이터독에 로그가 인입된 시간(timestamp)와 실제 로그가 생성된 시간(time)을 비교하면 된다.
관리포인트가 생기기 때문에 주기적으로 Lambda를 통해 데이터독 로그 인입 지연 시간을 확인하는 것이 좋을 듯 하다.
'Log' 카테고리의 다른 글
Datadog Log Archives S3와 Amazon Athena 활용 (1) | 2024.09.25 |
---|---|
데이터독 Log Pipelines(서로 다른 로그 포맷 처리) (0) | 2022.07.12 |
데이터독 K8s helm 사용 시, 로그 제외 (0) | 2022.07.09 |