반응형
Notice
Recent Posts
Recent Comments
Link
관리 메뉴

지구정복

[Kafka] 10. Kafka Tools 본문

데이터 엔지니어링 정복/Kafka

[Kafka] 10. Kafka Tools

noohhee 2025. 5. 2. 16:32
728x90
반응형

 

카프카 도구는 Apache Kafka 클러스터의 관리, 모니터링 및 최적화를 간소화하기 위해 설계된 특수 유틸리티 및 애플리케이션입니다.

시스템이 확장됨에 따라 카프카 클러스터 관리가 매우 복잡해질 수 있습니다.

카프카 도구는 클러스터의 주요 메트릭을 모니터링하고 확장성을 개선하는 등의 매우 반복적인 관리 작업을 간소화하고 자동화합니다. 

클러스터 관리 외에도 카프카 도구는 모니터링 및 보안 구성도 간소화하며, 관리자가 세분화된 액세스 정책을 정의할 수 있도록 합니다.

카프카 도구는 전반적인 기능을 강화하여 조직이 운영 복잡성을 줄이면서 실시간 데이터 스트림을 활용할 수 있도록 합니다. 

사용하기 쉬운 인터페이스 덕분에 초보자라도 카프카를 더 쉽게 다룰 수 있게 됩니다.

이 장에서는 다양한 카프카 도구를 탐구하며, 이들의 중요성, 필수 기능 및 관리 작업을 간소화하는 방법을 강조합니다. 

또한 카프카 도구의 미래 동향에 대해서도 논의합니다.

 

1. CLI tools

카프카 배포판에는 터미널 명령을 통해 카프카 클러스터와 상호작용할 수 있는 다양한 명령줄 인터페이스(CLI) 도구가 포함되어 있습니다.

이러한 도구는 여러 가지 관리 기능 및 운영 작업을 제공합니다. 아래에 목록을 제공합니다.

kafka-topics.sh Manages Kafka topics (creation, deletion, listing)
kafka-console-producer.sh Produces messages to a Kafka topic from the command line
kafka-console-consumer.sh Consumes messages from a Kafka topic from the command line
kafka-configs.sh Alters and describes topic configurations
kafka-acls.sh Manages access control lists (ACLs) for Kafka topics

이제 첫 두 개의 명령과 그 상세 구현을 살펴보겠습니다.

 

1.1. Kafka topic command tutorial

kafka-topic.sh 명령은 카프카 토픽에 대해 생성, 삭제, 목록 조회 및 설명 등의 다양한 작업을 수행할 수 있게 해줍니다.

이 도구를 사용하기 위한 몇 가지 전제 조건은 다음과 같습니다.

- 카프카 웹사이트에서 카프카 바이너리를 다운로드하여 추출합니다.
- CLI를 사용하여 카프카 브로커 서비스를 시작합니다.
- 카프카 구성 파일(예: server.properties)이 올바르게 설정되어 있는지 확인합니다.
- 네트워크 접근성을 위해 필요한 모든 포트를 엽니다.

토픽을 다음과 같이 생성할 수 있습니다:

kafka-topics.sh --create --topic bookings-events --bootstrap-server localhost:9092 --partitions 3 --replication-factor 2

--topic: 생성할 주제의 이름을 지정합니다.
--bootstrap-server: 카프카 브로커의 주소를 나타냅니다.
--partitions: 주제를 위한 파티션 수를 정의합니다. 원하는 만큼의 파티션을 가질 수 있습니다!
--replication-factor: 복제 인자를 설정하며, 각 파티션을 몇 개의 브로커가 복제할지를 결정합니다. 

즉, 복제 인자는 보유한 브로커 수를 초과할 수 없습니다!

또한, 카프카 클러스터 내의 모든 기존 주제를 식별하기 위해 주제 목록을 조회할 수 있습니다.

 

kafka-topics.sh --list --bootstrap-server localhost:9092

 

“describe” 요청을 통해 파티션, 복제 인자 및 기타 주제 구성 등 세부 정보를 받을 수 있습니다. 

