У меня есть вывод ниже, который я передаю через функцию python, где я получаю каждую строку текста ниже в цикле for (как информация).
y.y.y.y:/mount/name mounted on /var/log/da:
op/s rpc bklog
2579.20 2.00
read: ops/s kB/s kB/op retrans avg RTT (ms) avg exe (ms)
1.000 2.000 3.000 4 (4.0%) 5.000 6.000
write: ops/s kB/s kB/op retrans avg RTT (ms) avg exe (ms)
2578.200 165768.087 64.296 0 (0.0%) 21.394 13980.817
x.x.x.x:/mount/othername mounted on /data:
op/s rpc bklog
5.00 10.00
read: ops/s kB/s kB/op retrans avg RTT (ms) avg exe (ms)
0.000 0.000 0.000 0 (0.0%) 0.000 0.000
write: ops/s kB/s kB/op retrans avg RTT (ms) avg exe (ms)
0.000 0.000 0.000 0 (0.0%) 0.000 0.000
В идеале я хотел бы иметь словарь, содержащий имя монтирования в качестве ключа, за которым следует список всех метрик (операционные / операционные функции, RPC, операционные операции чтения и т. Д.).
Вот что у меня есть:
for line in info:
if ":/" in line[0]:
section = "mountpoint"
mountname = line[0]
continue
elif "op/s" in line[0]:
section = "globals"
continue
elif "read:" in line[0]:
section = "reads"
continue
elif "write:" in line[0]:
section = "writes"
continue
#if section == "mountpoint":
# pass
if section == "globals":
mountglobals = line
for i in mountglobals:
infos.append(i)
if section == "reads":
reads = line
for i in reads:
infos.append(i)
if section == "writes":
writes = line
for i in writes:
infos.append(i)
parsed[mountname] = {
"infos": infos
}
Я что-то упускаю в отношении итерации, так как она добавляет соответствующие ключи, но список метрик содержит все метрики. Я не уверен, как указать, какой список метрик относится к какой точке монтирования / ключу.
Вот как выглядит информация:
[[u'y.y.y.y:/mount/name', u'mounted', u'on', u'/var/log/da:'], [u'op/s', u'rpc', u'bklog'], [u'2579.20', u'2.00'], [u'read:', u'ops/s', u'kB/s', u'kB/op', u'retrans', u'avg', u'RTT', u'(ms)', u'avg', u'exe', u'(ms)'], [u'1.000', u'2.000', u'3.000', u'4', u'(4.0%)', u'5.000', u'6.000'], [u'write:', u'ops/s', u'kB/s', u'kB/op', u'retrans', u'avg', u'RTT', u'(ms)', u'avg', u'exe', u'(ms)'], [u'2578.200', u'165768.087', u'64.296', u'0', u'(0.0%)', u'21.394', u'13980.817'], [u'x.x.x.x:/mount/othername', u'mounted', u'on', u'/data:'], [u'op/s', u'rpc', u'bklog'], [u'5.00', u'10.00'], [u'read:', u'ops/s', u'kB/s', u'kB/op', u'retrans', u'avg', u'RTT', u'(ms)', u'avg', u'exe', u'(ms)'], [u'0.000', u'0.000', u'0.000', u'0', u'(0.0%)', u'0.000', u'0.000'], [u'write:', u'ops/s', u'kB/s', u'kB/op', u'retrans', u'avg', u'RTT', u'(ms)', u'avg', u'exe', u'(ms)'], [u'0.000', u'0.000', u'0.000', u'0', u'(0.0%)', u'0.000', u'0.000']]
Вот как выглядит мой текущий вывод:
{u'y.y.y.y:/mount/name': {'infos': [u'2579.20', u'2.00', u'1.000', u'2.000', u'3.000', u'4', u'(4.0%)', u'5.000', u'6.000', u'2578.200', u'165768.087', u'64.296', u'0', u'(0.0%)', u'21.394', u'13980.817', u'5.00', u'10.00', u'0.000', u'0.000', u'0.000', u'0', u'(0.0%)', u'0.000', u'0.000', u'0.000', u'0.000', u'0.000', u'0', u'(0.0%)', u'0.000', u'0.000']}, u'x.x.x.x:/mount/othername': {'infos': [u'2579.20', u'2.00', u'1.000', u'2.000', u'3.000', u'4', u'(4.0%)', u'5.000', u'6.000', u'2578.200', u'165768.087', u'64.296', u'0', u'(0.0%)', u'21.394', u'13980.817', u'5.00', u'10.00', u'0.000', u'0.000', u'0.000', u'0', u'(0.0%)', u'0.000', u'0.000', u'0.000', u'0.000', u'0.000', u'0', u'(0.0%)', u'0.000', u'0.000']}}
Ценю некоторые подсказки.