본문으로 건너뛰기
목차

promkr 뉴스레터 2026년 6월호

원문 정보

이 호에 실린 소식 9개의 원문을 읽고 요약했습니다. 뉴스레터 설명이 아니라 링크가 가리키는 글의 내용을 기준으로 썼습니다. 한 해 전체의 흐름은 2026년 소식에 있습니다.

1. Mimir 쓰기 경로와 AutoMQ의 객체 스토리지 설계

원문: Why AutoMQ Is the Best Choice for Grafana Mimir · AutoMQ Team · 2026-06-03

AutoMQ Team은 Mimir 3.0의 권장 ingest storage 구성에 AutoMQ를 쓰자는 제안을 설명합니다. 기존 Mimir에서는 ingester가 새 샘플을 받고 최근 데이터 조회도 처리했습니다. 무거운 쿼리가 ingester를 포화시키면 쓰기 경로까지 영향을 받는 문제가 있었습니다. 새 구성은 Kafka를 쓰기 확정 경계로 삼아 이 결합을 줄입니다.

Distributor는 요청을 Kafka 토픽 파티션에 나누어 기록합니다. Kafka가 데이터의 내구성을 확인하면 Mimir가 클라이언트에 쓰기 성공을 응답하고, ingester는 이후 파티션에서 샘플을 읽어 조회에 제공합니다. 쓰기 경로는 ingester의 쿼럼 참여를 기다리지 않습니다. 저자는 이 변화로 Kafka의 저장 방식과 확장 동작이 전체 수집 파이프라인의 운영 조건이 된다고 설명합니다. API 연결 여부뿐 아니라 브로커 교체, 파티션 배치, 가용 영역 간 트래픽 비용까지 판단해야 한다는 주장입니다.

AutoMQ는 Kafka 프로토콜과 연산 계층을 유지하면서 영속 데이터를 브로커 로컬 디스크에서 공유 객체 스토리지로 옮깁니다. AutoMQ Team은 이를 100% Kafka API·프로토콜 호환의 Diskless Kafka로 소개합니다. 브로커 확장 시 대량의 파티션 데이터를 복사하는 대신 소유권과 트래픽을 조정하며, 브로커 교체도 로컬 데이터 복구에 덜 의존한다고 밝힙니다. 객체 스토리지는 로컬 복제본 중심의 저장·복제 비용 구성을 바꾸는 요소로 제시됩니다.

Kubernetes 운영에는 Strimzi를 지원하고, AutoMQ Open Source는 Apache 2.0 라이선스로 제공합니다. 글은 Mimir의 읽기·쓰기 분리와 AutoMQ의 연산·영속 데이터 분리가 맞물린다는 점을 선택 근거로 삼습니다. 가용 영역 간 비용과 운영 부담을 줄일 수 있다는 설명은 AutoMQ 측의 설계상 주장으로, 본문에 Mimir 조합의 비용 절감률이나 비교 측정치는 제시되지 않았습니다.

2. Toto 2.0의 모델 규모별 예측 성능과 장기 예측 한계

원문: Toto 2.0: Time series forecasting enters the scaling era · Datadog · 2026-05-14

Datadog은 시계열 예측 모델 Toto 2.0을 4m, 22m, 313m, 1B, 2.5B 파라미터 규모로 공개했습니다. 모델 가중치와 분산 u-μP 학습 라이브러리 dd_unit_scaling은 Apache 2.0 라이선스를 따릅니다. 연구 목표는 시계열 파운데이션 모델도 규모를 키우면 예측 성능이 개선되는지 확인하는 것입니다. 사전학습에는 관측성 데이터와 합성 데이터를 사용했으며, 공개 예측 데이터는 포함하지 않았습니다.

