CentOS 上 Jenkins 日志管理实践
一 日志位置与实时查看
- 系统日志:Jenkins 服务日志默认写入 /var/log/jenkins/jenkins.log,实时查看可用命令:sudo tail -f /var/log/jenkins/jenkins.log;按关键字检索可用:grep “关键字” /var/log/jenkins/jenkins.log。
- Web 日志:登录 Jenkins 后台,进入 Manage Jenkins → System Log,可按不同日志器和级别查看与检索。
- 构建日志:作业构建输出与日志存放在 /var/lib/jenkins/jobs/ 各任务目录下的 builds/ 子目录中,空间占用主要来自该处。
二 日志轮转与保留策略
- 使用 logrotate 管理 /var/log/jenkins/*.log,推荐策略为每日轮转、保留 7 天、压缩旧日志,并在轮转后通知 Jenkins 重新打开日志文件(避免继续写入已轮转文件)。示例配置 /etc/logrotate.d/jenkins:
/var/log/jenkins/*.log {
daily
rotate 7
compress
missingok
notifempty
create 0644 root adm
sharedscripts
postrotate
if [ -f /var/run/jenkins/jenkins.pid ]; then
kill -HUP $(cat /var/run/jenkins/jenkins.pid)
fi
endscript
}
- 说明:大多数 RPM 安装已自带 /etc/logrotate.d/jenkins,可直接编辑调整策略;如使用 systemd 启动,上述 kill -HUP 会让 Jenkins 重新打开日志句柄,继续写入新文件。
三 构建日志与磁盘空间治理
- 在作业配置中启用 “丢弃旧的构建”(Discard Old Builds),设置按 天数/构建数 保留,能从源头减少 /var/lib/jenkins 下构建产物与日志的磁盘占用。
- 对历史构建目录进行周期性清理(示例保留最近 7 天):
- 如需更细粒度控制,可编写脚本按任务保留最近 N 次构建、记录删除明细,避免误删。
四 集中式日志与外部系统集成
- 将 /var/log/jenkins/jenkins.log 接入 ELK Stack(Elasticsearch、Logstash、Kibana) 或 Splunk,便于检索、可视化与告警。
- 方式一:在 Jenkins 安装 Logstash 插件,将日志直接发送到 Elasticsearch,再用 Kibana 展示。
- 方式二:使用 Filebeat/Fluentd 采集 /var/log/jenkins/ 并输出到 Logstash/Elasticsearch。
五 日志级别与容量监控告警
- 日志级别:在 Manage Jenkins → System Log 调整全局或插件的日志级别;生产环境建议 INFO,排障时临时提升到 DEBUG。
- 容量监控:用 Nagios、Zabbix、Prometheus 监控 /var/log/jenkins/jenkins.log 大小或 /var/lib/jenkins 磁盘使用率,超过阈值触发告警。
- 安全与合规:避免在生产长期开启 DEBUG;对含敏感信息的构建日志设置合适的访问控制与脱敏策略。