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"