Python

52 개의 포스트

datadog원문

해커톤 프로젝트: 마인크래프트에서 Datadog 메트릭 보기 (새 탭에서 열림)

Datadog의 엔지니어들은 사내 해커톤을 통해 시스템 모니터링 대시보드를 마인크래프트 게임 내부에서 구현하는 실험적인 프로젝트를 진행했습니다. 파이썬과 Datadog API를 활용해 실시간 인프라 메트릭을 게임 내 블록 형태로 시각화했으며, 이를 통해 온콜(on-call) 업무 중인 엔지니어가 게임을 즐기면서도 시스템 상태를 직관적으로 확인할 수 있는 환경을 구축했습니다. 이 프로젝트는 기술적인 재미와 더불어 대용량 데이터를 게임 환경에 효율적으로 렌더링하기 위한 성능 최적화 과정을 잘 보여줍니다. ### 마인크래프트 제어와 데이터 연동 * 파이썬의 익숙함과 풍부한 라이브러리를 활용하기 위해 `py3minepi`와 Raspberry Juice API를 사용하여 마인크래프트 환경을 제어했습니다. * `mc.setBlock(x, y, z, block_id)`와 같은 간단한 함수 호출을 통해 게임 내 특정 좌표에 블록을 생성하거나 제거하며 시각화의 기초를 마련했습니다. * Datadog 파이썬 라이브러리를 통해 API 및 애플리케이션 키로 인증한 뒤, `Metric.query` 기능을 사용하여 CPU 사용량과 같은 실시간 데이터를 스트리밍했습니다. ### 설정 기반의 대시보드 및 모니터 구현 * 그래프의 위치, 크기, 방향, 색상 및 투명도와 같은 시각적 요소를 코드와 분리하기 위해 YAML 설정 파일을 도입했습니다. * 실시간 데이터를 기반으로 모니터링 상태를 반영하여, 시스템에 경고가 발생하면 빨간색 블록이 켜지고 정상 상태가 되면 초록색으로 돌아오는 시각적 알람 기능을 구현했습니다. * 단순한 그래프를 넘어 여러 메트릭을 동시에 확인할 수 있는 복합 대시보드 레이아웃을 구성하여 게임 내에서도 실제 모니터링 도구와 유사한 경험을 제공했습니다. ### 영속성 관리와 성능 최적화 과제 * **블록 영속성 문제:** 마인크래프트 블록은 한 번 생성되면 계속 유지되므로, 데이터가 갱신될 때마다 이전 블록을 지워주는 '진공(vacuum)' 함수를 작성하여 화면을 정제했습니다. * **대역폭 및 렌더링 최적화:** 웹 기반의 대시보드와 달리 JS나 CSS를 사용할 수 없으므로 데이터를 행 단위로 단순화하여 시각화했습니다. * **캐싱 도입:** 대규모 그래프를 출력할 때 데이터 파이프라인에 과부하가 걸리는 문제를 해결하기 위해, 실제 업무에서 사용하는 것과 유사한 캐싱 메커니즘을 적용하여 성능을 개선했습니다. 이 프로젝트는 엔지니어링의 본질적인 즐거움인 '해킹'을 통해 익숙한 도구를 전혀 새로운 환경에 이식한 사례입니다. 단순히 재미를 넘어 실시간 데이터 처리와 렌더링 최적화라는 기술적 도전을 담고 있으며, 관련 소스 코드는 GitHub에 공개되어 있어 누구나 자신의 메트릭을 마인크래프트 세상에 구현해 볼 수 있습니다.

datadog3분 읽기큐레이션 요약

Python에서 Protobuf 파싱하기

