Apache DolphinScheduler日志把磁盘撑爆了?别慌,教你两招搞定日志清理(附crontab定时脚本)

张开发
2026/4/19 17:49:15 15 分钟阅读

分享文章

Apache DolphinScheduler日志把磁盘撑爆了?别慌,教你两招搞定日志清理(附crontab定时脚本)
Apache DolphinScheduler日志爆盘应急指南从手动清理到自动化防护凌晨三点服务器告警铃声刺破夜空——/var分区使用率100%。作为运维负责人你迅速SSH登录排查发现罪魁祸首是DolphinScheduler堆积如山的日志文件。这种场景对于使用过分布式任务调度系统的工程师都不陌生本文将分享一套经过生产环境验证的解决方案组合拳。1. 紧急救援手动清理实战手册当磁盘使用率突破95%红线时系统性能会断崖式下跌。此时需要快速定位日志目录并释放空间。DolphinScheduler默认日志路径通常位于安装目录下的logs文件夹但不同版本可能有所差异。通过以下命令快速定位# 查找最近修改的大于100MB的日志文件 find / -type f -name dolphinscheduler-*.log -size 100M -exec ls -lh {} 2/dev/null发现目标后直接删除是最快方案但生产环境需谨慎操作。建议先统计待清理文件# 统计三天前的日志文件数量及总大小 find /opt/dolphinscheduler/logs -type f -mtime 3 -name *.log -exec du -ch {} | tail -1确认无误后执行删除保留最近3天日志find /opt/dolphinscheduler/logs -type f -mtime 3 -name *.log -delete关键参数解析-mtime 3匹配修改时间超过3天的文件-name *.log限定.log后缀文件-delete直接删除匹配项谨慎使用重要提示执行前建议先用-exec ls -lh {} 预览匹配结果避免误删关键日志2. 防御体系构建自动化清理方案2.1 Shell脚本编写最佳实践创建/usr/local/bin/clean_ds_logs.sh脚本#!/bin/bash # DolphinScheduler日志清理脚本 # 保留最近7天日志每天凌晨执行 LOG_DIR/opt/dolphinscheduler/logs RETENTION_DAYS7 LOG_FILE/var/log/ds_clean.log { echo $(date) echo 清理前磁盘使用情况: df -h $LOG_DIR echo 正在清理${RETENTION_DAYS}天前的日志... find $LOG_DIR -type f -mtime $RETENTION_DAYS -name *.log -print -delete echo 清理后磁盘使用情况: df -h $LOG_DIR echo 本次清理完成 } $LOG_FILE 21赋予执行权限chmod x /usr/local/bin/clean_ds_logs.sh2.2 Crontab配置进阶技巧编辑当前用户的crontabcrontab -e添加以下配置每天凌晨2点执行0 2 * * * /usr/local/bin/clean_ds_logs.sh高阶配置建议添加邮件报警MAILTOopsexample.com资源限制0 2 * * * /usr/bin/flock -xn /tmp/ds_clean.lock -c /usr/local/bin/clean_ds_logs.sh日志轮转配合logrotate管理清理脚本自身日志3. 源头治理日志配置优化方案除了定期清理调整日志生成策略同样重要。DolphinScheduler采用Logback作为日志框架配置文件通常位于conf/logback-*.xml。推荐配置参数参数默认值生产建议作用maxHistory168天30天日志保留天数maxFileSize64MB100MB单个日志文件大小上限totalSizeCap无限制10GB所有日志总大小上限示例修改conf/logback-worker.xmlrollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy fileNamePattern${log.base}/dolphinscheduler-worker.%d{yyyy-MM-dd}.%i.log/fileNamePattern maxHistory30/maxHistory maxFileSize100MB/maxFileSize totalSizeCap10GB/totalSizeCap /rollingPolicy修改后需重启对应服务# 单机版 ./bin/stop-all.sh ./bin/start-all.sh # 集群版按需重启对应服务 systemctl restart dolphinscheduler-worker.service4. 监控与告警闭环设计完善的日志管理体系需要监控闭环。推荐部署以下检查项Prometheus监控规则示例- alert: DolphinSchedulerLogSpace expr: 100 * (1 - (node_filesystem_avail_bytes{mountpoint/opt/dolphinscheduler/logs} / node_filesystem_size_bytes{mountpoint/opt/dolphinscheduler/logs})) 80 for: 30m labels: severity: warning annotations: summary: DolphinScheduler日志分区使用率过高 (instance {{ $labels.instance }}) description: 日志分区使用率已达{{ $value }}%请及时清理日志清理健康检查脚本#!/bin/bash # 检查最近7天是否有执行清理 LAST_CLEAN$(grep 本次清理完成 /var/log/ds_clean.log | tail -1 | cut -d -f1) if [[ $(date -d $LAST_CLEAN %s) -lt $(date -d 7 days ago %s) ]]; then echo CRITICAL: 日志清理脚本已超过7天未运行 2 exit 2 fi在Kubernetes环境中可以通过InitContainer实现日志分区的自动清理initContainers: - name: log-cleaner image: alpine:latest command: [sh, -c, find /var/log/dolphinscheduler -type f -mtime 7 -delete] volumeMounts: - mountPath: /var/log/dolphinscheduler name: ds-logs这套组合方案在某金融客户生产环境实施后日志相关磁盘告警减少了92%运维团队夜间告警处理工作量下降明显。最重要的是建立了预防-处置-监控的完整闭环让日志管理从被动应对转向主动防控。

更多文章