현대 오토에버 클라우드 스쿨

팀 프로젝트) Kafka TCP 통신 vs. Prometheus HTTP 통신

Gom3rye 2025. 10. 29. 12:04
728x90
반응형

☁️ [EKS / Prometheus / Kafka]

왜 어떤 주소는 http://를 붙여야 하고, 어떤 건 안 붙여도 될까?

AWS EKS 환경에서 Prometheus와 Kafka를 함께 구성하다 보면
이런 의문이 생긴다 👇

“Kafka brokers 주소는 그냥 b-1.kafka.amazonaws.com:9094 이렇게 써도 잘 되는데,
Prometheus remote_write는 http://를 안 붙이면 에러가 나네?”

이 글에서는 이 차이의 근본적인 이유를
“프로토콜 계층” 관점에서 명확하게 정리해보았다.


🧩 1️⃣ Kafka는 HTTP가 아닌 TCP 바이너리 프로토콜 기반

Kafka는 내부 통신에 HTTP를 전혀 사용하지 않는다.
대신 TCP 기반의 바이너리 프레임 프로토콜을 사용한다.

brokers:
  - b-1.sologmskcluster2.tak97t.c4.kafka.ap-northeast-2.amazonaws.com:9094
 

이 주소를 보면 http://가 전혀 없다. 그 이유는 Kafka 클라이언트가 직접 TCP 소켓을 열고 브로커와 연결하기 때문이다.
HTTP 계층을 거치지 않고, 메시지를 Kafka 전용 형식으로 송수신한다.

 

🧠 쉽게 말하면,

구분 프로토콜 예시 포트 특징
Kafka TCP (Binary Protocol) 9092 / 9094 HTTP 미사용, 자체 요청/응답 구조

즉, http://를 붙이는 순간 프로토콜이 달라지기 때문에 오히려 오류가 발생한다.
Kafka는 순수 TCP로 작동하기 때문이다.


🌐 2️⃣ Prometheus remote_write는 HTTP API 기반

반면 Prometheus의 remote_write는 데이터를 다른 Prometheus 서버나 Thanos, Mimir, Cortex 같은 리모트 스토리지로 전송할 때 HTTP POST 요청을 사용한다.

remote_write:
  - url: "http://afc92fad93b284bde93e1b7d4bc8c8a0-1120332621.ap-northeast-2.elb.amazonaws.com/api/v1/write"

 

실제로 Prometheus는 이 설정을 기반으로 아래처럼 동작한다 👇

POST /api/v1/write HTTP/1.1
Host: afc92fad93b284bde93e1b7d4bc8c8a0-1120332621.ap-northeast-2.elb.amazonaws.com
Content-Type: application/x-protobuf
Content-Encoding: snappy
 

 

즉, remote_write는 완전한 HTTP 통신이기 때문에
url: 항목에 반드시 프로토콜을 포함해야 한다.

http://나 https://를 생략하면 이런 에러가 발생한다:

unsupported protocol scheme ""

⚙️ 3️⃣ 두 방식의 근본적인 차이

항목 Kafka Prometheus remote_write
통신 방식 TCP 바이너리 프로토콜 HTTP/HTTPS REST API
전송 포트 9092 / 9094 80 / 443
전송 형식 Kafka 전용 메시지 프레임 HTTP POST + Protobuf (Snappy 압축)
http:// 필요 여부 ❌ 필요 없음 ✅ 반드시 필요

🧠 4️⃣ 쉽게 기억하기

Kafka는 "직접 연결(TCP 소켓 통신)"
Prometheus는 "HTTP 요청(API 호출)"

즉, Kafka는 프로토콜 헤더가 없고 Prometheus는 프로토콜 헤더(http://, https://)가 필수다.


🧾 5️⃣ 정리 문장

“Kafka는 HTTP를 사용하지 않는 TCP 프로토콜 기반이기 때문에
주소에 http://를 붙이면 통신이 실패한다.
반면 Prometheus의 remote_write는 HTTP POST 요청으로 데이터를 전송하므로
반드시 http:// 또는 https:// 프로토콜을 명시해야 한다.”

728x90
반응형