본 포스팅은 지난 포스팅에 이어 컨슈머 그룹에 대해 파악할 수 있는 kafka-consumer-groups.sh 명령을 사용하는 방법을 정리한 것이다.
2022.10.26 - [Message Queue/Kafka] - [Kafka] Kafka Command-Line Tool(4) - kafka-console-consumer.sh
[Kafka] Kafka Command-Line Tool(4) - kafka-console-consumer.sh
지난 포스팅에서는 kafka-console-producer.sh 명령을 통해 토픽에 레코드를 전달하는 과정을 살펴보았다. 2022.10.26 - [All] - [Kafka] Kafka Command-Line Tool(3) - kafka-console-producer.sh [Kafka] Kafka..
ryeojin.tistory.com
hello-group 이름의 컨슈머 그룹으로 생성된 컨슈머로 hello.kafka 토픽의 데이터를 가져갔다. 컨슈머 그룹은 따로 생성하는 명령을 날리지 않고 컨슈머를 동작할 때 컨슈머 그룹 이름을 지정하면 새로 생성된다. 생성된 컨슈머 그룹의 리스트는 kafka-consumer-groups.sh 명령어로 확인할 수 있다.
1
2
|
$ bin/kafka-consumer-groups.sh --bootstrap-server my-kafka:9092 --list
hello-group
|
cs |
--list : 컨슈머 그룹의 리스트를 확인하는 옵션이다. 컨슈머 그룹을 통해 현재 컨슈머 그룹이 몇 개나 생성되었는지, 어떤 이름의 컨슈머 그룹이 존재하지 확인할 수 있다. 이렇게 확인한 컨슈머 그룹 이름을 토대로 컨슈머 그룹이 어떤 토픽의 데이터를 가져가는지 확인할 때 쓰인다.
1
2
3
4
5
6
7
8
9
|
$ bin/kafka-consumer-groups.sh --bootstrap-server my-kafka:9092 --group hello-group --describe
Consumer group 'hello-group' has no active members.
GROUP TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG CONSUMER-ID HOST CLIENT-ID
hello-group hello.kafka 0 0 0 0 - - -
hello-group hello.kafka 1 0 0 0 - - -
hello-group hello.kafka 2 3 3 0 - - -
hello-group hello.kafka 3 8 8 0 - - -
|
cs |
1. 어떤 컨슈머 그룹에 대한 상세 내용을 볼 것인지 --group 옵션을 통해 지정한다.
2. --describe 옵션을 통해 컨슈머 그룹의 상세 내용을 확인할 수 있다.
3. GROUP은 조회한 컨슈머 그룹이 마지막으로 커밋한 토픽과 파티션을 나타낸다.
4. CURRENT-OFFSET 컨슈머 그룹이 가져간 토픽의 파티션에 가장 최신 오프셋(offset)이 몇 번인지 나타낸다.
오프셋이란 파티션의 각 레코드에 할당된 번호다. 이 번호는 데이터가 파티션에 들어올 때마다 1씩 증가한다.
5. LOG-END-OFFSET 해당 컨슈머 그룹의 컨슈머가 어느 오프셋까지 커밋했는지 알 수 있다. CURRENT-OFFSET은 LOG-END-OFFSET과 같거나 작은 값일 수 있다.
6. LAG은 컨슈머 그룹이 토픽의 파티션에 있는 데이터를 가져가는 데에 얼마나 지연이 발생하는지 나타내는 지표이다. 랙은 컨슈머 그룹이 커밋한 오프셋과 해당 파티션의 가장 최신 오프셋 간의 차이이다.
7. CONSUMER-ID 컨슈머의 토픽(파티션) 할당을 카프카 내부적으로 구분하기 위해 사용하는 id이다. 이 값은 client id에 uuid(universally unique identifier)값을 붙여서 자동 할당되어 유니크한 값으로 설정된다.
8. HOST 컨슈머가 동작하는 host명을 출력한다. 이 값을 통해 카프카에 붙은 컨슈머의 호스트명 또는 IP를 알 수 있다.
9. CLIENT-ID 컨슈머에 할당된 id이다. 이 값은 사용자가 지정할 수 있으며 지정하지 않으면 자동 생성된다.
컨슈머 그룹의 상세 정보를 확인하는 것은 컨슈머를 개발할 때, 카프카를 운영할 때 둘 다 중요하게 활용된다. 컨슈머 그룹이 중복되지 않는지 확인하거나 운영하고 있는 컨슈머가 랙이 얼마인지 확인하여 컨슈머의 상태를 최적화하는 데에 사용한다. 컨슈머의 랙이 증가하고 있다는 의미는 프로듀서가 데이터를 토픽으로 전달하는 속도에 비해 컨슈머의 처리량이 느리다는 증거이다. 카프카를 운영할 때 컨슈머 그룹 이름은 알아내고 컨슈머 그룹의 상ㅈ세 정보를 파악하면 카프카에 연결된 컨슈머의 호스트명 또는 IP를 알아낼 수 있다. 접근 중인 컨슈머의 정보를 토대로 카프카가 인카된 사람에게만 사용 중인지 알 수 있다.
'Message Queue > Kafka' 카테고리의 다른 글
[Kafka] Kafka Command-Line Tool(4) - kafka-console-consumer.sh (0) | 2022.10.26 |
---|---|
[Kafka] Kafka Command-Line Tool(3) - kafka-console-producer.sh (1) | 2022.10.26 |
[Kafka] Kafka Command-Line Tool(2) - kafka.topics.sh (0) | 2022.10.26 |
[Kafka] Kafka Command-Line Tool(1) - 설정 (0) | 2022.10.26 |