【发布时间】:2019-12-17 00:41:44
【问题描述】:
最近我的 jenkins.log 开始变得非常大,非常快,充满了关于 DNS 解析的异常。我尝试使用 logrotate,但是日志文件增长太快,甚至无法旋转,并且占用了我所有的磁盘空间,这导致各种服务因无法再写入文件而失败。
如何避免这种情况?
【问题讨论】:
标签: jenkins
最近我的 jenkins.log 开始变得非常大,非常快,充满了关于 DNS 解析的异常。我尝试使用 logrotate,但是日志文件增长太快,甚至无法旋转,并且占用了我所有的磁盘空间,这导致各种服务因无法再写入文件而失败。
如何避免这种情况?
【问题讨论】:
标签: jenkins
您可以通过调整 Jenkins 中的日志记录设置来禁用这些 DNS 错误的日志记录。
从 Jenkins Web 界面转到:
Manage Jenkins -> System Log -> Log Levels (on the left)
添加以下条目:
Name: javax.jmdns
Level: off
这样您可以保留多播 DNS 功能,但不需要所有日志记录数据。
【讨论】:
这似乎是由于 DNS 多播造成的,如下所述:https://issues.jenkins-ci.org/browse/JENKINS-25369
解决方法:将-Dhudson.DNSMultiCast.disabled=true 添加到JAVA_ARGS。
PS:我在 Stack Overflow 上回答我自己的问题,因为我无法在 Google 上轻松找到答案,这对运行 Jenkins 的其他人会很有用。
【讨论】:
修改 /etc/default/jenkins 中的 JAVA_ARGS(至少是 Debian / Ubuntu 安装的位置)以禁用 DNS 多播功能。
改变这个:JAVA_ARGS="-Djava.awt.headless=true"
对此:JAVA_ARGS="-Djava.awt.headless=true -Dhudson.DNSMultiCast.disabled=true"
并重启服务service jenkins restart
【讨论】:
您可以使用 Jenkins 主文件夹中的 init.groovy 文件插入 Jenkins 初始化,并使用它永久更改日志记录级别。即使 Jenkins 重新启动,这些更改也会保留。 文件有一个简单的内容:
import java.util.logging.Level
import java.util.logging.Logger
Logger.getLogger("").setLevel(Level.SEVERE)
Logger.getLogger("org.apache.sshd").setLevel(Level.SEVERE)
Logger.getLogger("winstone").setLevel(Level.SEVERE)
您可以更改记录器的名称和级别,使其适合您的需要。详情请见my article on this topic。
【讨论】:
对于使用 Centos/Redhat 的用户,可以在 /etc/sysconfig/jenkins 中找到禁用 DNS 多播功能的选项
JENKINS_JAVA_OPTIONS="-Dhudson.DNSMultiCast.disabled=true -Dhudson.udp=-1 -Djava.awt.headless=true"
【讨论】:
就我而言,每当通过用户界面拒绝登录尝试时,我都会收到日志条目。
用户身份验证是通过 LDAP 完成的,并且提供的用户/密码元组是正确的。一段时间后,登录尝试开始工作。
用户是否可能因为启用了 DNS 多播功能而被拒绝?
【讨论】: