Bosun Plantilla de encabezado


Ejemplo

En las plantillas Bosun podemos hacer referencia a otras plantillas. Para las notificaciones por correo electrónico, es posible que tenga una plantilla de encabezado para mostrar las cosas que desea en todas las alertas.

Plantilla de encabezado

template header {
    body = `
    <style>
    td, th {
        padding-right: 10px;
    }
    </style>
    <p style="font-weight: bold; text-decoration: underline;">
        <a style="padding-right: 10px;" href="{{.Ack}}">Acknowledge</a>
        <a style="padding-right: 10px;" href="{{.Rule}}">View Alert in Bosun's Rule Editor</a>
        {{if .Group.host}}
            <a style="padding-right: 10px;" href="https://status.stackexchange.com/dashboard/node?node={{.Group.host}}">View {{.Group.host}} in Opserver</a>
            <a href="http://kibana.ds.stackexchange.com/app/kibana?#/discover?_g=(refreshInterval:(display:Off,pause:!f,value:0),time:(from:now-15m,mode:quick,to:now))&_a=(columns:!(_source),index:%5Blogstash-%5DYYYY.MM.DD,interval:auto,query:(query_string:(analyze_wildcard:!t,query:'logsource:{{.Group.host}}')),sort:!('@timestamp',desc))">View {{.Group.host}} in Kibana</a>
        {{end}}
    </p>
    <table>
        <tr>
            <td><strong>Key: </strong></td>
            <td>{{printf "%s%s" .Alert.Name  .Group }}</td>
        </tr>
        <tr>
            <td><strong>Incident: </strong></td>
            <td><a href="{{.Incident}}">#{{.Last.IncidentId}}</a></td>
        </tr>
    </table>
    <br/>
    {{if .Alert.Vars.notes}}
        <p><strong>Notes:</strong> {{html .Alert.Vars.notes}}</p>
    {{end}}
    {{if .Alert.Vars.additionalNotes}}
        <p>
        {{if not .Alert.Vars.notes}}
            <strong>Notes:</strong>
        {{end}}
        {{ html .Alert.Vars.additionalNotes }}</p>
    {{end}}
    `
}

Explicaciones:

  • <style>... : Aunque los bloques de estilo no son compatibles con el correo electrónico, bosun procesa los bloques de estilo y luego los inserta en el html. Así que esto es css compartido para cualquier plantilla que incluya esta plantilla.
  • El enlace .Ack lleva a una vista Bosun donde puede reconocer la alerta. El enlace .Rule lleva al editor de reglas de Bosun, que configura la plantilla, la regla y la hora de la alerta para que pueda modificar la alerta o ejecutarla en diferentes momentos.
  • {{if .Group.host}}... : .Group es el conjunto de etiquetas de la alerta. Entonces, cuando la expresión de advertencia o crítica tiene etiquetas como host = *, sabemos que la alerta se refiere a un host específico en nuestro entorno. Entonces mostramos algunos enlaces para alojar cosas específicas.
  • El nombre y la clave de la Alerta se incluyen para garantizar que al menos la información más básica esté en cualquier alerta
  • .Alert.Vars.notes esto se incluye así que si en alguna alerta alguien define las variables $notes , se mostrará en la alerta. Alienta a las personas a escribir notas que expliquen el propósito de la alerta y cómo interpretarla.
  • .Alert.Vars.additionalNotes está ahí en caso de que queramos definir una macro con notas, y luego tener instancias de esa macro con más notas agregadas a las notas de macro.