Как остановить журнал Дженкинса стать огромным?

Недавно мой 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"