Bosun Expiration des certificats SSL


Exemple

Ces données sont collectées par http_unit et scollector. Il avertit quand une alerte va expirer dans un certain nombre de jours, puis devient critique si le certificat a dépassé la date d'expiration. Cela suit la valeur par défaut recommandée pour l'utilisation de warn et crit dans Bosun (warn: quelque chose va échouer, crit: quelque chose a échoué).

Template Def

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>
    `
}

Définition de l'alerte

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
}

Explication d'alerte

  • q(..) ( func doc ) querties OpenTSDB, l'un des backends supportés par Bosun. In renvoie un type appelé seriesSet (qui est un ensemble de séries temporelles, chacune identifiée par une balise).
  • last() ( func doc ) prend la dernière valeur de chaque série dans le seriesSet et renvoie un nombreSet.
  • La métrique, hu.cert.expires . renvoie l'horodatage Unix de l'expiration du certificat
  • epoch() ( func doc ) renvoie l'horodatage unix actuel. Donc, le temps restant est soustrait de l’horodatage unix actuel de l’époque d’expiration.
  • d() ( func doc ) renvoie le nombre de secondes représenté par la chaîne de durée, la chaîne de durée utilise les mêmes unités que OpenTSDB.

Aperçu de la notification

entrer la description de l'image ici

Exemple de section de scollector.toml référence à la configuration pour les cas de test httpunit :

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