각 파티션에 대해서도 지정된 주제에 대한 상세 메타데이터(예: 리더, 복제본 및 동기화된 복제본(ISR))를 확인할 수 있습니다. 

예를 들어, 주제에 대한 세부 정보를 확인하려면 다음 명령을 실행하면 됩니다:

kafka-topics.sh --describe --bookings-events --bootstrap-server localhost:9092

명령을 실행하면 일반적으로 다음과 유사한 출력 결과를 보게 됩니다:

Topic: booking-events  PartitionCount: 3    ReplicationFactor: 2 Configs: 
    Topic: booking-events  Partition: 0    Leader: 1   Replicas: 1,2     Isr: 1,2
    Topic: booking-events  Partition: 1    Leader: 2   Replicas: 2,3     Isr: 2,3
    Topic: booking-events  Partition: 2    Leader: 3   Replicas: 3,1     Isr: 3,1

 

이 출력은 booking-events 주제에 대한 중요한 세부 정보를 제공합니다. 

여기에는 파티션 수, 복제 인자, 각 파티션에 대한 리더 브로커 및 동기화된 복제본(ISR)이 포함됩니다. 

이러한 통찰력은 성능 최적화, 장애 허용 보장 및 분산 시스템 내에서 카프카 주제를 효과적으로 확장하는 책임이 있는 카프카 관리자와 개발자에게 매우 유용합니다.

자원을 해제하고 싶다면 다음 명령으로 주제를 삭제할 수 있습니다:

kafka-topics.sh --delete --topic booking-events--bootstrap-server localhost:9092

 

위 명령이 작동하려면 Kafka 브로커 구성에서 주제 삭제를 활성화해야 합니다 (delete.topic.enable=true).

기존 주제의 구성도 변경할 수 있으며, 예를 들어 파티션 수를 변경할 수 있습니다. 다음과 같이 수행합니다.

kafka-topics.sh --alter --topic booking-events --partitions 5 --bootstrap-server localhost:9092

 

 

1.2. Kafka console producer command tutorial

kafka-console-producer.sh는 터미널이나 명령 프롬프트에서 직접 카프카 주제로 메시지를 수동으로 게시할 수 있게 해줍니다. 

사용자 지정 프로듀서 애플리케이션을 작성하지 않고도 카프카 클러스터에 데이터를 테스트하고 디버깅하며 전송할 수 있습니다. 다음은 카프카 주제로 메시지를 전송하는 방법의 예입니다:

# Command to start the Kafka console producer
kafka-console-producer.sh --topic booking-events --bootstrap-server localhost:9092
# Example message to be sent to the Kafka topic
Hello, Kafka! This is a test message.

 

kafka-console-producer.sh는 localhost:9092에서 카프카 클러스터에 연결된 프로듀서를 초기화합니다. 

명령을 실행한 후, 메시지를 터미널에 직접 입력할 수 있습니다. 

입력한 각 줄은 개별 메시지로 처리되어 카프카 주제 my-topic으로 전송됩니다.

 

 

 

1.3. kcat

kcat는 터미널에서 카프카 주제로부터 직접 메시지를 생산하고 소비할 수 있는 능력으로 유명한 서드파티 오픈 소스 강력한 도구입니다. 

이는 kafka-console-producer와 kafka-console-consumer와 유사하지만 기능이 더 많습니다. 

kcat를 사용하여 카프카 주제로 메시지를 생성하는 명령은 다음과 같습니다:

echo "Hello, Kafka!" | kcat -P -b localhost:9092 -t my-topic


이 명령은 "Hello, Kafka!"라는 메시지를 localhost:9092에 위치한 카프카 브로커에서 실행되고 있는 my-topic 주제로 전송합니다.

- P는 프로듀서 명령임을 나타냅니다; 메시지를 소비하기 위해 -C를 사용할 것입니다.
- B는 부트스트랩 서버 주소를 지정하며, 이 예제에서는 localhost:9092입니다.
- t는 주제 이름을 지정하며, 이 예제에서는 my-topic입니다.

