Help us understand the problem. What is going on with this article?

Jenkinsのスレーブのストレージ容量を監視する

More than 1 year has passed since last update.

Jenkinsのスレーブのストレージ容量を監視する

Jenkinsには各情報等を取得等できるapiが用意されています。
http://[your-jenkins-path]/[jenkin_function]/api/[xml,json]
なのでそれを利用すれば簡易的にも監視機能を作ることができます。

例えばこんなスクリプトをJenkinsに組み込んで適宜Slackに投げたりすれば
スレーブのストレージがパンクしておじさんが息をしていないの!!ということを未然に防ぐことができます。

もっとちゃんとしたツールを利用するのも手ですが, 簡単にであればこういうスクリプトでもいいですし。
またJenkins特有の何か(例えばジョブが今どうなっているか)などについてはこういう方法がおそらくいいと思います。

$req = Invoke-WebRequest -Uri http://[your-jenkins-path]/computer/api/xml

$xml = [xml]($req.Content)

$computerSet = $xml.computerSet.computer

$temporarySizeList = @{}
$sizeList = @{}

foreach ( $computer in $computerSet )
{
    $name = $computer.displayName
    $arch = $computer.monitorData["hudson.node_monitors.ArchitectureMonitor"].InnerText

    $isLinux = "$arch" -like "*Linux*"
    Write-Host "$arch"

    $tempSize = $computer.monitorData["hudson.node_monitors.TemporarySpaceMonitor"].size
    $gByte = $tempSize / 1024.0 / 1024 / 1024
    $temporarySizeList[$name] = $gByte
    Write-Host "$name : $gByte" 

    #閾値(各自調整したりしてください)
    $threshold = if($isLinux){5}else{50}
    if($gByte -lt $threshold)
    {
        #閾値超えていた場合
    }


    $size = $computer.monitorData["hudson.node_monitors.DiskSpaceMonitor"].size
    $gByte = $size / 1024.0 / 1024 / 1024
    $sizeList[$name] = $gByte

    Write-Host "$name(temp) : $gByte"

    #閾値
    $threshold = if($isLinux){5}else{100}
    if($gByte -lt $threshold)
    {
        #閾値超えていた場合
    }
    Write-Host "-------------------------------------"

}


@([pscustomobject]$sizeList) | ConvertTo-Csv | Select-Object -Skip 1 | Out-File size.csv -encoding ascii
@([pscustomobject]$temporarySizeList) | ConvertTo-Csv | Select-Object -Skip 1 | Out-File temporary.csv -encoding ascii
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away