이전 포스팅에서 Kafka burrow의 정보와 lag을 평가하는 방법에 대해 알아보았다.
- Burrow 개요 및 설명 : https://blog.voidmainvoid.net/243
- Burrow에서 lag을 정의(평가)하는 방법 : https://blog.voidmainvoid.net/244
이번 포스팅에서는 Burrow에서 제공하는 http endpoint를 알아보고 각 topic별 offset, lag등의 정보를 가져오는 예제를 알아보고자 한다.
Burrow Endpoint
Burrow의 http server는 kafka, zookeeper의 정보를 효과적으로 가져올 수 있다. 모든 요청은 간단한 HTTP call로 요청되며(대부분 GET request) response는 JSON기반이다.
Healthcheck
Method : GET
URL Format : /burrow/admin
설명 : burrow의 healthcheck
GOOD
List Clustsers
Method : GET
URL Format : /v3/kafka
설명 : kafka broker list
{
"error": false,
"message": "cluster list returned",
"clusters": [
"local"
],
"request": {
"url": "/v3/kafka",
"host": "aa8a968b4d40"
}
}
Kafka Cluster Detail
Method : GET
URL Format : /v3/kafka/(cluster)
설명 : kafka broker들의 정보를 가져온다.
{
"error": false,
"message": "cluster module detail returned",
"module": {
"class-name": "kafka",
"servers": [
"172.22.123.1:9092",
"172.22.123.2:9092",
"172.22.123.3:9092",
"172.22.123.4:9092",
"172.22.123.5:9092"
],
"client-profile": {
"name": "",
"client-id": "burrow-lagchecker",
"kafka-version": "0.8",
"tls": null,
"sasl": null
},
"topic-refresh": 60,
"offset-refresh": 30
},
"request": {
"url": "/v3/kafka/local",
"host": "aa8a968b4d40"
}
}
List Consumers
Method : GET
URL Format : /v3/kafka/(cluster)/consumer
설명 : 해당 kafka broker에 존재하는 consumer group 리스트를 가져온다.
{
"error": false,
"message": "consumer list returned",
"consumers": [
"test-consumers",
"test2-consumers",
"test-aws-ec2-consumer"
],
"request": {
"url": "/v3/kafka/local/consumer",
"host": "aa8a968b4d40"
}
}
List Cluster Topics
Method : GET
URL Format : /v3/kafka/(cluster)topic
설명 : 해당 kafka broker에 존재하는 topic 리스트를 가져온다.
{
"error": false,
"message": "consumer list returned",
"consumers": [
"test",
"test2",
"test-aws-ec2"
],
"request": {
"url": "/v3/kafka/local/consumer",
"host": "aa8a968b4d40"
}
}
Get Consumer Detail
Method : GET
URL Format : /v3/kafka/(cluster)/consumer/(group)
설명 : 해당 kafka broker의 consumer group에 대한 lag, offset 정보를 가져온다.
{
"error": false,
"message": "consumer detail returned",
"topics": {
"test2": [
{
"offsets": [
{
"offset": 942,
"timestamp": 1564726784140,
"lag": 0
},
{
"offset": 942,
"timestamp": 1564726844142,
"lag": 0
},
{
"offset": 942,
"timestamp": 1564726904142,
"lag": 0
},
{
"offset": 942,
"timestamp": 1564726964143,
"lag": 0
},
{
"offset": 942,
"timestamp": 1564727024144,
"lag": 0
},
{
"offset": 942,
"timestamp": 1564727084145,
"lag": 0
},
{
"offset": 942,
"timestamp": 1564727144146,
"lag": 0
},
{
"offset": 942,
"timestamp": 1564727204147,
"lag": 0
},
{
"offset": 942,
"timestamp": 1564727264149,
"lag": 0
},
{
"offset": 942,
"timestamp": 1564727324149,
"lag": 0
}
],
"owner": "/172.22.212.50",
"client_id": "consumer-103",
"current-lag": 0
},
{
"offsets": [
{
"offset": 918,
"timestamp": 1564726784087,
"lag": 0
},
{
"offset": 918,
"timestamp": 1564726844088,
"lag": 0
},
{
"offset": 918,
"timestamp": 1564726904089,
"lag": 0
},
{
"offset": 918,
"timestamp": 1564726964090,
"lag": 0
},
{
"offset": 918,
"timestamp": 1564727024091,
"lag": 0
},
{
"offset": 918,
"timestamp": 1564727084090,
"lag": 0
},
{
"offset": 918,
"timestamp": 1564727144090,
"lag": 0
},
{
"offset": 918,
"timestamp": 1564727204091,
"lag": 0
},
{
"offset": 918,
"timestamp": 1564727264091,
"lag": 0
},
{
"offset": 918,
"timestamp": 1564727324091,
"lag": 0
}
],
"owner": "/172.22.123.123",
"client_id": "consumer-104",
"current-lag": 0
}
]
},
"request": {
"url": "/v3/kafka/local/consumer/test2-consumers",
"host": "aa8a968b4d40"
}
}
Consumer Group Status
Method : GET
URL Format : /v3/kafka/(cluster)/consumer/(group)/status
설명 : 해당 consumer group의 partition정보, status, total lag정보 조회.
{
"error": false,
"message": "consumer status returned",
"status": {
"cluster": "local",
"group": "test2-consumers",
"status": "OK",
"complete": 1,
"partitions": [],
"partition_count": 2,
"maxlag": {
"topic": "test2",
"partition": 0,
"owner": "/172.22.123.123",
"client_id": "consumer-103",
"status": "OK",
"start": {
"offset": 942,
"timestamp": 1564726904142,
"lag": 0
},
"end": {
"offset": 942,
"timestamp": 1564727444149,
"lag": 0
},
"current_lag": 0,
"complete": 1
},
"totallag": 0
},
"request": {
"url": "/v3/kafka/local/consumer/test2-consumers/status",
"host": "aa8a968b4d40"
}
}
Status의 종류
- NOTFOUND - Consumer group이 cluster에 존재하지 않는 경우
- OK - Consumer group, Partition 정상작동 중
- WARN - offset이 증가하면서 lag도 증가하는 경우(데이터가 증가하는데 consumer가 다소 따라가지 못할 경우)
- ERR - offset이 중지된 경우이지만 lag이 0이 아닌 경우
- STOP - offset commit이 일정시간 이상 중지된 경우
- STALL - offset이 commit되고 있지만 lag이 0이 아닌경우
Status를 결정하는 로직 : https://blog.voidmainvoid.net/244
Consumer Group Lag
Method : GET
URL Format : /v3/kafka/(cluster)/consumer/(group)/lag
설명 : 해당 consumer group의 partition정보, status, total lag정보 조회
{
"error": false,
"message": "consumer status returned",
"status": {
"cluster": "local",
"group": "test2-consumers",
"status": "OK",
"complete": 1,
"partitions": [
{
"topic": "test2",
"partition": 0,
"owner": "/172.22.123.123",
"client_id": "consumer-103",
"status": "OK",
"start": {
"offset": 942,
"timestamp": 1564726964143,
"lag": 0
},
"end": {
"offset": 942,
"timestamp": 1564727504151,
"lag": 0
},
"current_lag": 0,
"complete": 1
},
{
"topic": "test2",
"partition": 1,
"owner": "/172.22.123.123",
"client_id": "consumer-104",
"status": "OK",
"start": {
"offset": 918,
"timestamp": 1564726964090,
"lag": 0
},
"end": {
"offset": 918,
"timestamp": 1564727504091,
"lag": 0
},
"current_lag": 0,
"complete": 1
}
],
"partition_count": 2,
"maxlag": {
"topic": "test2",
"partition": 0,
"owner": "/172.22.123.123",
"client_id": "consumer-103",
"status": "OK",
"start": {
"offset": 942,
"timestamp": 1564726964143,
"lag": 0
},
"end": {
"offset": 942,
"timestamp": 1564727504151,
"lag": 0
},
"current_lag": 0,
"complete": 1
},
"totallag": 0
},
"request": {
"url": "/v3/kafka/local/consumer/test2-consumers/lag",
"host": "aa8a968b4d40"
}
}
Remove Consumer Group
Method : DELETE
URL Format : /v3/kafka/(cluster)/consumer/(group)
설명 : consumer group제거
{
"error": false,
"message": "consumer group removed",
"result": {},
"request": {
"url": "/v3/kafka/local/consumer/test2",
"host": "172.22.123.123",
}
}
Get Topic Detail
URL Format : /v3/kafka/(cluster)/topic/(topic)
설명 : topic의 현재 offset 조회
{
"error": false,
"message": "topic offsets returned",
"offsets": [
942,
918
],
"request": {
"url": "/v3/kafka/local/topic/test2",
"host": "aa8a968b4d40"
}
}
'빅데이터 > Kafka' 카테고리의 다른 글
Kafka consumer의 Automatic Commit은 중복이 생길 수 있다 (1) | 2019.09.25 |
---|---|
enable.auto.commit 일 때 Kafka consumer close() method 동작분석 (0) | 2019.09.02 |
[confluent]Kafka에 대한 상식 퀴즈 14개 (0) | 2019.08.30 |
Kafka Burrow에서 consumer의 lag을 정의하는(평가하는) 방법 - Consumer Lag Evaluation Rules (262) | 2019.08.02 |
Burrow - kafka consumer의 지연(lag)을 모니터링할 수 있는 효과적인 opensource tool (249) | 2019.08.02 |
KSQL - Streaming SQL for Apache Kafka 개요 - readme 설명 번역 (265) | 2019.07.07 |