標題模板

在 Bosun 模板中可以引用其他模板。對於電子郵件通知,你可能有一個標題模板,用於在所有警報中顯示所需的內容。

標題模板

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

說明:

  • <style>...:雖然電子郵件中不支援樣式塊,但 bosun 會處理樣式塊,然後將它們內聯到 html 中。因此,這是包含此模板的任何模板的共享 css。
  • .Ack 連結將你帶到 Bosun 檢視,你可以在其中確認警報。.Rule 連結將你帶到 Bosun 的規則編輯器,設定警報的模板,規則和時間,以便你可以修改警報,或在不同時間執行警報。
  • {{if .Group.host}}....Group 是警報的標記集。所以當警告或暴擊表示式有像 host = *這樣的標籤時,我們知道警報是指我們環境中的特定主機。因此,我們會顯示一些主持特定事物的連結。
  • 包含警報名稱和金鑰,以確保至少最基本的資訊在任何警報中
  • .Alert.Vars.notes 這包括在內,所以如果在任何警報中有人定義了它將在警報中顯示的 $notes 變數。鼓勵人們寫下解釋警報目的的說明以及如何解釋警報。
  • 如果我們想要用註釋定義一個巨集,然後讓那個巨集的例項新增到巨集註釋中的更多註釋,那麼 .Alert.Vars.additionalNotes 就是存在的。