1+ #!/usr/bin/python
2+ # Calculating differences between indices size of ELasticsearch every few seconds
3+
4+ import requests
5+ import time
6+ import sys
7+
8+ try :
9+ r = requests .get ('http://localhost:9200/_cat/indices?v' )
10+ except :
11+ print ("Error conecting to elasticsearch. Exiting..." )
12+ sys .exit (1 )
13+
14+ data = r .text .split ('\n ' )
15+
16+ #remove header
17+ data .pop (0 )
18+
19+ stored_values = []
20+ for i in range (0 ,len (data )- 1 ):
21+ index_name = data [i ].split ()[2 ]
22+ docs_number = data [i ].split ()[5 ]
23+ size = data [i ].split ()[7 ]
24+ delta = 0
25+ last_number = data [i ].split ()[5 ]
26+
27+ values = {'index' :index_name ,'docs' :docs_number ,'size' :size ,'delta' :delta ,'last' :last_number }
28+
29+ stored_values .append (values )
30+
31+ try :
32+ while True :
33+ try :
34+ r = requests .get ('http://localhost:9200/_cat/indices?v' )
35+ except :
36+ print ("Error conecting to elasticsearch. Exiting..." )
37+ sys .exit (1 )
38+
39+ data = r .text .split ('\n ' )
40+ data .pop (0 )
41+
42+ #clean the screen
43+ print (chr (27 ) + "[2J" )
44+ print '{0:40} {1:6} {2:11} {3:10}' .format ('Index name' , 'Delta' , 'Docs number' , 'Size' )
45+ for i in range (0 ,len (data )- 1 ):
46+ index_name = data [i ].split ()[2 ]
47+ docs_number = int (float (data [i ].split ()[5 ]))
48+
49+ size = data [i ].split ()[7 ]
50+ for item in stored_values :
51+ if item ["index" ] == index_name :
52+ delta = docs_number - int (float (item ["last" ]))
53+ item ["delta" ] = delta
54+ item ["last" ] = docs_number
55+ if delta != 0 :
56+ print '{0:40} {1:6} {2:11} {3:10}' .format (index_name , delta , docs_number , size )
57+ break
58+ time .sleep (2 )
59+
60+ except KeyboardInterrupt :
61+ print "Bye-bye"
62+
63+ # vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4
0 commit comments