3
# Created by Aaron Mildenstein on 19 SEP 2012
8
# Define the fail message
10
print "ZBX_NOTSUPPORTED"
13
searchkeys = ['query_total', 'fetch_time_in_millis', 'fetch_total', 'fetch_time', 'query_current', 'fetch_current', 'query_time_in_millis']
14
getkeys = ['missing_total', 'exists_total', 'current', 'time_in_millis', 'missing_time_in_millis', 'exists_time_in_millis', 'total']
15
docskeys = ['count', 'deleted']
16
indexingkeys = ['delete_time_in_millis', 'index_total', 'index_current', 'delete_total', 'index_time_in_millis', 'delete_current']
17
storekeys = ['size_in_bytes', 'throttle_time_in_millis']
18
cachekeys = ['filter_size_in_bytes', 'field_size_in_bytes', 'field_evictions']
19
clusterkeys = searchkeys + getkeys + docskeys + indexingkeys + storekeys
24
# We need to have two command-line args:
25
# sys.argv[1]: The node name or "cluster"
26
# sys.argv[2]: The "key" (status, filter_size_in_bytes, etc)
31
# Try to establish a connection to elasticsearch
33
conn = ES('localhost:9200',timeout=25,default_indices=[''])
38
if sys.argv[1] == 'cluster':
39
if sys.argv[2] in clusterkeys:
40
nodestats = conn.cluster_stats()
42
for nodename in nodestats['nodes']:
43
if sys.argv[2] in indexingkeys:
44
indexstats = nodestats['nodes'][nodename]['indices']['indexing']
45
elif sys.argv[2] in storekeys:
46
indexstats = nodestats['nodes'][nodename]['indices']['store']
47
elif sys.argv[2] in getkeys:
48
indexstats = nodestats['nodes'][nodename]['indices']['get']
49
elif sys.argv[2] in docskeys:
50
indexstats = nodestats['nodes'][nodename]['indices']['docs']
51
elif sys.argv[2] in searchkeys:
52
indexstats = nodestats['nodes'][nodename]['indices']['search']
54
subtotal += indexstats[sys.argv[2]]
61
# Try to pull the managers object data
63
escluster = managers.Cluster(conn)
66
# Try to get a value to match the key provided
68
returnval = escluster.health()[sys.argv[2]]
71
# If the key is "status" then we need to map that to an integer
72
if sys.argv[2] == 'status':
73
if returnval == 'green':
75
elif returnval == 'yellow':
77
elif returnval == 'red':
82
# Mod to check if ES service is up
83
elif sys.argv[1] == 'service':
84
if sys.argv[2] == 'status':
91
else: # Not clusterwide, check the next arg
93
nodestats = conn.cluster_stats()
95
for nodename in nodestats['nodes']:
96
if sys.argv[1] in nodestats['nodes'][nodename]['name']:
97
if sys.argv[2] in indexingkeys:
98
stats = nodestats['nodes'][nodename]['indices']['indexing']
99
elif sys.argv[2] in storekeys:
100
stats = nodestats['nodes'][nodename]['indices']['store']
101
elif sys.argv[2] in getkeys:
102
stats = nodestats['nodes'][nodename]['indices']['get']
103
elif sys.argv[2] in docskeys:
104
stats = nodestats['nodes'][nodename]['indices']['docs']
105
elif sys.argv[2] in searchkeys:
106
stats = nodestats['nodes'][nodename]['indices']['search']
107
elif sys.argv[2] in cachekeys:
108
stats = nodestats['nodes'][nodename]['indices']['cache']
110
returnval = stats[sys.argv[2]]
115
# If we somehow did not get a value here, that's a problem. Send back the standard
117
if returnval is None: