본문 바로가기

Log

Datadog Log Archives S3와 Amazon Athena 활용

Datadog Log Management란?

Datadog Log Management

 

Datadog Log Management는 로그 수집, 처리, 분석을 통합적으로 관리하는 플랫폼입니다. 다양한 소스에서 로그를 수집해 중앙에서 실시간으로 모니터링할 수 있으며, 로그 데이터를 필터링하고 쿼리로 분석하여 애플리케이션과 인프라 상태를 파악합니다. 로그 리텐션 설정을 통해 비용 효율성을 높일 수 있고, 알림 설정을 통해 중요한 이벤트를 실시간으로 감지할 수 있습니다. 이를 통해 DevOps와 보안 팀은 문제를 신속하게 진단하고 대응할 수 있습니다.

 

하지만 기본적으로 Datadog Log Management의 로그는 기본적으로 15일 동안만 보관 가능합니다.

따라서 15일이 지난 로그에 대한 저장이 필요한데, Datadog에서는 AWS S3로 쉽게 아카이빙이 가능합니다.

 

Log Archives > Amazon S3

1. Datadog >  Logs > Log Forwarding

 

2. Add an archive > Amazon S3 선택(AWS 통합에 S3 read/write 권한 필요)

 

 

그럼 쉽게 Datadog UI 상에서 Amazon S3에 로그들이 아카이빙이 됩니다.

약 15분 정도 지나면 Log들에 S3에 gz 형태로 저장되게 됩니다.

실제 Attribute와 Message만 계산하면 로그 하나의 크기는 약 250Byte 입니다.

그러나 Archiving 시에는 모든 태그 정보들도 같이 가져와서 gz 압축 기준 약 1.5KB가 됩니다. 태그는 아카이브 시 "Archive logs with their tags" 옵션을 통해 제외할 수 있습니다. 

{"date":"2022-09-06T08:20:16.000Z","service":"agent","host":"i-0cb46a0be165eee10","attributes":{"agent":"PROCESS","process":"logCheckDuration","filename":"collector.go","lineno":202.0,"level":"INFO","timestamp":1662452416000},"_id":"AYMR4sHBAADVWXzyJTYPRwAI","source":"agent","message":"2022-09-06 08:20:16 UTC | PROCESS | INFO | (collector.go:202 in logCheckDuration) | Finish pod check #59180 in 3.326592ms","status":"info","tags":["image_id:docker-pullable://gcr.io/datadoghq/agent@sha256:0e31fa27eafec6d4d354a9a5f2c9dcfe073fb316c5bebaa15519f7b1e9f7ba14","display_container_name:process-agent_datadog-monitoring-qvpb8","dirname:/var/log/pods/datadog-agent_datadog-monitoring-qvpb8_371382c3-d95e-4b3a-abec-9a19024ff3ea/process-agent","kube_container_name:process-agent","kube_app_component:agent","kube_app_name:datadog-monitoring","pod_phase:running","source:agent","kube_daemon_set:datadog-monitoring","image_name:gcr.io/datadoghq/agent","kube_ownerref_kind:daemonset","docker_image:gcr.io/datadoghq/agent:7.35.0","container_name:process-agent","short_image:agent","container_id:89281e425b0f796202d7c5f10b9139220036363f712a1d29fb68727504712a2e","kube_namespace:datadog-agent","kube_app_instance:datadog-monitoring","pod_name:datadog-monitoring-qvpb8","image_tag:7.35.0","kube_service:datadog-monitoring","kube_app_managed_by:helm","filename:0.log","kube_ownerref_name:datadog-monitoring","service:agent","alpha.eksctl.io/nodegroup-name:ng-fdab268d","alpha.eksctl.io/nodegroup-type:managed","availability-zone:ap-northeast-2b","aws_account:601427279990","aws_autoscaling_groupname:eks-ng-fdab268d-28c174ec-dd3e-9509-e425-4d1cb19083e5","aws_ec2_fleet-id:fleet-538494a4-173f-c33c-0692-0eaa000af1dd","aws_ec2launchtemplate_id:lt-0f070cdaa539e6dcd","aws_ec2launchtemplate_version:1","aws_eks_cluster-name:hyunjin-eks","cluster_name:aws-isv-workshop","eks_cluster-name:hyunjin-eks","eks_nodegroup-name:ng-fdab268d","iam_profile:eks-28c174ec-dd3e-9509-e425-4d1cb19083e5","image:ami-03f5c5b7ba2015719","instance-type:m5.large","k8s.io/cluster-autoscaler/enabled:true","k8s.io/cluster-autoscaler/hyunjin-eks:owned","kernel:none","kube_cluster_name:aws-isv-workshop","kubernetes.io/cluster/hyunjin-eks:owned","name:hyunjin-eks-ng-fdab268d-node","region:ap-northeast-2","security-group:sg-00d534ded59f816e1"]}

 

 

로그를 아카이브 하면 설정한 S3 내에 dt=20220906/hour=08/ 형식으로 로그가 저장됩니다.

 

 

저장된 로그들은 Datadog Log Management의 Rehydrate From Archive를 통해 다시 Datadog으로 보낼 수도 있지만, Amazon Athena를 통해 바로 쿼리를 수행하고 로그를 분석할 수 있습니다.

 

Amazon Athena란?

Amazon Athena는 S3에 저장된 데이터를 표준 SQL을 사용해 간편하게 분석할 수 있는 서버리스 쿼리 서비스입니다. 인프라 관리 없이 즉시 쿼리를 실행할 수 있으며, 사용한 만큼만 비용이 청구됩니다. Athena는 다양한 데이터 형식(CSV, JSON, Parquet 등)을 지원하며, 로그 분석, 데이터 레이크 쿼리, BI 리포팅 등 다양한 활용 사례에 적합합니다. 또한, AWS Glue 데이터 카탈로그와 통합되어 메타데이터 관리와 스키마 자동 탐지가 가능합니다.

 

Datadog에서 Amazon S3에 저장된 로그들의 포맷이 JSON 형태로 저장되기 때문에 바로 Amazon Athena 사용이 가능합니다.

 

그럼 Datadog에서 아카이브 된 로그들을 분석하기 위해 아래와 같이 로그에 대한 Database를 생성합니다.

CREATE EXTERNAL TABLE IF NOT EXISTS `datadog_agent_logs` (
  date string,
  service string,
  host string,
  attributes string,
  source string,
  message string,
  status string,
  tags string
  )
ROW FORMAT SERDE
    'org.openx.data.jsonserde.JsonSerDe'
LOCATION 's3://hj-log-archiving/datadog/agent/logs'
TBLPROPERTIES (
  'compressionType' = 'gzip'
  );

 

그리고 실제로 쿼리를 수행합니다.

select * from default.datadog_agent_logs

 

그럼 해당 쿼리에 대한 결과 값을 확인할 수 있습니다.

 

 

위와 같은 프로세스를 통해 Datadog에 쌓인 로그들을 Amazon S3에 아카이빙 하고 Athena를 통해 쉽게 분석이 가능합니다.