그 간단한 설계와 강력한 커뮤니티 덕분에 개발자와 관리자 모두에게 인기 있는 선택입니다. 

주로 디버깅, 테스트 및 운영 작업에 가장 많이 사용됩니다.

 

 

2. Monitoring tools

모니터링 도구는 카프카 클러스터의 성능과 상태를 추적합니다. 

이들 도구는 가장 중요한 메트릭의 시각화를 제공하고 경고를 생성합니다. 

모니터링해야 할 주요 카프카 메트릭은 다음과 같습니다:

- 브로커 메트릭: 처리량, 오류 비율, I/O 활용도 및 메모리 사용량.
- 주제 메트릭: 메시지 생성/소비 속도, 로그 크기 및 파티션 상태.
- 소비자 메트릭: 소비자 지연, 오프셋 커밋 속도, 소비자 그룹의 건강 상태.
- ZooKeeper 메트릭: 연결 수, 요청 지연, 세션 만료.

카프카 애플리케이션을 모니터링하기 위해 여러 종류의 도구가 있으며, 오픈 소스 도구, 상용 도구 및 목적에 맞게 설계된 도구가 포함됩니다. 

각 유형은 고유한 장점을 가지고 있으며, 리소스의 가용성과 조직의 우선 순위에 따라 선택할 수 있습니다.

 

2.1. Prometheus with Grafana

Prometheus는 메트릭을 수집하고 쿼리하기 위한 오픈 소스 시스템 모니터링 및 경고 도구 모음입니다. 

다차원 데이터 모델, 유연한 쿼리 언어 및 효율적인 시계열 데이터베이스로 널리 사용됩니다. 

메트릭은 고유한 레이블을 가지고 있어 쿼리를 더욱 강력하게 하고 집계에 도움을 줍니다. 

규칙 기반 경고 시스템은 Slack, 이메일, PagerDuty 등 다양한 채널에 직접 알림을 생성합니다.

Grafana는 Prometheus를 포함한 다양한 데이터 소스와 통합할 수 있는 오픈 소스 플랫폼입니다. 

사용자가 카프카 메트릭에 대한 사용자 정의 동적 대시보드를 생성할 수 있도록 풍부한 시각화 기능을 제공합니다. 

Grafana는 또한 메트릭 임계값에 따라 알림을 트리거할 수 있는 경고 규칙을 설정할 수 있게 해줍니다.

Prometheus와 Grafana 사용하기
Prometheus를 설정하여 Kafka 브로커, ZooKeeper, Kafka Streams 및 Kafka Connect로부터 메트릭을 수집할 수 있습니다. 

여기서 kafka_exporter 모듈이 중요한 역할을 합니다.

먼저 Prometheus와 kafka-exporter를 설치 및 구성한 후, Prometheus 구성에 kafka-exporter 대상을 추가해야 합니다. 

다음으로 Grafana를 설치하고 구성합니다. Grafana에 Prometheus를 데이터 소스로 추가합니다.

이제 미리 구축된 카프카 대시보드를 가져오거나 사용자 정의 대시보드를 생성할 수 있습니다. 

또한 Prometheus 경고 규칙을 정의하고 Grafana 경고를 시각적 임계값 및 알림을 위해 구성할 수 있습니다.

 

 

 

 

 

 

 

 

 

 

 

 

궁금했던 것

--bootstrap-server에 브로커 서버 한 대만 적어도 되나?

적어도된다. 그러나 해당 브로커 서버 다운시 데이터 흐름은 끊긴다.

 

 

 

 

 

728x90
반응형

'데이터 엔지니어링 정복 > Kafka' 카테고리의 다른 글

[Kafka] 11. Kafka Client Configurations  (0) 2025.05.02
[Kafka] 9. Zookeeper  (0) 2025.05.02
[Kafka] 8. Offset  (0) 2025.05.02
[Kafka] 7. Partition  (1) 2025.05.01
[Kafka] 6. Topics  (1) 2025.04.30
Comments