本文整理匯總了Golang中github.com/mperham/inspeqtor/util.Warn函數的典型用法代碼示例。如果您正苦於以下問題:Golang Warn函數的具體用法?Golang Warn怎麽用?Golang Warn使用的例子?那麽, 這裏精選的函數代碼示例或許可以為您提供幫助。
在下文中一共展示了Warn函數的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: check
func check(jobs map[string]*Job) time.Duration {
min := time.Hour
for _, j := range jobs {
now := time.Now()
due := j.LastRun.Add(j.Interval)
if due.After(now) && min > due.Sub(now) {
// calculate the delay time until the next job check
min = due.Sub(now)
}
if due.Before(now) && j.state == inspeqtor.Ok {
util.Warn("Recurring job \"%s\" is overdue", j.JobName)
j.state = inspeqtor.Triggered
err := j.alert(JobOverdue)
if err != nil {
util.Warn(fmt.Sprintf("Error firing cron job alert: %s", err.Error()))
}
}
if !due.Before(now) && j.state == inspeqtor.Triggered {
util.Info("Recurring job \"%s\" has recovered", j.JobName)
err := j.alert(JobRan)
if err != nil {
util.Warn(fmt.Sprintf("Error firing cron job alert: %s", err.Error()))
}
j.state = inspeqtor.Ok
}
}
return min
}
示例2: reload
func reload(i *Inspeqtor) {
util.Info(Name + " reloading")
newi, err := New(i.RootDir, i.SocketPath)
if err != nil {
util.Warn("Unable to reload: %s", err.Error())
return
}
err = newi.Parse()
if err != nil {
util.Warn("Unable to reload: %s", err.Error())
return
}
// we're reloading and newcopy will become the new
// singleton. Pro hooks into this to reload its features too.
for _, callback := range Reloaders {
err := callback(i, newi)
if err != nil {
util.Warn("Unable to reload: %s", err.Error())
return
}
}
// TODO proper reloading would not throw away the existing metric data
// in i but defining new metrics can change the storage tree. Implement
// deep metric tree ring buffer sync if possible in basicReloader?
i.Shutdown()
newi.Start()
}
示例3: runCli
func (rs *redisSource) runCli(funk executor) (metrics.Map, error) {
sout, err := funk("redis-cli", rs.buildArgs(), nil)
lines, err := util.ReadLines(sout)
if err != nil {
return nil, err
}
values := map[string]float64{}
for _, line := range lines {
if line == "" || line[0] == '#' {
continue
}
parts := strings.Split(line, ":")
if rs.metrics[parts[0]] {
val, err := strconv.ParseInt(parts[1], 10, 64)
if err != nil {
return nil, errors.New("Invalid metric input for '" + line + "': " + err.Error())
}
values[parts[0]] = float64(val)
}
}
if len(rs.metrics) > len(values) {
for k := range rs.metrics {
if _, ok := values[k]; !ok {
util.Warn("Could not find metric redis(%s), did you spell it right?", k)
}
}
}
return values, nil
}
示例4: Collect
func (h *Host) Collect(silenced bool, completeCallback func(Checkable)) {
defer completeCallback(h)
err := h.Metrics().Collect(0)
if err != nil {
util.Warn("Error collecting host metrics: %s", err.Error())
}
}
示例5: Resolve
/*
Resolve each defined service to its managing init system. Called only
at startup, this is what maps services to init and fires ProcessDoesNotExist events.
*/
func (svc *Service) Resolve(mgrs []services.InitSystem) error {
for _, sm := range mgrs {
// TODO There's a bizarre race condition here. Figure out
// why this is necessary. We shouldn't be multi-threaded yet.
if sm == nil {
continue
}
ps, err := sm.LookupService(svc.Name())
if err != nil {
serr := err.(*services.ServiceError)
if serr.Err == services.ErrServiceNotFound {
util.Debug(sm.Name() + " doesn't have " + svc.Name())
continue
}
return err
}
util.Info("Found %s/%s with status %s", sm.Name(), svc.Name(), ps)
svc.Manager = sm
svc.Transition(ps, func(et EventType) {
counters.Add("events", 1)
err = svc.EventHandler.Trigger(&Event{et, svc, nil})
if err != nil {
util.Warn("Error firing event: %s", err.Error())
}
})
break
}
if svc.Manager == nil {
return fmt.Errorf("Could not find service %s, did you misspell it?", svc.Name())
}
return nil
}
示例6: recoveredHandler
func recoveredHandler(rule *Rule, tripped bool) *Event {
if tripped && rule.TrippedCount == rule.CycleCount {
util.Warn("%s[%s] flapped. Current value = %.1f", rule.EntityName(), rule.Metric(), rule.CurrentValue)
rule.State = Triggered
return nil
}
rule.State = Ok
return &Event{RuleRecovered, rule.Entity, rule}
}
示例7: safelyAccept
func (i *Inspeqtor) safelyAccept() bool {
defer func() {
if err := recover(); err != nil {
// TODO Is there a way to print out the backtrace of the goroutine where it crashed?
util.Warn("Command crashed:\n%s", err)
}
}()
return i.acceptCommand()
}
示例8: Get
func (store *storage) Get(family string, name string) float64 {
metric, _ := store.find(family, name)
if metric == nil {
// This can happen when using an Inspeqtor Pro .inq file
// with Inspeqtor, if the metric only exists in Pro (e.g. memstats)
util.Warn("BUG: Metric %s:%s does not exist", family, name)
return 0
}
return metric.Get()
}
示例9: parseValue
func parseValue(ast ast.Config, store *uint, name string, def uint) {
if val, has := ast.Variables[name]; has {
ival, err := strconv.ParseUint(val, 10, 32)
if err != nil {
util.Warn("Invalid %s: %d", name, val)
ival = uint64(def)
}
*store = uint(ival)
}
}
示例10: okHandler
func okHandler(rule *Rule, tripped bool) *Event {
if tripped && rule.TrippedCount == rule.CycleCount {
util.Warn("%s[%s] triggered. Current value = %.1f", rule.EntityName(), rule.Metric(), rule.CurrentValue)
rule.State = Triggered
return &Event{RuleFailed, rule.Entity, rule}
}
if tripped {
util.Debug("%s[%s] tripped. Current: %.1f, Threshold: %.1f", rule.EntityName(), rule.Metric(), rule.CurrentValue, rule.Threshold)
}
return nil
}
示例11: Shutdown
func (i *Inspeqtor) Shutdown() {
close(i.Stopping)
if i.Socket != nil {
err := i.Socket.Close()
if err != nil {
util.Warn(err.Error())
}
}
if i.Expose != nil {
err := i.Expose.Close()
if err != nil {
util.Warn(err.Error())
}
}
i.Fire("shutdown")
// let other goroutines log their exit
time.Sleep(time.Millisecond)
}
示例12: Start
func (i *Inspeqtor) Start() {
util.Debug("Starting command socket")
err := i.openSocket(i.SocketPath)
if err != nil {
util.Warn("Could not create Unix socket: %s", err.Error())
exit(i)
}
go func() {
for {
if !i.safelyAccept() {
util.Debug("Shutting down command socket")
return
}
}
}()
// if expose_port is 0, disable the feature altogether
if i.GlobalConfig.ExposePort != 0 {
sock, err := net.Listen("tcp", fmt.Sprintf("localhost:%d", i.GlobalConfig.ExposePort))
if err != nil {
util.Warn("Could not listen on port %d: %s", i.GlobalConfig.ExposePort, err.Error())
exit(i)
}
i.Expose = sock
go func() {
// TODO How do we error handling here?
util.Info("Expose now available at port %d", i.GlobalConfig.ExposePort)
err := http.Serve(i.Expose, nil)
// Don't log an "error" when we shut down normally and close the socket
if err != nil && !strings.Contains(err.Error(), "use of closed network") {
util.Warn("HTTP server error: %s", err.Error())
}
}()
}
util.Debug("Starting main run loop")
go i.runLoop()
Singleton = i
}
示例13: Detect
func Detect() []InitSystem {
var inits []InitSystem
for name, funk := range SupportedInits {
sm, err := funk()
if err != nil {
util.Warn("Couldn't detect %s: %s", name, err.Error())
continue
}
if sm != nil {
inits = append(inits, sm)
}
}
if len(inits) == 0 {
util.Warn("No init system detected. Inspeqtor cannot control any services!")
}
return inits
}
示例14: Reload
func (svc *Service) Reload() error {
go func() {
util.Debug("Reloading %s", svc.Name())
err := svc.Manager.Reload(svc.Name())
if err != nil {
util.Warn(err.Error())
} else {
util.DebugDebug("Reloaded %s", svc.Name())
}
}()
return nil
}
示例15: parseJobs
func parseJobs(global *inspeqtor.ConfigFile, confDir string) (map[string]*Job, error) {
util.Debug("Parsing jobs in " + confDir)
files, err := filepath.Glob(confDir + "/jobs.d/*.inq")
if err != nil {
return nil, err
}
jobs := map[string]*Job{}
for _, filename := range files {
util.DebugDebug("Parsing " + filename)
data, err := ioutil.ReadFile(filename)
if err != nil {
return nil, err
}
s := lexer.NewLexer([]byte(data))
p := parser.NewParser()
obj, err := p.Parse(s)
if err != nil {
util.Warn("Unable to parse " + filename + ": " + err.Error())
continue
}
astcontent := obj.(*ast.Content)
for _, astjob := range astcontent.Jobs {
if _, ok := jobs[astjob.Name]; ok {
return nil, fmt.Errorf("Duplicate job %s", astjob.Name)
}
j := New(astjob.Name, astjob.Interval, astcontent.Parameters)
owner := j.Parameters["owner"]
route := global.AlertRoutes[owner]
if owner == "" && route == nil {
return nil, fmt.Errorf("No default alert route configured!")
}
if route == nil {
return nil, fmt.Errorf("No such alert route: %s", owner)
}
alert, err := inspeqtor.Actions["alert"](j, route)
if err != nil {
return nil, err
}
j.alerter = alert
jobs[astjob.Name] = j
}
}
return jobs, nil
}