Datadog의 평가에서 Toto 2.0은 관측성 벤치마크 BOOM, 범용 GIFT-Eval, 테스트 데이터 오염을 줄이도록 구성한 TIME에서 상위 성적을 냈습니다. BOOM에서는 모든 크기가 비교 대상 파운데이션 모델보다 앞섰고, 22m 모델은 약 7배 적은 파라미터로 Toto 1.0과 같거나 나은 성능을 보였습니다. 97개 데이터셋을 포함한 GIFT-Eval에서는 큰 모델일수록 순위 지표가 개선됐습니다. TIME에서는 2.5B가 모든 지표에서 가장 좋았지만, 313m이 1B보다 조금 앞서는 예외가 있었습니다. GIFT-Eval 학습 분할을 이용한 앙상블과 미세조정 2.5B 모델은 전체 리더보드에서 각각 1위와 2위를 차지했습니다.

추론 속도 개선에는 contiguous patch masking이 쓰였습니다. 1,024단계 예측에 Toto 1.0은 최대 16회의 순차 자기회귀 단계가 필요했지만, Toto 2.0의 single-pass 모드는 한 번의 순전파로 전체 구간을 예측합니다. Block decoding은 앞 구간의 중앙값을 다음 구간의 조건으로 사용하고 KV 캐시를 활용합니다. 이 방식은 더 느리지만 긴 예측 구간의 드리프트를 줄이며, 같은 체크포인트로 모드를 선택할 수 있습니다.

장기 안정성 실험은 합성 다중 주기 신호를 2,048·4,096·8,192 타임스텝까지 예측하는 조건에서 수행했습니다. 학습 문맥 길이는 4,096단계였습니다. 작은 모델은 예측 구간이 길어지면서 패턴을 잃었고, 1B와 2.5B는 더 오래 패턴을 유지했습니다. Datadog은 2.5B도 8,192단계에서 일부 형태를 잃으며, 시험한 어떤 크기도 그 너머의 문제를 완전히 없애지 못했다고 밝힙니다. Datadog은 단순 신호를 깔끔하게 외삽하고 예측 구간이 길어져도 불확실성 보정을 안정적으로 유지하는 능력을 여전히 고전적 통계 기법의 장점으로 봅니다.

3. 터미널과 코딩 에이전트를 연결하는 gcx

원문: Get observability in the terminal, for you and your agents, with the gcx CLI tool · Ward Bekker · 2026-04-28

Grafana Labs는 코딩 에이전트가 소스 코드뿐 아니라 실행 중인 시스템의 상태도 읽도록 Grafana Cloud CLI인 gcx를 소개합니다. 글의 출발점은 에이전트가 로컬 코드를 볼 수 있어도 실제 지연 급증이나 SLO 달성 여부는 알지 못한다는 문제입니다. gcx는 Grafana Cloud와 Grafana Assistant를 터미널에 가져옵니다. 최초 글은 퍼블릭 프리뷰 발표이며, 제공된 원문에는 7월 28일 정식 출시됐다는 후속 안내가 추가돼 있습니다.

gcx가 제공하는 작업 범위는 계측부터 알림과 SLO 관리까지 이어집니다. 에이전트는 OpenTelemetry를 코드에 연결하고 메트릭·로그·트레이스가 백엔드에 도착하는지 확인할 수 있습니다. 실제 서비스 신호를 기준으로 알림 규칙과 SLO를 만들고 synthetic probe도 설정합니다. Faro 프런트엔드와 sourcemap 관리, Instrumentation Hub를 이용한 백엔드·Kubernetes 온보딩도 포함됩니다. 대시보드와 알림 등의 설정을 파일로 내려받아 로컬에서 편집한 뒤 다시 올리는 흐름을 지원합니다.

에이전트용 인터페이스는 출력과 오류 처리의 일관성에 초점을 맞춥니다. 명령은 --output으로 JSON이나 YAML을 내보내며, 필드 이름은 버전 사이에 안정적으로 유지하도록 설계했습니다. 종료 코드와 오류 형식도 문서화했습니다. Claude Code나 Cursor의 호출을 감지하면 진행 표시나 출력 잘림을 없애고, GCX_AGENT_MODE=true로 이 동작을 강제할 수 있습니다. 기계가 읽을 수 있는 명령·플래그 목록은 실행 시점의 기능 탐색을 돕고, 파괴적 작업에는 명시적 확인을 요구합니다.