Datadog이 Gartner의 2026년 Observability Platforms Magic Quadrant에서 Leader로 선정되었다는 내용이 중심입니다. Datadog은 인프라·애플리케이션·로그·보안·디지털 경험·소프트웨어 배포·AI까지 폭넓은 기능을 하나의 관측성 플랫폼으로 제공한다고 소개합니다. 다만 제공된 본문에는 선정 근거와 평가 세부 내용보다 제품 메뉴와 링크 목록이 대부분 포함되어 있습니다. ## Gartner Magic Quadrant 리더 선정 - Datadog이 Gartner의 **Observability Platforms 부문 Leader**로 이름을 올렸다는 발표입니다. - 링크에는 2026년 Gartner Magic Quadrant 보고서 자료로 연결되는 리소스가 포함되어 있습니다. - 제공된 내용만으로는 Gartner가 평가한 구체적인 점수, 경쟁사 비교, 선정 기준은 확인할 수 없습니다. ## 통합 인프라 모니터링 - 인프라 영역에서 다음 기능을 제공합니다. - 호스트 및 인프라 모니터링 - 메트릭 수집·분석 - 컨테이너와 Kubernetes 모니터링 - 네트워크 및 서버리스 모니터링 - 클라우드 비용, 스토리지, GPU 모니터링 - Kubernetes 오토스케일링과 Cloudcraft를 통해 운영 상태뿐 아니라 클라우드 구조와 비용까지 관리할 수 있도록 구성되어 있습니다. ## 애플리케이션 성능 관찰 - 애플리케이션 영역에는 다음 기능이 포함됩니다. - APM(Application Performance Monitoring) - 서비스 간 의존성 및 범용 서비스 모니터링 - 지속적 프로파일링 - 동적 계측 - AI 에이전트 관측성 - 애플리케이션 추적, 성능 병목 분석, 코드 수준 프로파일링을 하나의 플랫폼에서 수행하는 방향을 제시합니다. ## 로그·데이터 관측성과 보안 - 로그 관리, 민감 데이터 탐지, 감사 추적, Observability Pipelines를 제공합니다. - 데이터베이스, 데이터 스트림, 데이터 품질, 배치 작업도 관찰할 수 있습니다. - 보안 영역에서는 다음 기능을 폭넓게 포함합니다. - 코드 보안 및 SAST - 소프트웨어 구성 분석과 취약점 관리 - 클라우드 보안 형상 관리 - Cloud SIEM - 워크로드 및 애플리케이션·API 보호 - 비밀정보 탐지와 컴플라이언스 ## 디지털 경험과 소프트웨어 전달 - 브라우저·모바일 RUM, 세션 리플레이, 신세틱 모니터링으로 사용자 경험을 측정합니다. - 에러 추적, 제품 분석, 실험 기능을 통해 사용자 행동과 애플리케이션 오류를 함께 분석할 수 있습니다. - CI Visibility, 테스트 최적화, 지속적 테스트, 코드 커버리지, 기능 플래그 등 소프트웨어 개발·배포 과정도 관측 대상에 포함합니다. ## AI 기반 운영과 서비스 관리 - Bits AI Agents, Bits Chat, Bits Investigation 등 AI 기반 조사·자동화 기능을 제공합니다. - GPU 모니터링과 AI 에이전트 관측성을 통해 AI 인프라 및 AI 애플리케이션 운영을 지원합니다. - 이벤트 관리, 인시던트 대응, SLO, 워크플로 자동화, 서비스 카탈로그 등의 기능으로 장애 대응과 운영 프로세스를 연결합니다. - 대시보드, 알림, 노트북, 접근 제어, 거버넌스 콘솔을 통해 플랫폼 전반의 운영 관리도 지원합니다. ## 참고할 점 - 제공된 자료에는 제목과 Datadog 제품 카테고리 목록이 주로 담겨 있으며, 본문 기술 내용이나 Gartner 평가의 상세 근거는 포함되어 있지 않습니다. - URL 경로에 `protobuf-parsing-in-python`이 포함되어 있지만, 해당 Python Protocol Buffers 파싱 글의 본문은 제공되지 않아 기술적 내용은 요약할 수 없습니다. 실제로 도입을 검토한다면 Gartner 보고서 원문에서 평가 기준과 경쟁 제품 비교를 확인하고, Datadog의 수집 비용·데이터 보존 정책·기존 OpenTelemetry 및 로그 파이프라인과의 통합성을 함께 검증하는 것이 좋습니다.

원문 읽기(새 탭에서 열림)
datadog원문

Python에서 Protobuf 파싱하기 (새 탭에서 열림)

