本文整理汇总了Golang中bosun/org/collect.StartTimer函数的典型用法代码示例。如果您正苦于以下问题:Golang StartTimer函数的具体用法?Golang StartTimer怎么用?Golang StartTimer使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了StartTimer函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: executeTemplates
func (s *Schedule) executeTemplates(state *State, event *Event, a *conf.Alert, r *RunHistory) {
state.Subject = ""
state.Body = ""
state.EmailBody = nil
state.EmailSubject = nil
state.Attachments = nil
if event.Status != StUnknown {
metric := "template.render"
//Render subject
endTiming := collect.StartTimer(metric, opentsdb.TagSet{"alert": a.Name, "type": "subject"})
subject, serr := s.ExecuteSubject(r, a, state, false)
if serr != nil {
slog.Infof("%s: %v", state.AlertKey(), serr)
}
endTiming()
//Render body
endTiming = collect.StartTimer(metric, opentsdb.TagSet{"alert": a.Name, "type": "body"})
body, _, berr := s.ExecuteBody(r, a, state, false)
if berr != nil {
slog.Infof("%s: %v", state.AlertKey(), berr)
}
endTiming()
//Render email body
endTiming = collect.StartTimer(metric, opentsdb.TagSet{"alert": a.Name, "type": "emailbody"})
emailbody, attachments, merr := s.ExecuteBody(r, a, state, true)
if merr != nil {
slog.Infof("%s: %v", state.AlertKey(), merr)
}
endTiming()
//Render email subject
endTiming = collect.StartTimer(metric, opentsdb.TagSet{"alert": a.Name, "type": "emailsubject"})
emailsubject, eserr := s.ExecuteSubject(r, a, state, true)
endTiming()
if serr != nil || berr != nil || merr != nil || eserr != nil {
var err error
endTiming = collect.StartTimer(metric, opentsdb.TagSet{"alert": a.Name, "type": "bad"})
subject, body, err = s.ExecuteBadTemplate(serr, berr, r, a, state)
endTiming()
if err != nil {
subject = []byte(fmt.Sprintf("unable to create template error notification: %v", err))
}
emailbody = body
attachments = nil
}
state.Subject = string(subject)
state.Body = string(body)
state.EmailBody = emailbody
state.EmailSubject = emailsubject
state.Attachments = attachments
}
}
示例2: GetActiveSilences
func (d *dataAccess) GetActiveSilences() ([]*models.Silence, error) {
defer collect.StartTimer("redis", opentsdb.TagSet{"op": "GetActiveSilences"})()
conn := d.GetConnection()
defer conn.Close()
now := time.Now().UTC()
vals, err := redis.Strings(conn.Do("ZRANGEBYSCORE", silenceIdx, now.Unix(), "+inf"))
if err != nil {
return nil, err
}
if len(vals) == 0 {
return nil, nil
}
silences, err := getSilences(vals, conn)
if err != nil {
return nil, err
}
filtered := make([]*models.Silence, 0, len(silences))
for _, s := range silences {
if s.Start.After(now) {
continue
}
filtered = append(filtered, s)
}
return filtered, nil
}
示例3: GetIncidentsStartingInRange
func (d *dataAccess) GetIncidentsStartingInRange(start, end time.Time) ([]*models.Incident, error) {
defer collect.StartTimer("redis", opentsdb.TagSet{"op": "GetIncidentsStartingInRange"})()
conn := d.GetConnection()
defer conn.Close()
ids, err := redis.Ints(conn.Do("ZRANGEBYSCORE", "incidentsByStart", start.UTC().Unix(), end.UTC().Unix()))
if err != nil {
return nil, err
}
args := make([]interface{}, len(ids)+1)
args[0] = "incidents"
for i := range ids {
args[i+1] = ids[i]
}
jsons, err := redis.Strings(conn.Do("HMGET", args...))
if err != nil {
return nil, err
}
incidents := make([]*models.Incident, len(jsons))
for i := range jsons {
inc := &models.Incident{}
if err = json.Unmarshal([]byte(jsons[i]), inc); err != nil {
return nil, err
}
incidents[i] = inc
}
return incidents, nil
}
示例4: ClearAll
//Things could forseeably get a bit inconsistent if concurrent changes happen in just the wrong way.
//Clear all should do a more thourogh cleanup to fully reset things.
func (d *dataAccess) ClearAll() error {
defer collect.StartTimer("redis", opentsdb.TagSet{"op": "ClearAll"})()
conn := d.GetConnection()
defer conn.Close()
alerts, err := redis.Strings(conn.Do("SMEMBERS", alertsWithErrors))
if err != nil {
return err
}
for _, a := range alerts {
if _, err := conn.Do(d.LCLEAR(), errorListKey(a)); err != nil {
return err
}
}
if _, err := conn.Do(d.SCLEAR(), alertsWithErrors); err != nil {
return err
}
if _, err := conn.Do(d.SCLEAR(), failingAlerts); err != nil {
return err
}
if _, err = conn.Do(d.LCLEAR(), errorEvents); err != nil {
return err
}
return nil
}
示例5: MarkAlertSuccess
func (d *dataAccess) MarkAlertSuccess(name string) error {
defer collect.StartTimer("redis", opentsdb.TagSet{"op": "MarkAlertSuccess"})()
conn := d.GetConnection()
defer conn.Close()
_, err := conn.Do("SREM", failingAlerts, name)
return err
}
示例6: ClearAlert
func (d *dataAccess) ClearAlert(name string) error {
defer collect.StartTimer("redis", opentsdb.TagSet{"op": "ClearAlert"})()
conn := d.GetConnection()
defer conn.Close()
_, err := conn.Do("SREM", alertsWithErrors, name)
if err != nil {
return err
}
_, err = conn.Do("SREM", failingAlerts, name)
if err != nil {
return err
}
_, err = conn.Do(d.LCLEAR(), errorListKey(name))
if err != nil {
return err
}
cmd, args := d.LMCLEAR(errorEvents, name)
_, err = conn.Do(cmd, args...)
if err != nil {
return err
}
return nil
}
示例7: GetFullErrorHistory
func (d *dataAccess) GetFullErrorHistory() (map[string][]*models.AlertError, error) {
defer collect.StartTimer("redis", opentsdb.TagSet{"op": "GetFullErrorHistory"})()
conn := d.GetConnection()
defer conn.Close()
alerts, err := redis.Strings(conn.Do("SMEMBERS", alertsWithErrors))
if err != nil {
return nil, err
}
results := make(map[string][]*models.AlertError, len(alerts))
for _, a := range alerts {
rows, err := redis.Strings(conn.Do("LRANGE", errorListKey(a), 0, -1))
if err != nil {
return nil, err
}
list := make([]*models.AlertError, len(rows))
for i, row := range rows {
ae := &models.AlertError{}
err = json.Unmarshal([]byte(row), ae)
if err != nil {
return nil, err
}
list[i] = ae
}
results[a] = list
}
return results, nil
}
示例8: PurgeSearchData
//This function not exposed on any public interface. See cmd/bosun/database/test/util/purge_search_data.go for usage.
func (d *dataAccess) PurgeSearchData(metric string, noop bool) error {
defer collect.StartTimer("redis", opentsdb.TagSet{"op": "PurgeSearchData"})()
conn := d.GetConnection()
defer conn.Close()
tagKeys, err := d.GetTagKeysForMetric(metric)
if err != nil {
return err
}
fmt.Println("HDEL", searchAllMetricsKey)
if !noop {
_, err = conn.Do("HDEL", searchAllMetricsKey, metric)
if err != nil {
return err
}
}
hashesToDelete := []string{
searchMetricTagSetKey(metric),
searchTagkKey(metric),
}
for tagk := range tagKeys {
hashesToDelete = append(hashesToDelete, searchTagvKey(metric, tagk))
}
cmd := d.HCLEAR()
for _, hash := range hashesToDelete {
fmt.Println(cmd, hash)
if !noop {
_, err = conn.Do(cmd, hash)
if err != nil {
return err
}
}
}
return nil
}
示例9: GetTagValues
func (d *dataAccess) GetTagValues(metric, tagK string) (map[string]int64, error) {
defer collect.StartTimer("redis", opentsdb.TagSet{"op": "GetTagValues"})()
conn := d.GetConnection()
defer conn.Close()
return stringInt64Map(conn.Do("HGETALL", searchTagvKey(metric, tagK)))
}
示例10: GetLatestIncident
func (d *dataAccess) GetLatestIncident(ak models.AlertKey) (*models.IncidentState, error) {
defer collect.StartTimer("redis", opentsdb.TagSet{"op": "GetLatestIncident"})()
conn := d.GetConnection()
defer conn.Close()
return d.getLatestIncident(ak, conn)
}
示例11: newPool
func newPool(server, password string, database int, isRedis bool) *redis.Pool {
return &redis.Pool{
MaxIdle: 3,
IdleTimeout: 240 * time.Second,
Dial: func() (redis.Conn, error) {
c, err := redis.Dial("tcp", server, redis.DialDatabase(database))
if err != nil {
return nil, err
}
if password != "" {
if _, err := c.Do("AUTH", password); err != nil {
c.Close()
return nil, err
}
}
if isRedis {
if _, err := c.Do("CLIENT", "SETNAME", "bosun"); err != nil {
c.Close()
return nil, err
}
}
return c, err
},
TestOnBorrow: func(c redis.Conn, t time.Time) error {
defer collect.StartTimer("redis", opentsdb.TagSet{"op": "Ping"})()
_, err := c.Do("PING")
return err
},
}
}
示例12: GetMetricsForTag
func (d *dataAccess) GetMetricsForTag(tagK, tagV string) (map[string]int64, error) {
defer collect.StartTimer("redis", opentsdb.TagSet{"op": "GetMetricsForTag"})()
conn := d.GetConnection()
defer conn.Close()
return stringInt64Map(conn.Do("HGETALL", searchMetricKey(tagK, tagV)))
}
示例13: Search_GetAllMetrics
func (d *dataAccess) Search_GetAllMetrics() (map[string]int64, error) {
defer collect.StartTimer("redis", opentsdb.TagSet{"op": "GetAllMetrics"})()
conn := d.GetConnection()
defer conn.Close()
return stringInt64Map(conn.Do("HGETALL", searchAllMetricsKey))
}
示例14: Search_GetTagKeysForMetric
func (d *dataAccess) Search_GetTagKeysForMetric(metric string) (map[string]int64, error) {
defer collect.StartTimer("redis", opentsdb.TagSet{"op": "GetTagKeysForMetric"})()
conn := d.GetConnection()
defer conn.Close()
return stringInt64Map(conn.Do("HGETALL", searchTagkKey(metric)))
}
示例15: Get
func (d *dataAccess) Get() redis.Conn {
closer := collect.StartTimer("redis", opentsdb.TagSet{"op": myCallerName()})
return &connWrapper{
Conn: d.pool.Get(),
closer: closer,
}
}