本文整理汇总了Golang中bosun/org/opentsdb.TagSet.Merge方法的典型用法代码示例。如果您正苦于以下问题:Golang TagSet.Merge方法的具体用法?Golang TagSet.Merge怎么用?Golang TagSet.Merge使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类bosun/org/opentsdb.TagSet
的用法示例。
在下文中一共展示了TagSet.Merge方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: parseTcollectorValue
// parseTcollectorValue parses a tcollector-style line into a data point.
func parseTcollectorValue(line string) (*opentsdb.DataPoint, error) {
sp := strings.Fields(line)
if len(sp) < 3 {
return nil, fmt.Errorf("bad line: %s", line)
}
ts, err := strconv.ParseInt(sp[1], 10, 64)
if err != nil {
return nil, fmt.Errorf("bad timestamp: %s", sp[1])
}
val, err := strconv.ParseFloat(sp[2], 64)
if err != nil {
return nil, fmt.Errorf("bad value: %s", sp[2])
}
if !opentsdb.ValidTag(sp[0]) {
return nil, fmt.Errorf("bad metric: %s", sp[0])
}
dp := opentsdb.DataPoint{
Metric: sp[0],
Timestamp: ts,
Value: val,
}
tags := opentsdb.TagSet{}
for _, tag := range sp[3:] {
ts, err := opentsdb.ParseTags(tag)
if err != nil {
return nil, fmt.Errorf("bad tag, metric %s: %v: %v", sp[0], tag, err)
}
tags.Merge(ts)
}
setExternalTags(tags)
dp.Tags = tags
return &dp, nil
}
示例2: ApplyTags
func (to *TagOverride) ApplyTags(t opentsdb.TagSet) {
if to.tags != nil {
t = t.Merge(to.tags)
}
}
示例3: c_varnish_unix
func c_varnish_unix() (opentsdb.MultiDataPoint, error) {
var md opentsdb.MultiDataPoint
const metric = "varnish."
r, err := util.Command(5*time.Second, nil, "varnishstat", "-j")
if err != nil {
return nil, err
}
var stats varnishStats
if err := json.NewDecoder(r).Decode(&stats); err != nil {
return nil, err
}
for name, raw := range stats {
if name == "timestamp" {
continue
}
var v varnishStat
if err := json.Unmarshal(raw, &v); err != nil {
slog.Errorln("varnish parser error:", name, err)
continue
}
ts := opentsdb.TagSet{}
// special case for backend stats. extract backend name, host and port, put
// them in tags and remove them in name.
// the format is like "name(host,,port)" for the "ident" field of "VBE" type
if v.Type == "VBE" {
subtype := v.SubType
name = strings.Replace(name, "."+subtype, "", -1)
idx := strings.Index(subtype, "(")
if idx < 0 || len(subtype)-idx < 4 {
// output format changed, ignore
continue
}
ss := strings.Split(subtype[idx+1:len(subtype)-1], ",")
if len(ss) != 3 {
// output format changed, ignore
continue
}
ts.Merge(opentsdb.TagSet{"backend": subtype[:idx]})
ts.Merge(opentsdb.TagSet{"endpoint": ss[0] + "_" + ss[2]})
}
rate := metadata.RateType(metadata.Gauge)
if flag := v.Flag; flag == "a" || flag == "c" {
rate = metadata.Counter
}
unit := metadata.Unit(metadata.Count)
if v.Format == "B" {
unit = metadata.Bytes
}
Add(&md, metric+strings.ToLower(name), v.Value, ts, rate, unit, v.Desc)
}
return md, nil
}