카프카의 메시지를 확인하고 싶은데, 매번 컨슈머로 볼수는 없기도 하고 모니터링 방법도 궁금하여 구글링을 해보았다.
Top 5 Kafka Monitoring Tools with Importance & Working 이라는 사이트가 보였고, -광고가 너무 많이 떠서 링크는 생략한다.- 그중 Apache 2.0 오픈소스 모니터링 툴인 Kafdrop을 쿠버네티스 개발 클러스터에 배포해 보았다.
kafdrop의 기능을 설명하자면 kafka Cluster Overview, Broker정보, Topic을 확인할 수 있는 간단한 UI를 제공한다.
- requirement: JDK 11+, Kafka 0.11.0+
https://github.com/obsidiandynamics/kafdrop
GitHub - obsidiandynamics/kafdrop: Kafka Web UI
Kafka Web UI. Contribute to obsidiandynamics/kafdrop development by creating an account on GitHub.
github.com
git에 들어가면 jar, docker, k8s(helm) 로 구동하는 방법이 나와있는데
AWS EKS를 사용중이기 때문에 helm으로 우선 설치해보려 하였으나
helm 설치가 매끄럽지 않아 그냥 도커 이미지로 deployment, service, virtual service(istio ingress 사용중이므로) 를 만들어서 띄웠다.
작성한 yaml은 아래와 같다.
---
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: kafdrop
name: kafdrop
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: kafdrop
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: kafdrop
spec:
containers:
- image: obsidiandynamics/kafdrop:3.30.0 # 태그는 22.10.13 기준 stable
name: kafdrop
ports:
- containerPort: 9000
resources: {}
env:
# KAFKA_BROKERCONNECT만 있으면 되는데
# secret에서 kafka broker1,2의 주소를 관리하고 있는 경우 아래처럼 각각 불러온뒤 합쳐주자
# - name: KAFKA_BROKER1
# valueFrom:
# secretKeyRef:
# name: app-secret
# key: KAFKA_BROKER1
# - name: KAFKA_BROKER2
# valueFrom:
# secretKeyRef:
# name: app-secret
# key: KAFKA_BROKER2
# - name: KAFKA_BROKERCONNECT
# value: "$(KAFKA_BROKER1),$(KAFKA_BROKER2)"
- name: KAFKA_BROKERCONNECT
value: "b-1.xxxx.xxx:9092,b-2.xxxx.xxx:9092"
- name: JVM_OPTS
value: "-Xms32M -Xmx64M"
- name: SERVER_SERVLET_CONTEXTPATH
value: "/kafdrop"
status: {}
---
apiVersion: v1
kind: Service
metadata:
labels:
app: kafdrop
name: kafdrop
namespace: default
spec:
ports:
- port: 9000
protocol: TCP
targetPort: 9000
selector:
app: kafdrop
sessionAffinity: None
type: ClusterIP
status:
loadBalancer: {}
---
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
name: kafdrop
namespace: default
spec:
gateways:
- default/app-gateway
hosts:
- '*'
http:
- match:
- uri:
prefix: /kafdrop
route:
- destination:
host: kafdrop.default.svc.cluster.local
port:
number: 9000
headers:
response:
add:
X-Frame-Options: ALLOW-FROM SAMEORIGIN
remove:
- X-Frame-Options
https://도메인/kafdrop 주소로 정상적으로 메인화면이 뜨고 Topic리스트에서 특정 Topic 선택후 view messages 로 들어간 다음 다시 view message 로 조회하면 토픽에 딸린 메시지들을 볼 수 있었다.
* 보안상 이유로 캡처 이미지는 없다. 화면이 궁금하면 다음 블로그를 참조하길 바란다.
https://choiseokwon.tistory.com/274
Kafdrop: Kafka 웹 UI
Kafdrop obsidiandynamics/kafdrop Kafka Web UI github.com 1. 소개 kafdrop은 Kafka 토픽, 브로커, 컨슈머 그룹 등 Kafka을 웹 UI로 볼 수 있게 해주는 java 프로그램이다. 2. 사용법 JDK 11+ , Kafka 0.11.0+..
choiseokwon.tistory.com
* 아쉬운 점
로그인이 없다. topic 삭제 버튼도 있는데 로그인이 없다.
관리자만 볼것 같은 화면이라 IP 대역으로 접근 차단을 해야겠다.
'CloudNative > App Definition & Developement' 카테고리의 다른 글
| tekton - OCP pipeline 3 steps (0) | 2024.03.27 |
|---|---|
| strimzi on docker desktop k8s (1) | 2024.03.04 |
| gitlab 502 error, gitlab-shell self-check failed (0) | 2024.02.21 |
| rabbitmq 로컬구성과 DLQ 설정 (1) | 2024.01.17 |
| 윈도우 PC에 redis + redis insight 구성 (docker) (2) | 2024.01.08 |