§±§Ý§Ñ§Ô§Ú§ß - Go §á§Ñ§Ü§Ö§ä, §Ü§à§ä§à§â§í§Û §à§á§â§Ö§Õ§Ö§Ý§ñ§Ö§ä §ã§ä§â§å§Ü§ä§å§â§å §Ú §â§Ö§Ñ§Ý§Ú§Ù§å§Ö§ä §à§Õ§Ú§ß §Ú§Ý§Ú §ß§Ö§ã§Ü§à§Ý§î§Ü§à §Ú§ß§ä§Ö§â§æ§Ö§Û§ã§à§Ó §á§Ý§Ñ§Ô§Ú§ß§Ñ (Exporter, Collector, Runner, Watcher):
Exporter - §á§â§à§ã§ä§Ö§Û§ê§Ú§Û §Ú§ß§ä§Ö§â§æ§Ö§Û§ã, §Ü§à§ä§à§â§í§Û §Ó§í§á§à§Ý§ß§ñ§Ö§ä §à§á§â§à§ã §Ú §Ó§à§Ù§Ó§â§Ñ§ë§Ñ§Ö§ä §Ù§ß§Ñ§é§Ö§ß§Ú§Ö (§Ù§ß§Ñ§é§Ö§ß§Ú§ñ), §ß§Ú§é§Ö§Ô§à, §à§ê§Ú§Ò§Ü§å. §°§ß §á§â§Ú§ß§Ú§Þ§Ñ§Ö§ä §á§â§Ö§Õ§Ó§Ñ§â§Ú§ä§Ö§Ý§î§ß§à §à§Ò§â§Ñ§Ò§à§ä§Ñ§ß§ß§í§Ö §Ü§Ý§ð§é §ï§Ý§Ö§Þ§Ö§ß§ä§Ñ §Õ§Ñ§ß§ß§í§ç, §á§Ñ§â§Ñ§Þ§Ö§ä§â§í §Ú §Ü§à§ß§ä§Ö§Ü§ã§ä. §ª§ß§ä§Ö§â§æ§Ö§Û§ã Exporter §ñ§Ó§Ý§ñ§Ö§ä§ã§ñ §Ö§Õ§Ú§ß§ã§ä§Ó§Ö§ß§ß§í§Þ §Ú§ß§ä§Ö§â§æ§Ö§Û§ã§à§Þ, §Ü §Ü§à§ä§à§â§à§Þ§å §Þ§à§Ø§ß§à §á§à§Ý§å§é§Ú§ä§î §Õ§à§ã§ä§å§á §ß§Ñ §Ü§à§ß§Ü§å§â§Ö§ß§ä§ß§à§Û §à§ã§ß§à§Ó§Ö. §¥§à§ã§ä§å§á §Ü§à §Ó§ã§Ö§Þ §à§ã§ä§Ñ§Ý§î§ß§í§Þ §Ú§ß§ä§Ö§â§æ§Ö§Û§ã§Ñ§Þ §á§Ý§Ñ§Ô§Ú§ß§Ñ §ï§Ü§ã§Ü§Ý§ð§Ù§Ú§Ó§ß§í§Û §Ú §ß§Ö§Ý§î§Ù§ñ §Ó§í§Ù§Ó§Ñ§ä§î §ß§Ú§Ü§Ñ§Ü§à§Û §Þ§Ö§ä§à§Õ, §Ü§à§Ô§Õ§Ñ §á§Ý§Ñ§Ô§Ú§ß §å§Ø§Ö §Ó§í§á§à§Ý§ß§ñ§Ö§ä §Ü§Ñ§Ü§å§ð-§ß§Ú§Ò§å§Õ§î §Ù§Ñ§Õ§Ñ§é§å. §´§Ñ§Ü§Ø§Ö §Ú§Þ§Ö§Ö§ä§ã§ñ §à§Ô§â§Ñ§ß§Ú§é§Ö§ß§Ú§Ö §Ó 100 §Þ§Ñ§Ü§ã§Ú§Þ§Ñ§Ý§î§ß§í§ç §á§Ñ§â§Ñ§Ý§Ý§Ö§Ý§î§ß§í§ç §Ó§í§Ù§à§Ó§à§Ó Export() §ß§Ñ §Ü§Ñ§Ø§Õ§í§Û §á§Ý§Ñ§Ô§Ú§ß, §ï§ä§à §Ù§ß§Ñ§é§Ö§ß§Ú§Ö §Þ§à§Ø§ß§à §å§Þ§Ö§ß§î§ê§Ú§ä§î, §á§à §Þ§Ö§â§Ö §ß§Ö§à§Ò§ç§à§Õ§Ú§Þ§à§ã§ä§Ú, §Ü§Ñ§Ø§Õ§à§Þ§å §á§Ý§Ñ§Ô§Ú§ß§å §à§ä§Õ§Ö§Ý§î§ß§à.
Collector §Ú§ã§á§à§Ý§î§Ù§å§Ö§ä§ã§ñ, §Ü§à§Ô§Õ§Ñ §á§Ý§Ñ§Ô§Ú§ß§å §ä§â§Ö§Ò§å§Ö§ä§ã§ñ §ã§Ò§à§â §Õ§Ñ§ß§ß§í§ç §ß§Ñ §à§ã§ß§à§Ó§Ö §â§Ö§Ô§å§Ý§ñ§â§ß§í§ç §Ú§ß§ä§Ö§â§Ó§Ñ§Ý§à§Ó. §¿§ä§à§ä §Ú§ß§ä§Ö§â§æ§Ö§Û§ã §à§Ò§í§é§ß§à §Ú§ã§á§à§Ý§î§Ù§å§Ö§ä§ã§ñ §ã§à§Ó§Þ§Ö§ã§ä§ß§à §ã Exporter §Ú§ß§ä§Ö§â§æ§Ö§Û§ã§à§Þ §Õ§Ý§ñ §ï§Ü§ã§á§à§â§ä§Ñ §ã§à§Ò§â§Ñ§ß§ß§í§ç §Õ§Ñ§ß§ß§í§ç.
§ª§ß§ä§Ö§â§æ§Ö§Û§ã Runner §á§â§Ö§Õ§à§ã§ä§Ñ§Ó§Ý§ñ§Ö§ä §ã§â§Ö§Õ§ã§ä§Ó§Ñ §Õ§Ý§ñ §Ó§í§á§à§Ý§ß§Ö§ß§Ú§ñ §ß§Ö§Ü§à§ä§à§â§à§Û §Ú§ß§Ú§è§Ú§Ñ§Ý§Ú§Ù§Ñ§è§Ú§Ú §á§â§Ú §Ù§Ñ§á§å§ã§Ü§Ö §á§Ý§Ñ§Ô§Ú§ß§Ñ (§Ñ§Ü§ä§Ú§Ó§Ú§Ù§Ñ§è§Ú§Ú) §Ú §Õ§Ö§Ú§ß§Ú§è§Ú§Ñ§Ý§Ú§Ù§Ñ§è§Ú§Ú §á§â§Ú §à§ã§ä§Ñ§ß§à§Ó§Ü§Ö §á§Ý§Ñ§Ô§Ú§ß§Ñ (§Õ§Ö§Ñ§Ü§ä§Ú§Ó§Ñ§è§Ú§Ú). §¯§Ñ§á§â§Ú§Þ§Ö§â, §á§Ý§Ñ§Ô§Ú§ß §Þ§à§Ø§Ö§ä §Ù§Ñ§á§å§ã§Ü§Ñ§ä§î / §à§ã§ä§Ñ§ß§Ñ§Ó§Ý§Ú§Ó§Ñ§ä§î §Ü§Ñ§Ü§Ú§Ö-§Ý§Ú§Ò§à §æ§à§ß§à§Ó§í§Ö goroutine, §â§Ö§Ñ§Ý§Ú§Ù§å§ñ §Ù§Ñ§Õ§å§Þ§Ñ§ß§ß§à§Ö §Ó Runner §Ú§ß§ä§Ö§â§æ§Ö§Û§ã§Ö.
Watcher §á§à§Ù§Ó§à§Ý§ñ§Ö§ä §á§Ý§Ñ§Ô§Ú§ß§å §â§Ö§Ñ§Ý§Ú§Ù§à§Ó§Ñ§ä§î §ã§Ó§à§Û §ã§à§Ò§ã§ä§Ó§Ö§ß§ß§í§Û §à§á§â§à§ã §Þ§Ö§ä§â§Ú§Ü, §Ò§Ö§Ù §Ú§ã§á§à§Ý§î§Ù§à§Ó§Ñ§ß§Ú§ñ §Ó§ß§å§ä§â§Ö§ß§ß§Ö§Ô§à §á§Ý§Ñ§ß§Ú§â§à§Ó§ë§Ú§Ü§Ñ §Ñ§Ô§Ö§ß§ä§Ñ, §ß§Ñ§á§â§Ú§Þ§Ö§â, §Ó §á§Ý§Ñ§Ô§Ú§ß§Ñ§ç §ß§Ñ §à§ã§ß§à§Ó§Ö §ä§â§Ñ§á§à§Ó.
§±§à §å§Þ§à§Ý§é§Ñ§ß§Ú§ð §á§Ý§Ñ§Ô§Ú§ß§í §ß§Ö§Ñ§Ü§ä§Ú§Ó§ß§í §Ú §Ñ§Ü§ä§Ú§Ó§Ú§â§å§ð§ä§ã§ñ §ä§à§Ý§î§Ü§à §Ü§à§Ô§Õ§Ñ §Ü§Ñ§Ü§Ñ§ñ-§Ý§Ú§Ò§à §Þ§Ö§ä§â§Ú§Ü§Ñ, §á§â§Ö§Õ§Ý§Ñ§Ô§Ñ§Ö§Þ§Ñ§ñ §á§Ý§Ñ§Ô§Ú§ß§à§Þ, §ß§Ñ§é§Ú§ß§Ñ§Ö§ä §ß§Ñ§Ò§Ý§ð§Õ§Ñ§ä§î§ã§ñ.
§±§Ý§Ñ§Ô§Ú§ß§í §â§Ñ§ã§á§à§Ý§Ñ§Ô§Ñ§ð§ä§ã§ñ §Ó §Õ§Ö§â§Ö§Ó§Ö §Õ§Ú§â§Ö§Ü§ä§à§â§Ú§Ú §á§Ý§Ñ§Ô§Ú§ß§à§Ó, §ã§Ô§â§å§á§á§Ú§â§à§Ó§Ñ§ß§ß§í§Ö §á§à §ã§Þ§í§ã§Ý§å, §ß§Ñ§á§â§Ú§Þ§Ö§â plugins/system/uptime/uptime.go
.
§±§Ý§Ñ§Ô§Ú§ß §Õ§à§Ý§Ø§Ö§ß §Ú§Þ§á§à§â§ä§Ú§â§à§Ó§Ñ§ä§î go/internal/plugin
§á§Ñ§Ü§Ö§ä.
§±§Ý§Ñ§Ô§Ú§ß §Õ§à§Ý§Ø§Ö§ß §à§á§â§Ö§Õ§Ö§Ý§ñ§ä§î §ã§ä§â§å§Ü§ä§å§â§å §Ú §Ó§ã§ä§â§Ñ§Ú§Ó§Ñ§ä§î plugin.Base
§ã§ä§â§å§Ü§ä§å§â§å.
§±§Ý§Ñ§Ô§Ú§ß §Õ§à§Ý§Ø§Ö§ß §â§Ö§Ñ§Ý§Ú§Ù§à§Ó§Ñ§ä§î §à§Õ§Ú§ß §Ú§Ý§Ú §ß§Ö§ã§Ü§à§Ý§î§Ü§à §Ú§ß§ä§Ö§â§æ§Ö§Û§ã§à§Ó §á§Ý§Ñ§Ô§Ú§ß§Ñ.
func (p *Plugin) Export(key string, params []string) (result interface{}, err error) {
if len(params) > 0 {
p.Debugf("received %d parameters while expected none", len(params))
return nil, errors.New("Too many parameters")
}
return time.Now().Format(time.RFC3339)
}
§±§Ý§Ñ§Ô§Ú§ß §Õ§à§Ý§Ø§Ö§ß §Ù§Ñ§â§Ö§Ô§Ú§ã§ä§â§Ú§â§à§Ó§Ñ§ä§î §ã§Ö§Ò§ñ §Ó §á§â§à§è§Ö§ã§ã§Ö §Ú§ß§Ú§è§Ú§Ñ§Ý§Ú§Ù§Ñ§è§Ú§Ú.
func init() {
plugin.RegisterMetric(&impl, "Time", "system.time", "Returns time string in RFC 3999 format.")
}
§Ô§Õ§Ö RegisterMetric §á§Ñ§â§Ñ§Þ§Ö§ä§â§í:
§¦§ã§Ý§Ú §ä§â§Ö§Ò§å§Ö§ä§ã§ñ §Ø§å§â§ß§Ñ§Ý§Ú§â§à§Ó§Ñ§ß§Ú§Ö, §á§Ý§Ñ§Ô§Ú§ß §Õ§à§Ý§Ø§Ö§ß §Ú§ã§á§à§Ý§î§Ù§à§Ó§Ñ§ä§î §æ§å§ß§Ü§è§Ú§à§ß§Ñ§Ý §Ø§å§â§ß§Ñ§Ý§Ú§â§à§Ó§Ñ§ß§Ú§ñ, §Ü§à§ä§à§â§í§Û §á§à§ã§ä§Ñ§Ó§Ý§ñ§Ö§ä§ã§ñ plugin.Base (§ã§Þ§à§ä§â§Ú§ä§Ö §á§â§Ú§Þ§Ö§â §Ó§í§ê§Ö). §±§à §ã§å§ä§Ú §ï§ä§à §á§â§à§ã§ä§à §à§Ò§à§Ý§à§é§Ü§Ñ §Ó§à§Ü§â§å§Ô §ã§ä§Ñ§ß§Õ§Ñ§â§ä§ß§à§Ô§à §Ø§å§â§ß§Ñ§Ý§Ú§â§à§Ó§Ñ§ß§Ú§ñ, §à§Õ§ß§Ñ§Ü§à, §Ü §ã§à§à§Ò§ë§Ö§ß§Ú§ñ§Þ §Ó §Ø§å§â§ß§Ñ§Ý§Ö §Ò§å§Õ§Ö§ä §Õ§à§Ò§Ñ§Ó§Ý§ñ§ä§î§ã§ñ §á§â§Ö§æ§Ú§Ü§ã [<§Ú§Þ§ñ §á§Ý§Ñ§Ô§Ú§ß§Ñ>].