本文整理汇总了Golang中bosun/org/util.ReadCommand函数的典型用法代码示例。如果您正苦于以下问题:Golang ReadCommand函数的具体用法?Golang ReadCommand怎么用?Golang ReadCommand使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了ReadCommand函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: metaLinuxVersion
func metaLinuxVersion() {
_ = util.ReadCommand(func(line string) error {
AddMeta("", nil, "uname", line, true)
return nil
}, "uname", "-a")
_ = util.ReadCommand(func(line string) error {
fields := strings.Fields(line)
hasNum := false
for i := 0; i < len(fields); {
if strings.HasPrefix(fields[i], `\`) {
fields = append(fields[:i], fields[i+1:]...)
} else {
if v, _ := strconv.ParseFloat(fields[i], 32); v > 0 {
hasNum = true
}
i++
}
}
if !hasNum {
return nil
}
AddMeta("", nil, "version", strings.Join(fields, " "), true)
return nil
}, "cat", "/etc/issue")
}
示例2: c_meta_darwin_version
func c_meta_darwin_version() (opentsdb.MultiDataPoint, error) {
var md opentsdb.MultiDataPoint
util.ReadCommand(func(line string) error {
metadata.AddMeta("", nil, "uname", line, true)
return nil
}, "uname", "-a")
var name, vers, build string
util.ReadCommand(func(line string) error {
sp := strings.SplitN(line, ":", 2)
if len(sp) != 2 {
return nil
}
v := strings.TrimSpace(sp[1])
switch sp[0] {
case "ProductName":
name = v
case "ProductVersion":
vers = v
case "BuildVersion":
build = v
}
return nil
}, "sw_vers")
if name != "" && vers != "" && build != "" {
metadata.AddMeta("", nil, "version", fmt.Sprintf("%s.%s", vers, build), true)
metadata.AddMeta("", nil, "versionCaption", fmt.Sprintf("%s %s", name, vers), true)
}
return md, nil
}
示例3: metaDarwinVersion
func metaDarwinVersion() {
util.ReadCommand(func(line string) error {
AddMeta("", nil, "uname", line, true)
return nil
}, "uname", "-a")
var name, vers, build string
util.ReadCommand(func(line string) error {
sp := strings.SplitN(line, ":", 2)
if len(sp) != 2 {
return nil
}
v := strings.TrimSpace(sp[1])
switch sp[0] {
case "ProductName":
name = v
case "ProductVersion":
vers = v
case "BuildVersion":
build = v
}
return nil
}, "sw_vers")
if name != "" && vers != "" && build != "" {
AddMeta("", nil, "version", fmt.Sprintf("%s.%s", vers, build), true)
AddMeta("", nil, "versionCaption", fmt.Sprintf("%s %s", name, vers), true)
}
}
示例4: c_dfstat_blocks_linux
func c_dfstat_blocks_linux() (opentsdb.MultiDataPoint, error) {
var md opentsdb.MultiDataPoint
err := util.ReadCommand(func(line string) error {
fields := strings.Fields(line)
// TODO: support mount points with spaces in them. They mess up the field order
// currently due to df's columnar output.
if len(fields) != 6 || !IsDigit(fields[2]) {
return nil
}
fs := fields[0]
mount := fields[5]
tags := opentsdb.TagSet{"mount": mount}
os_tags := opentsdb.TagSet{"disk": mount}
metric := "linux.disk.fs."
ometric := "os.disk.fs."
if removable_fs(fs) {
metric += "rem."
ometric += "rem."
}
Add(&md, metric+"space_total", fields[1], tags, metadata.Gauge, metadata.Bytes, osDiskTotalDesc)
Add(&md, metric+"space_used", fields[2], tags, metadata.Gauge, metadata.Bytes, osDiskUsedDesc)
Add(&md, metric+"space_free", fields[3], tags, metadata.Gauge, metadata.Bytes, osDiskFreeDesc)
Add(&md, ometric+"space_total", fields[1], os_tags, metadata.Gauge, metadata.Bytes, osDiskTotalDesc)
Add(&md, ometric+"space_used", fields[2], os_tags, metadata.Gauge, metadata.Bytes, osDiskUsedDesc)
Add(&md, ometric+"space_free", fields[3], os_tags, metadata.Gauge, metadata.Bytes, osDiskFreeDesc)
st, _ := strconv.ParseFloat(fields[1], 64)
sf, _ := strconv.ParseFloat(fields[3], 64)
if st != 0 {
Add(&md, osDiskPctFree, sf/st*100, os_tags, metadata.Gauge, metadata.Pct, osDiskPctFreeDesc)
}
return nil
}, "df", "-lP", "--block-size", "1")
return md, err
}
示例5: parseRailURL
func parseRailURL() string {
var config string
var url string
util.ReadCommand(func(line string) error {
fields := strings.Fields(line)
if len(fields) == 0 || !strings.Contains(fields[0], "rg-listener") {
return nil
}
for i, s := range fields {
if s == "-config" && len(fields) > i {
config = fields[i+1]
}
}
return nil
}, "ps", "-e", "-o", "args")
if config == "" {
return config
}
readLine(config, func(s string) error {
if m := rgListenRE.FindStringSubmatch(s); len(m) > 0 {
url = "http://" + m[1]
}
return nil
})
return url
}
示例6: c_dfstat_inodes_linux
func c_dfstat_inodes_linux() (opentsdb.MultiDataPoint, error) {
var md opentsdb.MultiDataPoint
err := util.ReadCommand(func(line string) error {
fields := strings.Fields(line)
if len(fields) != 7 || !IsDigit(fields[2]) {
return nil
}
// /dev/mapper/vg0-usr ext4 851968 468711 383257 56% /usr
fs := fields[0]
fsType := fields[1]
inodesTotal := fields[2]
inodesUsed := fields[3]
inodesFree := fields[4]
mount := fields[6]
if isPseudoFS(fsType) {
return nil
}
tags := opentsdb.TagSet{"mount": mount}
metric := "linux.disk.fs."
if removable_fs(fs) {
metric += "rem."
}
Add(&md, metric+"inodes_total", inodesTotal, tags, metadata.Gauge, metadata.Count, "")
Add(&md, metric+"inodes_used", inodesUsed, tags, metadata.Gauge, metadata.Count, "")
Add(&md, metric+"inodes_free", inodesFree, tags, metadata.Gauge, metadata.Count, "")
return nil
}, "df", "-liPT")
return md, err
}
示例7: redisInit
func redisInit() {
update := func() {
var instances []opentsdb.TagSet
oldRedis := false
add := func(port string) {
ri := make(opentsdb.TagSet)
ri["port"] = port
instances = append(instances, ri)
}
util.ReadCommand(func(line string) error {
sp := strings.Fields(line)
if len(sp) != 3 || !strings.HasSuffix(sp[1], "redis-server") {
return nil
}
if !strings.Contains(sp[2], ":") {
oldRedis = true
return nil
}
port := strings.Split(sp[2], ":")[1]
if port != "0" {
add(port)
}
return nil
}, "ps", "-e", "-o", "pid,args")
if oldRedis {
util.ReadCommand(func(line string) error {
if !strings.Contains(line, "redis-server") {
return nil
}
sp := strings.Fields(line)
if len(sp) < 7 || !strings.Contains(sp[3], ":") {
return nil
}
port := strings.Split(sp[3], ":")[1]
add(port)
return nil
}, "netstat", "-tnlp")
}
redisInstances = instances
}
update()
go func() {
for range time.Tick(time.Minute * 5) {
update()
}
}()
}
示例8: c_vmstat_darwin
func c_vmstat_darwin() (opentsdb.MultiDataPoint, error) {
var md opentsdb.MultiDataPoint
var free float64
util.ReadCommand(func(line string) error {
if line == "" || strings.HasPrefix(line, "Object cache") || strings.HasPrefix(line, "Mach Virtual") {
return nil
}
fields := strings.Split(line, ":")
if len(fields) < 2 {
return nil
}
value, err := strconv.ParseFloat(strings.TrimSpace(fields[1]), 64)
if err != nil {
return nil
}
if strings.HasPrefix(fields[0], "Pages") {
name := strings.TrimSpace(fields[0])
name = strings.Replace(name, "Pages ", "", -1)
name = strings.Replace(name, " ", "", -1)
Add(&md, "darwin.mem.vm.4kpages."+name, value, nil, metadata.Unknown, metadata.None, "")
if name == "free" {
free = value * 4096
Add(&md, osMemFree, free, nil, metadata.Gauge, metadata.Bytes, osMemFreeDesc)
}
} else if fields[0] == "Pageins" {
Add(&md, "darwin.mem.vm.pageins", value, nil, metadata.Counter, metadata.None, "")
} else if fields[0] == "Pageouts" {
Add(&md, "darwin.mem.vm.pageouts", value, nil, metadata.Counter, metadata.None, "")
}
return nil
}, "vm_stat")
util.ReadCommand(func(line string) error {
total, _ := strconv.ParseFloat(line, 64)
if total == 0 {
return nil
}
Add(&md, osMemTotal, total, nil, metadata.Gauge, metadata.Bytes, osMemTotalDesc)
if free == 0 {
return nil
}
Add(&md, osMemUsed, total-free, nil, metadata.Gauge, metadata.Bytes, osMemUsedDesc)
Add(&md, osMemPctFree, free/total, nil, metadata.Gauge, metadata.Pct, osMemPctFreeDesc)
return nil
}, "sysctl", "-n", "hw.memsize")
return md, nil
}
示例9: c_meta_linux_version
func c_meta_linux_version() (opentsdb.MultiDataPoint, error) {
var md opentsdb.MultiDataPoint
_ = util.ReadCommand(func(line string) error {
metadata.AddMeta("", nil, "uname", line, true)
return nil
}, "uname", "-a")
if !readOSRelease() {
readIssue()
}
return md, nil
}
示例10: readOmreport
func readOmreport(f func([]string), args ...string) {
args = append(args, "-fmt", "ssv")
_ = util.ReadCommand(func(line string) error {
sp := strings.Split(line, ";")
for i, s := range sp {
sp[i] = clean(s)
}
f(sp)
return nil
}, "omreport", args...)
}
示例11: c_netbackup_frequency
func c_netbackup_frequency() (opentsdb.MultiDataPoint, error) {
var md opentsdb.MultiDataPoint
var class, schedule string
var clients []string
if err := util.ReadCommand(func(line string) error {
if strings.HasPrefix(line, "Policy Name:") {
clients = nil
f := strings.Fields(line)
if len(f) == 3 {
class = f[2]
return nil
}
return fmt.Errorf("error parsing policy: %v", line)
}
if strings.HasPrefix(line, "Client/HW/OS/Pri/DMI/CIT:") {
f := strings.Fields(line)
if len(f) == 9 {
clients = append(clients, f[1])
return nil
}
return fmt.Errorf("error parsing client")
}
if strings.HasPrefix(line, "Schedule:") {
f := strings.Fields(line)
if len(f) > 1 {
schedule = f[1]
return nil
}
return fmt.Errorf("error parsing client: %v", line)
}
if strings.HasPrefix(strings.TrimSpace(line), "Frequency:") {
f := strings.Fields(line)
if len(f) == 5 {
freq := strings.TrimLeft(f[3], "(")
for _, client := range clients {
tags := opentsdb.TagSet{"class": class, "client": client, "schedule": schedule}
Add(&md, "netbackup.backup.frequency", freq, tags, metadata.Gauge, metadata.Second, "")
}
return nil
}
return fmt.Errorf("error parsing frequency: %v", line)
}
return nil
}, "bppllist", "-L", "-allpolicies"); err == util.ErrPath {
return nil, nil
} else if err != nil {
return nil, err
}
return md, nil
}
示例12: collectMetadataOmreport
func collectMetadataOmreport() {
_ = util.ReadCommand(func(line string) error {
fields := strings.Split(line, ";")
if len(fields) != 2 {
return nil
}
switch fields[0] {
case "Chassis Service Tag":
AddMeta("", nil, "serialNumber", fields[1], true)
case "Chassis Model":
AddMeta("", nil, "model", fields[1], true)
}
return nil
}, "omreport", "chassis", "info", "-fmt", "ssv")
}
示例13: metaLinuxSerial
func metaLinuxSerial() {
_ = util.ReadCommand(func(line string) error {
fields := strings.SplitN(line, ":", 2)
if len(fields) != 2 {
return nil
}
switch fields[0] {
case "\tSerial Number":
AddMeta("", nil, "serialNumber", strings.TrimSpace(fields[1]), true)
case "\tProduct Name":
AddMeta("", nil, "model", strings.TrimSpace(fields[1]), true)
}
return nil
}, "dmidecode", "-t", "system")
}
示例14: c_iostat_darwin
func c_iostat_darwin() (opentsdb.MultiDataPoint, error) {
var categories []string
var md opentsdb.MultiDataPoint
ln := 0
i := 0
util.ReadCommand(func(line string) error {
ln++
if ln == 1 {
categories = strings.Fields(line)
}
if ln < 4 {
return nil
}
values := strings.Fields(line)
for _, cat := range categories {
if i+3 > len(values) {
break
} else if strings.HasPrefix(cat, "disk") {
Add(&md, "darwin.disk.kilobytes_transfer", values[i], opentsdb.TagSet{"disk": cat}, metadata.Unknown, metadata.None, "")
i++
Add(&md, "darwin.disk.transactions", values[i], opentsdb.TagSet{"disk": cat}, metadata.Unknown, metadata.None, "")
i++
Add(&md, "darwin.disk.megabytes", values[i], opentsdb.TagSet{"disk": cat}, metadata.Unknown, metadata.None, "")
i++
} else if cat == "cpu" {
Add(&md, "darwin.cpu.user", values[i], nil, metadata.Gauge, metadata.Pct, descDarwinCPUUser)
i++
Add(&md, "darwin.cpu.sys", values[i], nil, metadata.Gauge, metadata.Pct, descDarwinCPUSys)
i++
Add(&md, "darwin.cpu.idle", values[i], nil, metadata.Gauge, metadata.Pct, descDarwinCPUIdle)
i++
} else if cat == "load" {
Add(&md, "darwin.loadavg_1_min", values[i], nil, metadata.Unknown, metadata.None, "")
i++
Add(&md, "darwin.loadavg_5_min", values[i], nil, metadata.Unknown, metadata.None, "")
i++
Add(&md, "darwin.loadavg_15_min", values[i], nil, metadata.Unknown, metadata.None, "")
i++
}
}
return nil
}, "iostat", "-c2", "-w1")
if ln < 4 {
return nil, fmt.Errorf("bad return value")
}
return md, nil
}
示例15: c_meta_linux_serial
func c_meta_linux_serial() (opentsdb.MultiDataPoint, error) {
var md opentsdb.MultiDataPoint
_ = util.ReadCommand(func(line string) error {
fields := strings.SplitN(line, ":", 2)
if len(fields) != 2 {
return nil
}
switch fields[0] {
case "\tSerial Number":
metadata.AddMeta("", nil, "serialNumber", strings.TrimSpace(fields[1]), true)
case "\tProduct Name":
metadata.AddMeta("", nil, "model", strings.TrimSpace(fields[1]), true)
}
return nil
}, "dmidecode", "-t", "system")
return md, nil
}