Время безотказной работы Jenkins — сколько времени прошло с момента последнего перезапуска

#jenkins

#дженкинс

Вопрос:

Возможно ли увидеть, как долго работает экземпляр / мастер Jenkins?

Я попытался поискать в «Управление Дженкинсом», но не могу его там найти. Я знаю, что мог бы войти в систему и проверить процесс на компьютере, но возможно ли это сделать в веб-интерфейсе Jenkins?

Этот URL показывает белую линию, когда он был перезапущен… но это не настолько интуитивно.

 <jenkins-url>/monitoring?part=graphamp;graph=usedMemoryamp;period=mois
  

Ответ №1:

Вы можете запустить groovy script в веб-интерфейсе Jenkins из: Manage Jenkins > Script Console и использовать Jenkins API. Если вы хотите знать, сколько дней Дженкинс работает:

 import java.util.concurrent.TimeUnit
long lastRestarted = Jenkins.instance.toComputer().getConnectTime()
long now =  System.currentTimeMillis()
println TimeUnit.MILLISECONDS.toDays(now - lastRestarted)
  

getConnectTime() на главном компьютере должно быть указано время его перезапуска.
http://javadoc.jenkins.io/hudson/model/Computer.html#getConnectTime ()

Комментарии:

1. Хорошо, мы, вероятно, запустим его как системный скрипт groovy, чтобы показать ему имя сборки. Большое спасибо!

2. Для версии Jenkins 2.32.2 результат равен нулю.

3. У меня это работает в версии Jenkins 2.73.2. Как вы ее запустили?

4. В этом случае вы можете заменить toDays(...) в последней строке на toMinutes(...) или любое другое желаемое вами разрешение.

Ответ №2:

Uptime Класс в ядре Jenkins Core существует уже давно (Jenkins 1.538). Таким образом, используя тот же принцип с консолью сценариев, код можно сделать более читаемым и надежным:

 println "Jenkins has been started "   (ExtensionList.lookupSingleton(Uptime.class).uptime / 1000 / 60 )   " minutes ago"
  

Которое покажет, например:

Jenkins был запущен 175.8678166667 минут назад

Примечание: ExtensionList.lookupSingleton было введено в Jenkins 2.87. Поэтому, если вы используете более раннюю версию, используйте ExtensionList.lookup(Uptime.class).get(0) вместо этого.