SSL Certs 即將到期

此資料由 http_unit 和 scollector 收集。當警報在一定天數內到期時,它會發出警告,如果證書已經過了失效日期,則會發出警報。這遵循了 Bosun 中警告和暴擊使用的推薦預設值(警告:某些事情將失敗,暴擊:某些事情已經失敗)。

模板定義

template ssl.cert.expiring {
    subject = {{.Last.Status}}: SSL Cert Expiring in {{.Eval .Alert.Vars.daysLeft | printf "%.2f"}} Days for {{.Group.url_host}}
    body = `
    {{ template "header" . }}
    <table>
       <tr>
            <td>Url</td>
            <td>{{.Group.url_host}}</td>
       </tr>
       <tr>
            <td>IP Address Used for Test</td>
            <td>{{.Group.ip}}</td>
       </tr>
       <tr>
            <td>Days Remaining</td>
            <td>{{.Eval .Alert.Vars.daysLeft | printf "%.2f"}}</td>
       </tr>
       <tr>
            <td>Expiration Date</td>
            <td>{{.Last.Time.Add (parseDuration (.Eval .Alert.Vars.hoursLeft | printf "%vh")) }}</td>
       </tr>
    </table>
    `
}

警報定義

alert ssl.cert.expiring {
    template = ssl.cert.expiring
    ignoreUnknown = true
    $notes = This alert exists to notify of us any SSL certs that will be expiring for hosts monitored by our http unit test cases defined in the scollector configuration file.
    $expireEpoch = last(q("min:hu.cert.expires{host=ny-bosun01,url_host=*,ip=*}", "1h", ""))
    $hoursLeft = ($expireEpoch - epoch()) / d("1h")
    $daysLeft = $hoursLeft / 24
    warn = $daysLeft <= 50
    crit = $daysLeft <= 0
    warnNotification = default
    critNotification = default
}

警報說明

  • q(..)func doc )將 OpenTSDB 作為博世支援的後端之一。返回一個名為 seriesSet 的型別(它是一組時間序列,每個都由標記標識)。
  • last()func doc )獲取 seriesSet 中每個系列的最後一個值並返回一個 numberSet。
  • 指標,hu.cert.expires。返回證書過期時的 Unix 時間戳
  • epoch()func doc )返回當前的 unix 時間戳。因此,從到期時期中減去當前的 unix 時間戳給出的是剩餘時間。
  • d()func doc )返回持續時間字串表示的秒數,持續時間字串使用 OpenTSDB 相同的單位

通知預覽

http://i.stack.imgur.com/xivKg.jpg

實施例 scollector.toml 引用為配置第 httpunit 的測試用例:

[[HTTPUnit]]
  TOML = "/opt/httpunit/data/httpunit.toml"