Module: check_mk
Branch: master
Commit: 7e49038b0edc70357d8ac2c50b0d1a0050657e1e
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=7e49038b0edc70…
Author: Andreas Boesl <ab(a)mathias-kettner.de>
Date: Fri Jul 31 17:00:51 2015 +0200
update for #2413: datastores are now displayed with human readable name
---
agents/special/agent_vsphere | 26 ++++++++++++++++++++++++++
checks/esx_vsphere_counters | 13 +++++++++----
2 files changed, 35 insertions(+), 4 deletions(-)
diff --git a/agents/special/agent_vsphere b/agents/special/agent_vsphere
index f329d86..5597595 100755
--- a/agents/special/agent_vsphere
+++ b/agents/special/agent_vsphere
@@ -349,6 +349,28 @@ def get_counters(esx_version_num):
# 'disk.totalReadLatency': 131085,
# 'disk.totalWriteLatency': 131089,
# 'disk.usage': 131073,
+ # datastore counters
+# 'datastore.datastoreIops': 655367,
+# 'datastore.datastoreMaxQueueDepth': 655376,
+# 'datastore.datastoreNormalReadLatency': 655372,
+# 'datastore.datastoreNormalWriteLatency': 655373,
+# 'datastore.datastoreReadBytes': 655368,
+# 'datastore.datastoreReadIops': 655370,
+# 'datastore.datastoreReadLoadMetric': 655377,
+# 'datastore.datastoreReadOIO': 655374,
+# 'datastore.datastoreWriteBytes': 655369,
+# 'datastore.datastoreWriteIops': 655371,
+# 'datastore.datastoreWriteLoadMetric': 655378,
+# 'datastore.datastoreWriteOIO': 655375,
+# 'datastore.maxTotalLatency': 655379,
+# 'datastore.numberReadAveraged': 655360,
+# 'datastore.numberWriteAveraged': 655361,
+# 'datastore.read': 655362,
+# 'datastore.sizeNormalizedDatastoreLatency': 655366,
+# 'datastore.totalReadLatency': 655364,
+# 'datastore.totalWriteLatency': 655365,
+# 'datastore.write': 655363,
+ 655362,655363,655370,655371,655366,
# disk.read/write/deviceLatency/numberRead/numberWrite
131078, 131079, 131091, 131076, 131077,
@@ -923,6 +945,10 @@ if not error:
desc = counters_syntax[value["id"]]
counters_output[ (desc["group"],
desc["name"], value["instance"]) ] = ( value["value"],
desc["unit"] )
+ # Add datastore name to counters
+ for key, values in datastores.items():
+ counters_output[ ("datastore", "name", key) ]
= (values.get("name"), "string")
+
for key in sorted(counters_output.keys()):
value = counters_output[key]
output("%s.%s|%s|%s|%s" % (key + value))
diff --git a/checks/esx_vsphere_counters b/checks/esx_vsphere_counters
index fd75930..bb8e3f1 100644
--- a/checks/esx_vsphere_counters
+++ b/checks/esx_vsphere_counters
@@ -131,14 +131,18 @@ def parse_esx_vsphere_counters(info):
return parsed
def inventory_esx_vsphere_counters_datastoreio(parsed):
- return inventory_diskstat_generic(map(lambda x: [None, x],
- parsed.get("datastore.read").keys()))
+ return inventory_diskstat_generic(map(lambda x: [None, x[0][0]],
+ parsed.get("datastore.name").values()))
def check_esx_vsphere_counters_datastoreio(item, params, parsed):
if not parsed:
raise MKCounterWrapped("Counter data is missing")
datastores = {}
+ map_instance_to_name = {}
+ for instance, values in parsed.get("datastore.name").items():
+ map_instance_to_name[instance] = values[0][0]
+
for new_name, name, scaling in [ ("read_throughput",
"datastore.read", 1024),
("write_throughput",
"datastore.write", 1024),
("read_ios",
"datastore.datastoreReadIops", 1),
@@ -147,8 +151,9 @@ def check_esx_vsphere_counters_datastoreio(item, params, parsed):
field_data = parsed.get(name, {})
for instance, values in field_data.items():
- datastores.setdefault(instance, {})
- datastores[instance][new_name] = int(values[0][0]) * scaling
+ item_name = map_instance_to_name[instance]
+ datastores.setdefault(item_name, {})
+ datastores[item_name][new_name] = int(values[0][0]) * scaling
return check_diskstat_dict(item, params, datastores)