如何在Mac系统中为Kafka消费者配置按小时轮转的log rotate规则
前置修正:启动命令问题
你当前的执行命令存在两处错误,先修正再配置日志轮转:
--kafka-ssl-certfile参数的取值少了闭合双引号sudo位置错误,重定向不需要加sudo,sudo应该加在执行脚本的头部
修正后的命令:
sudo python3 consumer.py --kafka-broker "xxx" --kafka-topic "yyy" --kafka-group-id cxel-yellow-vsg-qoe --kafka-ssl-keyfile "key" --kafka-ssl-certfile "certificate" --kafka-ssl-cafile /usr/local/etc/openssl@1.1/cert.pem --schemas prod --kafka-security-protocol SSL >> /var/log/kafka.log 2>&1 &
按系统选择日志轮转配置
1. Newsyslog 方案(macOS/BSD 系统默认)
你提到的newsyslog是macOS等BSD系系统的默认日志轮转工具,配置步骤如下:
- 不要直接在
/etc/newsyslog.conf路径下创建文件,需要在对应的配置子目录下创建/etc/newsyslog.d/kafka.conf,写入以下内容:
/var/log/kafka.log 644 168 * 1H * Z
- 字段说明:
/var/log/kafka.log:待轮转的目标日志路径644:新生成日志的权限168:保留的日志总数,按小时轮转的话168对应保留7天的日志,可按需调整*:不限制单日志文件大小,仅按时间触发轮转1H:每小时触发一次轮转*:使用默认的所属用户/用户组Z:轮转后自动用gzip压缩旧日志,不需要压缩可删除该字段
- 加载配置:
先执行sudo newsyslog -nvv验证配置语法无错误,再执行sudo newsyslog生效配置。
2. Logrotate 方案(Linux 系统默认)
如果是Linux系统,更推荐使用默认的logrotate实现:
- 创建配置文件
/etc/logrotate.d/kafka,写入以下内容:
/var/log/kafka.log { hourly rotate 168 compress missingok notifempty copytruncate create 0644 root root }
- 关键字段说明:
hourly:设置按小时轮转copytruncate:先复制当前日志到轮转文件,再清空原日志,不需要重启Kafka消费者进程即可持续写入,适配你这种持续输出的常驻进程
- 生效配置:
大部分Linux系统默认关闭logrotate的小时级任务,需要手动添加定时任务保证每小时触发:
执行sudo crontab -e,添加如下规则:
先执行0 * * * * /usr/sbin/logrotate /etc/logrotate.d/kafkasudo logrotate -d /etc/logrotate.d/kafka验证配置正确性,确认无报错后执行sudo logrotate -f /etc/logrotate.d/kafka手动触发一次轮转验证效果。
内容的提问来源于stack exchange,提问作者Madhuvanthi V
相关产品推荐
相关产品推荐