Datadog은 Kubernetes 메트릭 수집 효율을 높이기 위해 kube-state-metrics의 프로토콜 버퍼(Protobuf) 지원 기능을 도입하고 그 성능을 검증했습니다. 이 글은 텍스트 형식 대비 Protobuf의 효율성을 정량적으로 확인하기 위한 과정과, 특히 파이썬 환경에서 다중 메시지 스트리밍을 처리하는 구체적인 기술적 구현 방법을 다룹니다. 결론적으로 대규모 데이터 통신에서 이진 포맷이 제공하는 속도와 자원 효율성 이점을 실무에 어떻게 적용할 수 있는지에 대한 가이드를 제공합니다. ## 프로토콜 버퍼의 기초와 데이터 직렬화 * 프로토콜 버퍼(Protobuf)는 구조화된 데이터를 빠르고 효율적으로 이진 스트림으로 직렬화하는 방식으로, 머신 간 통신 및 RPC(원격 프로시저 호출)에 최적화되어 있습니다. * 데이터의 구조를 정의하는 `.proto` 파일을 작성한 후, `protoc` 컴파일러를 통해 파이썬 등 다양한 언어에 맞는 소스 코드를 생성하여 사용할 수 있습니다. * 텍스트 기반 형식과 달리 엄격한 타입 정의를 통해 데이터의 일관성을 보장하며, 페이로드 크기를 획기적으로 줄여 HTTP API 성능을 개선합니다. ## 다중 메시지 스트리밍의 기술적 과제 * Protobuf는 자체 구분자(Self-delimiting)가 없는 설계 특성상, 여러 개의 메시지를 하나의 파일이나 소켓 스트림에 연속적으로 담을 때 각 메시지의 경계를 식별하기 어렵습니다. * 이 문제를 해결하기 위해 각 메시지를 직렬화하기 전, 해당 메시지의 크기(Size) 정보를 머리말(Prefix)로 추가하는 방식이 권장됩니다. * Java 구현체는 `parseDelimitedFrom`과 같은 내장 메서드를 통해 이를 지원하지만, 파이썬 표준 라이브러리는 이러한 기능을 기본적으로 제공하지 않아 별도의 구현이 필요합니다. ## 파이썬에서의 Varint 기반 스트리밍 구현 * 메시지 크기를 기록할 때는 작은 정수에 더 적은 바이트를 사용하는 가변 길이 정수 인코딩 방식인 'Varint'를 사용하며, 이는 효율적인 이진 통신을 가능하게 합니다. * 파이썬에서는 `google.protobuf.internal` 패키지에 포함된 내부 함수인 `_VarintBytes`(인코딩용)와 `_DecodeVarint32`(디코딩용)를 활용하여 Java와 호환되는 스트리밍 구조를 만들 수 있습니다. * 직렬화 시에는 메시지의 `ByteSize()`를 측정해 Varint로 먼저 쓰고 데이터를 기록하며, 역직렬화 시에는 버퍼에서 Varint를 읽어 메시지 길이를 파악한 후 해당 바이트만큼 데이터를 추출하여 파싱합니다. 데이터 전송 효율이 중요한 대규모 Kubernetes 모니터링 환경에서는 텍스트 포맷보다 Protobuf를 사용하는 것이 성능상 매우 유리합니다. 특히 파이썬 환경에서 다수의 메트릭을 스트리밍할 때는 표준 라이브러리 내부의 Varint 유틸리티를 활용하여 데이터 경계를 구분함으로써, Java 시스템과 완벽히 호환되면서도 고성능인 데이터 처리 파이프라인을 구축할 것을 권장합니다.

datadog원문

마운트의 문제점 (새 탭에서 열림)

