일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- jvm
- JavaScript
- Spring
- zookeeper
- kubectl
- EC2
- Network
- MAC address
- Operating System
- log
- Trino
- ip
- Python
- Vision
- AWS
- CSV
- airflow
- Kafka
- tcp
- CVAT
- OS
- kubernetes
- docker
- PostgreSQL
- helm
- grafana
- Packet
- java
- kubeadm
- aws s3
- Today
- Total
JUST WRITE
Kafka Broker Log 관리 본문
Kafka Broker Log 관리
Kafka에서는 Log를 Topic Partition에 쌓이는 Data를 의미한다.
보통 System에서 Log는 System의 상황 파악을 위해 기록하는 정보이다.
Kafka에서도 Broker에서 이런 Log를 기록하고 있다.
server, connect, controller, user 등 다양한 Log를 기록하고 있다.
이런 Log 설정은 conf/log4j.properties에서 확인할 수 있다.
$ cat /kafka/conf/log4j.properties
...
log4j.appender.kafkaAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.kafkaAppender.DatePattern='.'yyyy-MM-dd-HH
log4j.appender.kafkaAppender.File=${kafka.logs.dir}/server.log
log4j.appender.kafkaAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.kafkaAppender.layout.ConversionPattern=[%d] %p %m (%c)%n
...
위 설정값은 기본값이다.
DailyRollingFileAppender로 Log를 일단위로 구분해서 기록한다.
기본값으로 두면 오래된 Log를 처리하는 로직이 없어 Log가 큰 용량을 차지할 수 있다.
이번 포스팅에서 Log를 관리할 수 있는 방법을 정리하려 한다.
RollingFileAppender
기본 DailyRollingFileAppender가 아닌 RollingFileAppender로 설정을 변경한다.
MaxFileSize와 MaxBackupIndex 설정값으로 오래된 Log를 삭제할 수 있다.
log4j.appender.kafkaAppender=org.apache.log4j.RollingFileAppender
log4j.appender.kafkaAppender.File=${kafka.logs.dir}/server.log
log4j.appender.kafkaAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.kafkaAppender.layout.ConversionPattern=[%d] %p %m (%c)%n
log4j.appender.kafkaAppender.MaxFileSize=128MB
log4j.appender.kafkaAppender.MaxBackupIndex=10
위처럼 설정하면 server log가 한 파일당 최대 128MB까지 기록되며,
이렇게 10개까지 파일이 생성되고 나면 가장 오래된 파일이 지워지게 된다.
controller.log kafkaServer-gc.log.6 server.log.4
controller.log.1 kafkaServer-gc.log.7 server.log.5
controller.log.2 kafkaServer-gc.log.8 server.log.6
controller.log.3 kafkaServer-gc.log.9 server.log.7
controller.log.4 log-cleaner.log server.log.8
controller.log.5 log-cleaner.log.1 server.log.9
kafka-authorizer.log log-cleaner.log.2 state-change.log
kafka-request.log log-cleaner.log.3 state-change.log.1
kafkaServer-gc.log log-cleaner.log.4 state-change.log.2
kafkaServer-gc.log.1 server.log state-change.log.3
kafkaServer-gc.log.2 server.log.1 state-change.log.4
kafkaServer-gc.log.3 server.log.10 state-change.log.5
kafkaServer-gc.log.4 server.log.2 state-change.log.6
kafkaServer-gc.log.5 server.log.3
Crontab
두 번째는 crontab을 활용하여 오래된 log 파일을 지워준다.
crontab을 활용하면 특정 작업을 schedule을 통해 실행할 수 있다.
먼저 오랜된 log파일을 지워주는 script를 생성한다.
$ vi kafka_rm_logs.sh
#!/bin/sh
/usr/bin/find /kafka/logs/ -type f -mtime +3 -exec rm {} +
Kafka Log 폴더에서 3일 이상이 된 파일을 삭제하는 script이다.
해당 script를 crontab에 등록한다.
# crontab 확인
$ crontab -l
# crontab 수정
$ crontab -e
# kafka 3 day older log delete
00 00 * * * kafka_rm_logs.sh
이러면 매일 자정에 kafka_rm_logs.sh 파일이 실행되며 오래된 log를 삭제한다.
[참고사이트]
'MLOps > Kafka' 카테고리의 다른 글
Kafka 재시작 후 UNKNOWN_TOPIC_ID 에러?! (0) | 2023.06.14 |
---|---|
UI로 Kafka 관리하기 (0) | 2023.03.16 |
Ansible를 통한 Kafka 설치 (0) | 2022.12.18 |
AWS EC2 Kafka 설치 (0) | 2022.11.13 |
Kafka Topic (0) | 2022.10.03 |