이 인터페이스를 사용하면 에이전트는 지연 원인을 조사할 때 트레이스와 히스토그램을 읽고, PromQL을 실제 메트릭 백엔드에서 실행할 수 있습니다. 알림 조정에는 규칙과 발화 이력, 관련 대시보드를 함께 참고합니다. Grafana Labs는 반복 작업을 위한 이식 가능한 에이전트 스킬도 제공합니다. .agents 규약을 따르는 도구에서 사용할 수 있으며, gcx skills install --all로 설치합니다.

4. 관측성 신호의 분화와 세 기둥 개념의 역사

원문: The Three Pillars of Observability: A History No One Planned · Dennis Zhuang · 2026-06-10

Dennis Zhuang은 메트릭·로그·트레이스가 처음부터 하나의 설계로 나뉜 것이 아니라, 서로 다른 문제를 풀던 집단에서 자라났다고 주장합니다. 글은 주로 2010~2017년의 분화를 다루는 연재 첫 편입니다. 저자는 통합 관측성이 오랫동안 실현하기 어려웠던 이유를 이해하려면 각 신호가 갈라진 기술적·상업적 배경부터 살펴봐야 한다고 설명합니다.

메트릭 계보는 RRDtool, Graphite, SoundCloud의 Prometheus로 이어집니다. 시스템이 건강한지 판단하려는 운영 요구는 시계열 집계와 다운샘플링에 맞는 저장소를 낳았습니다. 로그 검색은 실제로 무슨 일이 일어났는지 찾으려는 요구에서 발전했고, 전문 검색과 임의 필드 필터링에 적합한 역색인을 사용했습니다. 분산 트레이싱은 요청 하나가 여러 서비스를 거치는 경로를 설명해야 했습니다. Google의 Dapper 논문, Twitter의 Zipkin, Uber의 Jaeger는 이 흐름의 사례로 제시됩니다.

저자는 데이터 형태와 쿼리 방식의 차이가 별도 시스템을 만드는 선택을 합리적으로 만들었다고 봅니다. 메트릭은 집계, 로그는 검색, 트레이스는 ID 조회와 스팬 트리 탐색에 최적화해야 했기 때문입니다. 여기에 공급업체의 사업 영역과 구매 조직의 예산 분리가 더해졌다는 해석입니다. Splunk의 로그 검색, Datadog의 인프라 모니터링, New Relic의 APM이라는 출발점과 고객 내부의 인프라·개발·보안 조직 구분이 기존 경계를 굳혔다고 주장합니다.

개념의 전환점으로는 Peter Bourgon의 2017년 글과 벤 다이어그램을 짚습니다. Zhuang에 따르면 Bourgon의 목적은 신호 간 경계를 논의할 공통 어휘를 만드는 것이었지만, 이후 업계는 이를 관측성 설계의 청사진처럼 받아들였습니다. Bourgon은 2018년 다시 원시 이벤트를 한곳에서 수집하고 소비 형태에 따라 메트릭·로그·트레이스로 나누는 über-system을 제안했습니다. 글은 경계를 그린 인물이 통합 가능성도 제시했으나, 업계가 앞선 도식에 더 큰 관심을 보였다는 해석으로 끝납니다.

5. Polylane의 장애 탐지와 수정 PR 생성

원문: Fix issues before they become incidents · Polylane

Polylane의 제품 페이지는 애플리케이션의 이상을 탐지하고, 원인을 조사한 뒤 수정 PR을 만드는 흐름을 소개합니다. Polylane은 서비스별 로그·메트릭·트레이스를 주기적으로 읽어 리소스의 평소 동작을 학습하고, 그 패턴에서 벗어나면 문제를 등록한다고 설명합니다. 이미 팀이 차트로 관찰하는 신호를 검사 대상으로 활용한다는 접근입니다.