데이터독(Datadog) 에이전트가 특정 환경에서 응답을 멈추고 종료조차 되지 않는 문제는 NFS(Network File System)의 '하드 마운트' 속성과 시스템 콜의 작동 방식 때문에 발생했습니다. 하드 마운트된 NFS 서버와의 연결이 끊기면 디스크 정보를 확인하는 `statvfs` 시스템 콜이 무한 대기에 빠지며, 이는 결과적으로 에이전트 전체의 중단으로 이어졌습니다. 이를 해결하기 위해 데이터독은 디스크 체크 로직을 별도 스레드로 분리하고 타임아웃을 적용함으로써, 고객사의 시스템 설정에 관계없이 에이전트의 가용성을 확보하는 설계를 도입했습니다. **에이전트 정지 현상과 원인 분석** * 일부 시스템에서 모든 메트릭 수집이 중단되고 에이전트가 '종료 불가능한(unkillable)' 상태로 멈추는 버그가 보고되었습니다. * 조사 결과, 에이전트는 항상 디스크 체크 과정에서 멈췄으며 구체적으로 파이썬의 `os.statvfs` 함수 호출 시점에서 병목이 발생했습니다. * `os.statvfs`는 내부적으로 glibc의 `statvfs` 시스템 콜을 호출하는데, 이는 리눅스 환경에서 파일 시스템의 상태 정보를 가져오는 표준적인 방법입니다. **NFS 하드 마운트와 시스템 콜의 무한 대기** * NFS를 '하드 마운트(hard mount)' 옵션으로 연결하면, 서버가 응답하지 않을 때 시스템 콜이 타임아웃 없이 성공할 때까지 영구적으로 재시도합니다. * 하드 마운트는 데이터의 일관성을 보장하지만 네트워크 불안정 시 해당 마운트 지점에 접근하는 프로세스를 '좀비' 상태로 만들 수 있으며, 이는 NFS의 기본 설정이기도 합니다. * 특히 glibc의 `statvfs` 구현체는 정보를 찾기 위해 `/proc/mounts`에 나열된 모든 디렉토리를 순회하므로, 현재 조사하려는 대상이 아닌 다른 NFS 마운트에 문제가 생겨도 시스템 전체가 멈추는 현상이 발생합니다. **별도 스레드 및 타임아웃 도입을 통한 해결** * 데이터독 에이전트는 고객이 설정한 마운트 옵션을 강제로 변경할 수 없으므로, 어떤 환경에서도 정상 동작할 수 있는 방어적인 코드가 필요했습니다. * 문제를 해결하기 위해 `statvfs` 호출을 별도의 스레드에서 실행하도록 구조를 변경하고, 메인 스레드에는 타임아웃 로직을 추가했습니다. * 만약 특정 마운트 지점에서 시스템 콜이 응답하지 않더라도, 메인 스레드는 지정된 시간 이후 작업을 포기하고 다음 메트릭 수집으로 넘어감으로써 에이전트의 전체 성능을 보존합니다. * 이 방식은 하드 마운트가 활성화된 시스템에서 약간의 메모리 사용량 증가를 야기하지만, 다양한 이질적 환경에서 모니터링 연속성을 보장하기 위한 필수적인 트레이드오프(Trade-off)로 채택되었습니다. 서버 환경에서 NFS를 운용할 때는 `soft` 마운트 옵션이나 `intr(interruptible)` 옵션을 검토하여 시스템 콜이 무한 대기에 빠지는 상황을 예방해야 합니다. 또한, 모니터링 도구와 같이 외부 환경에 민감한 애플리케이션을 개발할 때는 외부 시스템 콜(I/O) 작업을 반드시 별도 스레드로 격리하고 엄격한 타임아웃을 적용하는 설계가 중요합니다.

datadog원문

동료들을 응원하기: Datadog 대시보드로 조직 문화 만들기 (새 탭에서 열림)

