본문 바로가기

전체 글

(17)
Datadog 사용 시 Amazon CloudWatch Metrics API 비용 절약 방안 Datadog을 AWS와 통합할 경우 Datadog에서는 주기적으로 AWS CloudWatch Metrics API를 호출하게 됩니다.이 경우에 미비하지만 CloudWatch Metrics API 비용이 발생됩니다. Datadog AWS 크롤러의 기본 주기는 10분입니다. 이번 포스팅은 Datadog 사용 시 AWS CloudWatch Metrics API 비용을 어떻게 절약할 수 있는지 알아봅니다.CloudWatch API 비용 구조CloudWatch는 메트릭 데이터 요청에 대해 비용을 부과합니다. 기본적으로 1,000개의 메트릭 요청당 $0.01가 청구되며, 이는 Datadog이 AWS 통합에서 얼마나 많은 메트릭을 요청하는지에 따라 달라집니다. 비용을 절감하기 위해서는 수집하는 메트릭 수를 줄여야 ..
Datadog Log Archives S3와 Amazon Athena 활용 Datadog Log Management란? Datadog Log Management는 로그 수집, 처리, 분석을 통합적으로 관리하는 플랫폼입니다. 다양한 소스에서 로그를 수집해 중앙에서 실시간으로 모니터링할 수 있으며, 로그 데이터를 필터링하고 쿼리로 분석하여 애플리케이션과 인프라 상태를 파악합니다. 로그 리텐션 설정을 통해 비용 효율성을 높일 수 있고, 알림 설정을 통해 중요한 이벤트를 실시간으로 감지할 수 있습니다. 이를 통해 DevOps와 보안 팀은 문제를 신속하게 진단하고 대응할 수 있습니다. 하지만 기본적으로 Datadog Log Management의 로그는 기본적으로 15일 동안만 보관 가능합니다.따라서 15일이 지난 로그에 대한 저장이 필요한데, Datadog에서는 AWS S3로 쉽게 아카..
Datadog ASM + AWS API Gateway(HTTP) 구성(Forwarded 이슈) AWS API Gateway(Protocol: HTTP)란?AWS API Gateway는 HTTP와 REST 두 가지 프로토콜을 지원하며, 각각의 특징과 사용 사례가 다릅니다. REST API는 기능이 풍부하고 복잡한 애플리케이션에 적합합니다. API Gateway REST API는 API 요청을 다양한 AWS 서비스와 통합할 수 있는 기능을 제공하며, 캐싱, 사용자 지정 권한 부여, 요청/응답 변환, 스테이지 관리 등 고급 기능을 지원합니다. 고도로 제어된 API 엔드포인트가 필요하거나, AWS 서비스와의 깊은 통합이 요구되는 경우에 REST API가 적합합니다. HTTP API는 경량화된 API로, 비용 효율성과 낮은 지연 시간을 제공합니다. REST API에 비해 간단하게 설정할 수 있으며, 기본적..
AWS IAM Identity Center를 활용한 Datadog SSO 인증 AWS IAM Identity Center 란? AWS Identity and Access Management (IAM)은 AWS에서 사용자, 그룹 및 역할을 쉽게 관리하는데 도와주는 서비스입니다. AWS 멀티 어카운트 관리, User 관리, 권한 관리 그리고 SSO 인증 등 보안 작업을 수행할 수있는 다양한 기능이 포함됩니다. 예를 들어, 사용자를 생성하고 액세스 권한을 할당하거나, IAM 그룹을 생성하고 사용자를 추가하여 효율적으로 권한을 관리 할 수 있습니다. AWS IAM Identity Center는 IAM을 사용하여 AWS 리소스에 대한 사용 권한을 관리하는 데 필요한 모든 기능을 제공합니다. 이를 통해 사용자 및 그룹에 대한 액세스 제어, AWS 리소스에 대한 권한 관리, 인증 및 권한 부여..
Datadog SAM Sample URL: https://datadoghq.net/ Datadog Serverless Session datadoghq.net Korea: https://datadoghq.net/kr
Datadog Host 과금 기준 - 15초마다 사용량을 체크하고, 그 중에서 가장 높은 수치를 1시간 주기로 저장 - 기록된 데이터 중 상위 1퍼센트 스파이크 데이터는 과금에서 제외 - Monthly : 1달(720시간) 720개의 포인트에서 상위 7개의 포인트(1%)는 제외하고 8번째 순으로 기록된 호스트 개수로 과금
A sample Android App with significant RUM functions. Datadog 콘솔의 RUM 스니핏 코드는 아주 기본적인 내용만 있어서 Android 개발자도 약간은 헤매게 되는데, 해당 샘플코드를 통해 빠르게 Android RUM에 대한 구성이 가능하다. 이를 통해 Native Applicaiton에 대한 PoC 시간을 줄일 수 있다. Datadog RUM snippet code in the console is quite basic, and can be confusing for Android developers. However, by using the sample code, it is possible to quickly configure Android RUM. It can reduce the time required for a PoC for a Native Appl..
IoT Agent 네트워크 이슈 발생 시 스토리지에 메트릭 저장 데이터독의 기본적인 로그 전송 매커니즘은 로그 포인터를 로컬 메모리에 저장해서 네트워크 이슈가 발생되더라도 기본적으로 어느정도 보장된다. 그러나 메트릭의 경우 Agent 메모리 큐 사이즈를 넘어가면 메트릭을 잃게 된다. 특히 IoT 디바이스의 경우 종종 네트워크 이슈가 발생되고 메트릭이 손실되는 경우가 발생된다. 그럴 경우 Data buffering 옵션을 통해 네트워크 지연 시 발생된 메트릭을 스토리지에 저장했다가 다시 Datadog으로 전달할 수 있다. Core Agent만 적용 가능하기 때문에 Process/APM 메트릭은 불가하다. Agent 7.27 버전부터 사용 가능하다. Releases · DataDog/datadog-agent Datadog Agent . Contribute to DataD..
데이터독 RUM 샘플레이트 관련 RUM SDK는 샘플링 관련 몇 가지 환경변수가 존재한다. Browser RUM의 경우 1)sampleRate를 통해 RUM 세션 자체에 대한 샘플레이트를 조절할 수 있다. 그리고 세션 재생(session replay)를 위한 2)sessionReplaySampleRate가 있다. 그리고 백앤드 서버와 Tracing을 위한 3)tracingSampleRate가 존재한다. 예를 들어 sampleRate는 50, sessionReplaySampleRate는 20을 설정하고, 총 요청 세션 수가 1,000이라고 가정 했을 때, 500개의 세션 정보가 Datadog에서 인덱싱 되고, 500개의 20%인 10개의 세션리플레이가 가능하다. https://docs.datadoghq.com/real_user_monit..
데이터독 Synthetic Test API(CI/CD) https://docs.datadoghq.com/api/latest/synthetics/ Synthetic ID를 통한 결과 확인 curl -X POST \ -H 'Content-Type: application/json' \ -H "DD-API-KEY: xxx" \ -H "DD-APPLICATION-KEY: xxx" \ -d "{ \"tests\": [ { \"public_id\": \"aur-mea-wzx\" } ] }" "https://api.datadoghq.com/api/v1/synthetics/tests/trigger/ci" | jq 응답 값 { "batch_id": "8f3f1a11-5172-4fbf-a52b-a0961eecd8fe", "results": [ { "device": "chrome..
Datadog 로그 지연 시간 확인 먼저 기본적으로 데이터독 로그 에이전트 매커니즘은 아래와 같다. 네트워크 혹은 이슈 발생 시 버퍼에 지연된 로그 인덱스 값을 넣고, 이슈가 해소되면 재전송한다. https://docs.datadoghq.com/logs/guide/mechanisms-ensure-logs-not-lost/#log-rotate 데이터독 로그매니지먼트는 기본적으로 로그의 time 관련 어트리뷰트가 없으면, 로그가 인입되는 시간을 기준으로 DATE를 생성한다. 만약 로그에 TIME 관련 스탬프가 있다면 로그파이프라인을 통해 로그의 DATE를 지정할 수 있다. 데이터독은 아직 국내 리전이 없기 때문에 로그의 경우 해외망을 통해 전송된다. 거의 실시간으로 로그가 인입된다고 보면 되지만, 아주 약간의 지연이 발생될 수 있는데 대략 5..
Datadog 서버리스 Lambda 모니터링 - 서버리스 장점과 단점(Lambda) 장점 모든 것을 클라우드 밴더에서 매니지드 해주기 때문에 사용자는 개발에만 집중할 수 있다. (NoOps) 사용한만큼 과금되는 방식으로 합리적이다. (메모리만 설정 가능하며 메모리에 비례해서 CPU 할당) 강제(?)로 마이크로서비스가 구성된다. 힙(?) 하다. 단점 서버리스의 CPU/Memory 등 리소스의 한계가 존재한다. 아직은 콜드스타트로 인한 지연이 발생된다. 기존 개발과 테스트 그리고 배포 방식을 사용할 수 없다. 지원하는 개발 언어 및 버전 한계가 존재. (Node.js, Python, Java, .Net, Ruby) 과금 방식은 합리적이지만 저렴하지 않으며, 과금 모니터링이 쉽지 않다. 서버리스 제공사에 Lock-in이 발생된다. 하드하게 사용 시에는 ..
데이터독 APM(커스텀 스팬 및 APM/LOG 메시지 변경) Datadog APM은 dd-trace라는 lib를 통해 데이터독과 인티그레이션 된 프레임워크나 모듈들을 모니터링 해준다. https://docs.datadoghq.com/tracing/trace_collection/compatibility/java APM를 설치하고 테스트 해보면 아래와 같이 HTTP API 호출에 대한 정보를 볼 수 있다. 하나의 요청은 Trace로 명시되고, Trace를 선택하면 Flame Graph라고 불리는 화면을 볼 수 있다. Flame Graph 내에는 Trace 내에서 호출된 다양한 요청(Span)들을 볼 수 있다. https 관련 모듈은 dd-trace(node.js)에서 호환 되어 있기 때문에 해당 exception을 바로 확인할 수 있다. Datadog Agent에서 ..
데이터독 Log Pipelines(서로 다른 로그 포맷 처리) 데이터독에서 권장하는 로그 모듈을 사용하면 알아서 APM - LOG 연동이 가능하다. NodeJS의 경우 winston, Java의 경우 Log4j/Logback 등이 있다. NestJS를 사용할 경우 nestjs-pino를 로그 모듈로 사용해도 잘 동작한다. 실제 dd-trace 모듈을 열어보면 winston 외 다른 로그 모듈도 인티그레이션 되어 있다. netstjs-pino의 경우 pino에 종속적이라 사용이 가능한 것으로 보인다. 서버에서 로그를 생성하면 trace_id, span_id 값이 로그에 찍힌 것을 볼 수 있다. {"level":30, ... ,"dd": {"trace_id": xxxx, "span_id": xxx}, "res": {"responseTime": 2, "msg": "req..
K8s에서 Datadog agent status 확인 https://docs.datadoghq.com/agent/guide/agent-commands/?tabs=agentv6v7 SecretKey 확인 $k get secret/datadog-api -o json $k get secret/datadog-api -o json | jq .data.token | base64 -d -i Agent 상태 확인 $k exec $(kubectl get pods --no-headers -o custom-columns=":metadata.name" | grep datadog | head -n 1) -- agent status
데이터독 K8s helm 사용 시, 로그 제외 Datadog helm 차트 이용 시, healthcheck와 같은 로그 제외 옵션. 정규식 사용 시 문자열에 역슬래시를 넣을 경우 (e.g client\-go) 정상 동작하지 않는 점 참고. # datadog.env -- Set environment variables for all Agents ## The Datadog Agent supports many environment variables. ## ref: https://docs.datadoghq.com/agent/docker/?tab=standard#environment-variables env: - name: DD_KUBELET_TLS_VERIFY value: "false" - name: DD_LOGS_CONFIG_PROCESSING_RULES ..
데이터독 GraphQL 연동 - GraphQL 이란? GraphQL은 Facebook에서 만든 데이터 쿼리 스펙(2012년 개발 / 2015년 공개). SQL과 같은 쿼리 스펙으로 해당 쿼리를 이해할 수 있는 MySQL과 같은 서버가 필요한데, 보통 ApolloServer를 사용함(HTTP POST 메소드 사용). 리턴은 JSON 형식이 기본. - 왜 GraphQL을 만들었을까? Over-fetching, Under-fetching 문제를 해결하기 위해 탄생. Over-fetching: 쇼핑몰 메인화면에서 상품 정보는 상품 이름, 가격, 이미지 링크 정보만 필요하지만 RestAPI에서 상품의 모든 정보를 가져오고, 프론트 화면에서 필요한 정보만 보여줄 경우. Under-fetching: 장바구니 화면에서 사용자 정보와 상품 정보를 ..