Как остановить журнал Дженкинса стать огромным?
Недавно мой jenkins.log начал получать очень большой, очень быстро, полный исключений о разрешении DNS. Я попытался использовать logrotate, но файл журнала растет слишком быстро, даже чтобы его можно было повернуть, и просто съедает все мое дисковое пространство, которое затем приводит к сбою различных служб, потому что они больше не могут записывать файлы.
Как этого избежать?
Ответы
Ответ 1
Вы можете отключить ведение журнала этих ошибок DNS, настроив параметры ведения журнала в Jenkins.
Из веб-интерфейса Jenkins перейдите по ссылке:
Manage Jenkins -> System Log -> Log Levels (on the left)
Добавьте следующую запись:
Name: javax.jmdns
Level: off
Таким образом вы можете сохранить функцию многоадресной DNS, но без всех данных ведения журнала.
Ответ 2
Это похоже на многоадресную рассылку DNS, как описано здесь: https://issues.jenkins-ci.org/browse/JENKINS-25369
Временное решение: добавьте -Dhudson.DNSMultiCast.disabled=true
в JAVA_ARGS
.
PS: Я отвечаю на свой собственный вопрос здесь, на Stack Overflow, потому что я не мог найти ответ на Google легко, и он будет полезен другим людям, управляющим Jenkins.
Ответ 3
Измените JAVA_ARGS в /etc/default/jenkins
(как минимум, для установки Debian/Ubuntu), чтобы отключить функцию многоадресной рассылки DNS.
Измените это: JAVA_ARGS="-Djava.awt.headless=true"
К этому: JAVA_ARGS="-Djava.awt.headless=true -Dhudson.DNSMultiCast.disabled=true"
И перезапустите службу service jenkins restart
Ответ 4
Вы можете подключиться к инициализации 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)
Вы можете изменить имя регистратора и уровень, чтобы он соответствовал вашим потребностям. Подробнее см. мою статью по этому вопросу.
Ответ 5
Для тех, кто использует Centos/Redhat, возможность отключить функцию многоадресной рассылки DNS можно найти в /etc/sysconfig/jenkins.
JENKINS_JAVA_OPTIONS="-Dhudson.DNSMultiCast.disabled=true -Dhudson.udp=-1 -Djava.awt.headless=true"