6일 동안 850km를 달리는 동료의 도전을 응원하기 위해, 실시간 레이스 데이터를 수집하고 Datadog 대시보드로 시각화한 프로젝트 사례를 소개합니다. 파이썬을 활용한 웹 스크래핑과 Datadog의 메트릭 전송 기능을 결합하여, 멀리 떨어진 사무실에서도 실시간으로 선수의 순위와 주행 거리를 확인할 수 있는 모니터링 환경을 구축했습니다. ### 웹 스크래핑을 통한 데이터 추출 * 레이스 이벤트 웹사이트에서 일반 HTML 형태로 제공되는 주자들의 통계 데이터를 소스로 활용했습니다. * Python의 **Requests** 라이브러리를 사용하여 웹페이지의 HTML 코드를 가져오는 크롤러를 구현했습니다. * 가져온 HTML 데이터에서 실시간 순위, 총 주행 거리 등의 핵심 정보를 추출하기 위해 **BeautifulSoup** 라이브러리를 사용해 파싱 작업을 수행했습니다. ### StatsD를 활용한 메트릭 전송 * 추출한 데이터를 Datadog 에이전트와 **StatsD**를 통해 시스템으로 전송했습니다. * 선수의 주행 거리(`runner.distance`), 현재 순위(`runner.ranking`), 경과 시간(`runner.elapsed_time`)을 각각 **Gauge** 타입의 메트릭으로 정의했습니다. * 각 메트릭에 주자의 이름을 태그(`tags=["name:%s"]`)로 추가하여, 대시보드에서 특정 주자의 데이터를 쉽게 필터링하고 구분할 수 있도록 구성했습니다. ### 대시보드 시각화 및 결과 * 수집된 메트릭을 기반으로 실시간 영상 스트리밍과 재미를 위한 GIF 파일, 그리고 주요 지표들이 포함된 종합 대시보드를 제작했습니다. * 뉴욕과 파리 사무실 곳곳에 이 대시보드를 공유하여, 전 직원이 실시간으로 레이스 상황을 지켜보며 동료를 원격으로 응원할 수 있는 환경을 만들었습니다. 이 사례는 IT 인프라뿐만 아니라 외부의 실시간 데이터를 Datadog과 연결하여 조직 내 이벤트를 흥미롭게 공유하고 구성원들의 참여를 끌어낼 수 있음을 잘 보여줍니다. 데이터 수집부터 시각화까지의 과정이 비교적 간단하므로, 조직 내 다양한 온/오프라인 이벤트를 추적하는 데 응용해 볼 것을 추천합니다.

datadog원문

동료 응원하기: Dat (새 탭에서 열림)

데이터독(Datadog)의 엔지니어들은 6일 동안 약 850km를 달리는 초장거리 레이스에 출전한 동료를 응원하기 위해 실시간 레이스 모니터링 대시보드를 구축했습니다. 이 프로젝트는 웹 스크래핑 기술과 데이터독의 지표 수집 기능을 결합하여 외부 데이터를 대시보드에 시각화하는 과정을 보여줍니다. 이를 통해 기술적인 도구가 단순한 시스템 관제를 넘어 커뮤니티의 결속과 응원을 위한 도구로 어떻게 활용될 수 있는지 증명했습니다. ### 데이터 추출 및 파싱 대시보드 구축의 첫 단계는 대회 공식 웹사이트에서 선수의 실시간 데이터를 가져오는 것이었습니다. - 파이썬(Python)의 인기 라이브러리인 **Requests**를 사용하여 웹페이지의 HTML 코드를 수집하는 간단한 크롤러를 구현했습니다. - 수집된 HTML 데이터는 **BeautifulSoup** 라이브러리를 통해 파싱되어 현재 순위, 총 주행 거리 등 필요한 수치 데이터로 변환되었습니다. - 대회 사이트가 일반 텍스트 형태의 HTML로 데이터를 제공했기에 복잡한 API 없이도 손쉽게 데이터를 확보할 수 있었습니다. ### StatsD를 활용한 지표 전송 확보된 데이터는 데이터독 에이전트와 StatsD를 통해 실시간 지표(Metrics)로 변환되었습니다. - **dog.gauge** 메서드를 사용하여 세 가지 핵심 지표를 생성했습니다: 주행 거리(`runner.distance`), 현재 순위(`runner.ranking`), 경과 시간(`runner.elapsed_time`). - 각 지표에는 `name` 태그를 부여하여 여러 러너의 데이터를 구분하고 개별적으로 필터링할 수 있도록 설계했습니다. - 파이썬 스크립트를 통해 주기적으로 데이터를 갱신함으로써 실시간에 가까운 데이터 흐름을 유지했습니다. ### 대시보드 구성 및 시각화 수집된 지표들은 뉴욕과 파리 사무실에서 누구나 볼 수 있는 인터랙티브 대시보드로 구성되었습니다. - 단순히 숫자만 나열하는 것이 아니라 실시간 비디오 스트리밍과 재미를 위한 GIF 이미지를 포함하여 시각적 즐거움을 더했습니다. - 거리 차이(Lead)와 남은 시간 등 레이스 상황을 한눈에 파악할 수 있는 유의미한 지표들을 배치했습니다. - 이를 통해 전 세계 사무실의 동료들이 원격으로 레이스 상황을 공유하며 선수를 응원할 수 있는 환경을 조성했습니다. 만약 특정 이벤트나 실시간 경주 데이터를 모니터링하고 싶다면, 이 사례와 같이 파이썬의 웹 스크래핑 라이브러리와 데이터독의 Gauge 지표 기능을 결합해 보시기 바랍니다. 데이터가 HTML 형태로 존재하기만 한다면, 어떤 외부 활동이라도 전문적인 인프라 모니터링 도구를 통해 실시간 대시보드로 구현할 수 있습니다.

