本节重点介绍 :
静默
作用
先告警后静默:持续发送的告警停止发送 先配置静默:上线或者运维操作会导致触发一大波告警,提前创建静默消息。防止告警风暴
静默接口
调用静默的代码
package mainimport ( "bytes" "encoding/json" "github.com/prometheus /alertmanager/pkg/labels" "github.com/prometheus /alertmanager/types" "io/ioutil" "log" "net/http" "time"
) func createSilence ( alertMUrl string ) { matchers := labels. Matchers{ } m1 := & labels. Matcher{ Type: labels. MatchEqual, Name: "node_name" , Value: "abc" , } matchers = append ( matchers, m1) si := types. Silence{ ID: "" , Matchers: matchers, StartsAt: time. Now ( ) , EndsAt: time. Now ( ) . Add ( 3 * time. Hour * 24 ) , CreatedBy: "xiaoyi" , Comment: "小乙创建的告警静默" , Status: types. SilenceStatus{ } , } jsonStr, _ := json. Marshal ( si) req, err := http. NewRequest ( "POST" , alertMUrl, bytes. NewBuffer ( jsonStr) ) if err != nil { return } req. Header. Set ( "Content-Type" , "application/json" ) client := & http. Client{ } resp, err := client. Do ( req) if err != nil { log. Printf ( "[http.post.request.err][url:%v][err:%v]" , alertMUrl, err) return } defer resp. Body. Close ( ) log. Printf ( "response Status:%v" , resp. Status) log. Printf ( "response Headers:%v" , resp. Header) body, _ := ioutil. ReadAll ( resp. Body) log. Printf ( "response Body:%v" , string ( body) ) } func main ( ) { alertMUrl := "http://172.20.70.215:9093/api/v1/silences" createSilence ( alertMUrl) }
解读,构造github.com/prometheus /alertmanager/types下的Silence对象 调用post发送即可
运行程序后查看alertmanager页面
path http://172.20.70.215:9093/#/silences 举例图片
prometheus _alertmanager_95">创建完静默后,重启prometheus 和alertmanager
查看是否会被静默 举例图片
本节重点总结 :