조사 단계에서는 코드, 배포, 텔레메트리를 함께 읽고 무엇이 왜 고장 났는지 근거와 함께 제시합니다. 페이지의 시연은 결제 경로의 지연을 Hyperdrive 연결 풀 설정과 연결합니다. 수정안에는 max_connections를 5에서 50으로 복원하는 변경, 풀 대기 상황을 잡는 회귀 테스트, 배포 설정 수정이 들어 있습니다. 이 화면은 제품의 조사·수정 흐름을 보여주는 예시이며, 수정 코드는 PR로 제공돼 기존 리뷰와 CI를 거칩니다. 예시 설명에서도 병합 후 배포 명령을 실행해야 수정 버전으로 교체된다고 명시합니다.

제품 범위에는 장애 대응 외에 코드 변경의 영향 분석, CI 실패 수정, 버그 티켓 해결도 포함됩니다. Polylane은 새 SDK나 이전 작업 없이 기존 도구에 연결한다고 안내합니다. AWS, Cloudflare, Kubernetes 같은 실행 플랫폼과 Datadog, Sentry, Grafana Cloud 등의 관측성 서비스가 연동 목록에 있습니다. 코딩 에이전트에는 REST API와 MCP 서버를 제공해 실행 중인 시스템의 문맥을 전달합니다.

고객 효과는 제품 페이지에 실린 증언으로 제시됩니다. Depot의 공동 창업자 겸 CTO는 150,000개 클라우드 리소스를 감시하고 수정 준비 시간의 중앙값이 24분이었으며, 첫 달에 53건을 병합했다고 말합니다. Basedash의 제품 엔지니어는 24일 동안 열린 58건 중 47건을 병합했다고 밝혔습니다. 조사 화면에는 AI가 실수할 수 있으므로 인용한 근거를 다시 확인하라는 안내도 표시돼 있습니다.

6. VictoriaTraces 스팬에서 만드는 메트릭과 알림

원문: VictoriaTraces: Recording Rules, Metrics, and Alerts from Trace Spans · setevoy · 2026-05-22

setevoy는 VictoriaTraces의 Recording Rules로 스팬을 집계해 메트릭과 알림을 만드는 설정을 소개합니다. 기존 ALB·RDS 로그 기반 알림은 지연을 알려줘도 관련 트레이스로 바로 이어지지 않았습니다. 저자는 FastAPI, AWS 호출, SQLAlchemy 계측에서 나온 스팬을 활용해 알림에서 문제의 요청 경로를 찾는 과정을 줄입니다. 목표는 메트릭 생성뿐 아니라 Grafana에서 관련 트레이스를 바로 검색할 수 있는 연결을 만드는 것입니다.

HTTP 5xx 규칙은 http.route가 있고 HTTP 상태 코드가 5xx인 스팬을 고른 뒤 rate()로 초당 요청 수를 계산합니다. Kubernetes namespace, 서비스 이름, 경로, HTTP 상태 코드로 집계하며, 예제의 규칙 그룹 실행 간격은 5분입니다. 지연 규칙은 kind=2인 SERVER 스팬의 duration에서 p95를 구합니다. 나노초 값을 1e9로 나누어 초로 바꾸고, p95가 5초를 넘는 상태가 5분간 이어지면 알림을 발생시킵니다.

AWS 오류는 span_attr:rpc.system이 aws-api이고 OTel 스팬 상태인 status_code가 2인 데이터를 집계합니다. 이 상태 코드는 HTTP 응답 코드와 구분해야 합니다. RDS 쿼리 지연은 scope_name이 opentelemetry.instrumentation.sqlalchemy인 스팬에서 p95를 계산하며, 1초 초과가 1분간 유지되는 조건을 사용합니다. 알림 링크에는 서비스, HTTP 경로 또는 작업 이름을 넣어 Grafana의 VictoriaTraces 검색 결과를 엽니다. trace_id는 카디널리티 증가를 피하려고 메트릭 레이블에 넣지 않습니다.