datadog원문

화장실 꿀팁 (새 탭에서 열림)

데이터독(Datadog)은 사무실 인원 증가로 인해 발생하는 화장실 대기 문제를 해결하고자 IoT 기술을 활용한 실시간 화장실 점유 모니터링 시스템을 구축했습니다. 이들은 프라이버시 보호를 위해 카메라 대신 도어락 상태를 감지하는 센서를 사용했으며, 수집된 데이터를 사내 대시보드와 연동하여 실무적인 편의성을 높였습니다. 이 프로젝트는 라즈베리 파이와 표준 유닉스 도구, 간단한 센서의 조합만으로도 일상의 물리적인 문제를 효율적으로 해결할 수 있음을 보여줍니다. **하드웨어 구성 및 현장 맞춤형 센서 적용** * 두뇌 역할을 하는 기기로 라즈베리 파이 2 모델 B를 채택하여 리눅스 환경에서 SSH와 WiFi를 통해 기기를 쉽게 관리할 수 있도록 했습니다. * 문의 형태에 따라 서로 다른 센서를 적용했습니다. 일반적인 버튼식 잠금장치에는 자석 리드 스위치(Magnetic reed switch)를, 슬라이드 방식의 칸막이 문에는 자동차 도어용 핀 스위치를 활용했습니다. * 전원 콘센트가 없는 위치나 WiFi 신호가 약한 콘크리트 벽 등 열악한 환경 조건에 맞춰 배선을 몰딩 처리하고 출력 박스 안에 기기를 매립하여 전문적인 외관을 유지했습니다. **소프트웨어 구현 및 시스템 통합** * 라즈베리 파이의 GPIO 핀을 `/sys/class/gpio/` 경로의 파일 시스템으로 제어하여 센서 상태를 읽어오는 파이썬 스크립트를 작성했습니다. * 작성된 스크립트는 `daemontools`와 `tcpserver`를 통해 안정적으로 실행되며 네트워크를 통해 상태 정보를 제공합니다. * 모든 소프트웨어 설정과 코드는 오픈소스로 공개되어 누구나 유사한 시스템을 구축할 수 있도록 지원합니다. **데이터 시각화 및 실제 활용** * 직원들은 터미널에서 `netcat(nc)` 명령어를 사용하여 즉시 화장실 가용 여부를 확인할 수 있습니다. * 맥 OS의 TextBar나 사무실 곳곳에 배치된 데이터독 대시보드 위젯에 실시간 상태를 표시하여 접근성을 극대화했습니다. * 복잡한 코드 작성보다는 적절한 센서 선정과 깔끔한 물리적 설치, 안정적인 네트워크 확보에 집중하여 실용적인 MVP(최소 기능 제품)를 완성했습니다. **결론** 임베디드 하드웨어와 유닉스 도구를 적절히 조합하면 최소한의 개발 비용으로 강력한 효과를 낼 수 있습니다. 하드웨어 프로젝트에서는 코드 작성 그 자체보다 물리적인 설치 환경에 대한 고려와 적합한 센서 선택이 성공의 핵심입니다. 이를 위해 사내의 '메이커' 문화를 장려하고 일상의 작은 불편함을 기술로 해결해보는 시도가 조직의 창의성을 높이는 데 큰 도움이 될 것입니다.