7 if 'LANG' in os.environ:
9 os.environ['PATH'] = "/sbin:/bin:/usr/sbin:/usr/bin"
11 def date2ts(d, fmt="%m/%d/%y %H:%M:%S"):
12 return int(time.mktime(time.strptime(d, fmt)))
21 from optparse import OptionParser
22 parser = OptionParser()
24 parser.set_defaults(prefix="sar.",
33 parser.add_option("", "--prefix", dest="prefix", help="")
34 parser.add_option("", "--sarargs", dest="sarargs", help="")
35 parser.add_option("-s", "--seconds", dest="seconds", help="")
36 parser.add_option("", "--subfix", dest="subfix", action="store_true", help="")
37 parser.add_option("", "--debug", dest="debug", action="store_true", help="")
38 parser.add_option("", "--filter", dest="filter", help="")
39 parser.add_option("", "--ghost", dest="ghost", help="")
41 (config, args) = parser.parse_args()
42 if len(sys.argv) == 1:
46 if config.ghost is None:
47 # send to current host by default.
48 ghost_input = os.popen("/bin/hostname", 'r')
49 config.ghost = ghost_input.read().strip()
51 sysstat_check = os.popen("if ! rpm -q sysstat > /dev/null ; then yum install -y sysstat ; fi ", 'r').read()
52 hostname_input = os.popen("/bin/hostname | sed -e 's/\./_/g' ", 'r')
53 sar_input = os.popen("/usr/bin/sar %s %s 1" % (config.sarargs, config.seconds), 'r')
54 nc_output = os.popen("/usr/bin/nc %s 2003" % config.ghost, 'w')
56 hostname = hostname_input.read().strip()
57 hostname_input.close()
66 prefix = config.prefix + sf + hostname + "."
68 skip_keys = [ 'CPU', 'IFACE' ]
70 for line in sar_input:
74 first_date = fields[3]
84 if len(fields) > 0 and fields[0] != "Average:":
85 ts = date2ts("%s %s" % (first_date, fields[0]) )
87 for k,v in zip(headers, fields[1:]):
88 if config.filter and k in config.filter:
89 if v not in config.filter: break
90 else: key_fix = v + "."
91 if k in skip_keys: continue
93 k = k.replace("/","_")
95 print >>nc_output, prefix + key_fix + k, v, ts
96 print prefix + key_fix + k, v, ts
101 if __name__ == "__main__":