점과 콜론이 들어간 OTel 레이블은 템플릿에서 index $labels "resource_attr:k8s.namespace.name"처럼 읽습니다. 저자는 백엔드마다 이름이 달라지는 문제를 피하려고 이름 변환을 활성화하지 않았습니다. 이 방식의 한계는 vmalert가 VictoriaTraces에 반복 쿼리를 보내는 부하입니다. 저자는 부하가 큰 서비스에는 otelcol.connector.spanmetrics가 더 적합할 수 있으며, OTel 스택이 없거나 자신의 사례처럼 작은 프로젝트에서 Recording Rules가 쓸 만한 선택이라고 설명합니다.

7. AWS 계정과 리전을 묶는 EKS Dashboard

원문: Centralize visibility of Kubernetes clusters across AWS Regions and accounts with EKS Dashboard · Micah Walter · 2025-05-21

AWS는 여러 계정과 리전에 분산된 Kubernetes 클러스터를 조직 단위로 조회하는 EKS Dashboard를 발표했습니다. 제공된 글의 발표일은 2025년 5월 21일입니다. 클라우드 설계자와 클러스터 관리자가 클러스터 목록, 규정 준수 상태, 버전 업그레이드 계획을 한곳에서 확인하도록 AWS Console에 대시보드를 추가한 내용입니다. AWS는 별도 도구를 사용할 때 필요한 접근 권한 설정과 라이선스·유지보수 부담을 줄이는 기능으로 소개합니다.

조회 대상은 클러스터, managed node group, EKS add-on입니다. 리전·계정·버전·지원 상태별 분포와 클러스터 상태 메트릭을 집계하고, EKS 제어 영역의 연장 지원 예상 비용도 보여줍니다. 특정 데이터 지점을 선택하면 자동 필터링으로 관련 클러스터를 좁힐 수 있습니다. 그래프, 표, 지도 보기와 검색을 제공하며, 추가 분석이나 보고서 작성을 위해 데이터를 내보낼 수 있습니다. 노드 그룹은 인스턴스 유형, 시작 템플릿, AMI 버전 등으로 살펴봅니다.

설정은 AWS Organizations의 관리 계정이나 위임 관리자 계정에서 시작합니다. EKS Console의 조직 설정에서 trusted access를 한 번 활성화하면 관리 계정이 대시보드를 볼 수 있습니다. 연결된 Kubernetes 클러스터도 조회 대상이므로 온프레미스와 다른 클라우드의 클러스터를 포함할 수 있습니다. 연결된 클러스터는 Amazon EKS 클러스터보다 제공되는 데이터가 제한될 수 있다고 AWS가 명시합니다.

발표 당시 EKS Dashboard는 미국 동부 버지니아 북부 리전에서 제공됐으며, 모든 상용 AWS 리전의 데이터를 집계할 수 있었습니다. 대시보드 사용에는 추가 요금이 없다고 안내합니다. 이 글의 기능과 제공 범위는 해당 발표 시점의 설명입니다.

8. 기준선과 추세로 앞당기는 데이터베이스 이상 탐지

원문: Proactive Database Monitoring: Metrics, Alerts, and AI · Parseable

Parseable은 데이터베이스 장애가 쿼리 지연, 연결 수, 캐시 적중률, 잠금 대기 등의 점진적 변화에서 시작된다고 설명합니다. 고정 임계값만 감시하면 성능이 나빠지는 동안 알림이 울리지 않을 수 있습니다. 글은 기존 임계값 알림에 기준선과 추세 감지를 더해 대응 시점을 앞당기는 방법을 제안합니다. 정상 연결 여부를 확인하는 가용성 검사만으로 쿼리 성능과 연결 풀 상태까지 판단할 수 없다는 점도 강조합니다.

관찰 대상에는 읽기·쓰기 지연의 p95와 p99, 처리량, 활성·유휴·거절 연결, 오류, 자원 포화, 잠금과 대기 이벤트가 포함됩니다. DDL이나 인덱스·설정 변경도 성능 변화와 함께 기록하도록 권합니다. 기준선은 최대 부하와 낮은 부하 시간대를 포함한 수 주간의 데이터로 만들고, 요일과 시간대별 평소 동작과 비교합니다. 예시 조건은 전날 같은 시간대보다 p95가 30% 높아지는 경우, 처리량 증가 없이 연결 수가 20분간 늘어나는 경우, 시간별 오류 기준선에서 2표준편차 넘게 벗어나는 경우입니다.

