Bosun Grafico o graficoTutti utilizzano query in linea o dinamiche


Esempio

Le query grafico possono essere definite in linea se non si desidera utilizzare una variabile di avviso.

template graph.template {
    subject = ...

    body = `{{template "header" .}}

    <strong>Graph With Inline Query</strong>
    <div>{{.Graph "q(\"avg:300s-avg:os.mem.percent_free{host=specifichost}\", \"1d\", \"\")" "Free Memory in GB"}}</div>

    <strong>GraphAll with Inline Query</strong>
    <div>{{.GraphAll "q(\"avg:300s-avg:os.mem.percent_free{host=host1|host2|host3}\", \"1d\", \"\")" "All Systems Free Memory in GB"}}</div>

    `
}

A volte potresti voler creare la query per un grafico in modo dinamico nel modello stesso combinando una o più variabili. Ad esempio, un avviso di down di host potrebbe voler includere la metrica del ping degli host noti di Bosun usando il tag dst_host.

template host.down {
    subject = ...

    body = `{{template "header" .}}

    <strong>Graph from one variable</strong>
    <div>{{printf "q(\"sum:bosun.ping.timeout{dst_host=%s}\", \"8h\", \"\")" (.Group.host) | .Graph}}</div>

    <strong>Graph from multiple variables</strong>
    <div>{{printf "q(\"sum:%s{host=%s,anothertag=%s}\", \"8h\", \"\")" "some.metric.name" .Group.host "anothervalue" | .Graph}}</div>
    `
}

L'istruzione printf genererà q("sum:bosun.ping.timeout{dst_host=alerthostname}", "8h", "") quando q("sum:bosun.ping.timeout{dst_host=alerthostname}", "8h", "") innesca un avviso e quindi lo usa per creare il grafico nella notifica.