Parseable은 데이터베이스 로그·메트릭·쿼리 이벤트와 애플리케이션 텔레메트리를 같은 백엔드에 저장한다고 설명합니다. OpenTelemetry Collector, FluentBit, Vector 등에서 데이터를 받고 SQL로 서비스별 느린 쿼리, 연결 수 변화, 인스턴스별 오류를 조사합니다. S3 저장 시 최대 90% 압축을 제공한다는 수치는 Parseable 측의 설명입니다. MCP 기반 에이전트는 미리 정의한 쿼리와 앞선 결과에 따라 생성한 쿼리를 실행하며, 지연·연결·잠금 등의 변화를 지속해서 관찰하는 역할로 소개됩니다.

글의 연결 누수 시나리오에서는 45분 동안 풀 사용률이 40%에서 70%, 85%로 상승합니다. 처리량이 늘지 않는데 연결 수와 유휴 연결이 쌓이는 추세를 탐지해 풀이 가득 차기 전에 조사하는 예입니다. 이는 실제 고객 측정이 아닌 설명용 상황입니다. 저자는 추세 알림이 느린 악화를, 임계값 알림이 급격한 실패를 잡으므로 둘 다 필요하다고 명시합니다. 저자는 반응형 알림을 유지하면서 그보다 앞서 문제를 탐지하는 단계를 추가하는 것이 목표라고 설명합니다.

9. Request ID 전파와 Go 미들웨어 구현

원문: Understanding Request ID: Why It’s Essential for Modern APIs · Kittipat.po · 2025-02-24

Kittipat.po는 API 요청에 고유한 Request ID를 부여해 여러 서비스의 로그를 연결하는 방법을 설명합니다. Request ID는 UUID나 다른 고유 문자열 형태이며, 요청이 서비스를 이동할 때 함께 전달됩니다. 같은 ID를 로그와 응답에 남기면 장애가 발생한 위치를 찾거나 사용자가 신고한 요청을 검색하기 쉬워집니다. 저자는 데이터 이동과 접근 활동을 추적하는 감사 용도도 활용 이유로 제시합니다.

글에서 사용하는 관례는 X-Request-ID 헤더입니다. 클라이언트가 ID를 보내면 사용하고, 헤더가 없으면 서버가 새 ID를 만듭니다. 이후 하위 서비스 요청에 같은 ID를 전달하고 응답 헤더에도 포함해 클라이언트가 기록할 수 있도록 합니다. 각 로그에는 request_id 필드를 넣어 서비스가 달라도 같은 요청의 기록을 찾게 합니다. 생성 예제는 github.com/google/uuid를 사용하며, 별도의 Gin 미들웨어 예제는 github.com/rs/xid를 사용합니다.

Gin 미들웨어 코드는 요청 헤더에서 ID를 읽고, 값이 비어 있으면 생성합니다. 선택한 ID를 응답 헤더에 설정한 뒤 context.WithValue로 요청 컨텍스트에 저장하고 다음 핸들러를 실행합니다. 컨텍스트에서 문자열 ID와 존재 여부를 꺼내는 함수도 제시합니다. 이 예제는 요청 처리 중 미들웨어와 핸들러가 같은 식별자를 공유하는 방식을 보여줍니다.

저자의 go-common 라이브러리는 헤더 이름과 ID 생성 함수를 설정할 수 있는 미들웨어를 제공합니다. 글에 명시된 검증 조건은 ID가 비어 있지 않고 길이가 64자를 넘지 않는 것입니다. 값이 없거나 유효하지 않으면 지정한 생성기 또는 기본 생성기로 새 ID를 만듭니다. 응답 헤더와 요청 컨텍스트에 ID를 넣는 동작도 포함됩니다. 앞선 간단한 Gin 예제와 달리 길이 검증과 생성 전략 변경까지 제공하는 구현입니다.

마지막 수정 일자