zabbix-elasticsearch

Форк
0
/
index_inspect.py 
62 строки · 1.7 Кб
1
from urllib.parse import urlparse
2

3
import json
4
import argparse
5
import requests
6

7

8
class InspectIndex():
9
    """ Stub """
10

11
    def __init__(self):
12
        """ Stub """
13
        self.value = None
14

15
    def get_nested_attr(self, container, attr):
16
        # Function to traverse dictionaries and print when value is 
17
        # not a dict (instead it's a str)
18

19
        if isinstance(attr, str):
20
            keys = attr.split('.')
21
        else:
22
            keys = attr
23

24
        for key in keys:
25
            value = container[key]
26
            if isinstance(value, dict):
27
                keys.pop(0)
28
                if keys:
29
                    self.get_nested_attr(value, keys)
30
            elif value is not None:
31
                #TODO: Verify what is happening to value.
32
                self.value = value
33
#                return self.value
34
            else:
35
                return('Not Encountered Value')
36

37
    
38
    def get_index_metric(self, url, index, metric):
39
        """
40
        Return specific metric for the especified index.
41
        """
42
        address = url.scheme + '://' + url.netloc + '/%s/_stats' % index
43
        result = requests.get(address)
44
        
45
        assert result.status_code == 200
46

47
        state = result.json()
48
        
49
        self.get_nested_attr(state, metric)
50
        print(self.value)
51

52

53
if __name__ == '__main__':
54
    parser = argparse.ArgumentParser()
55
    parser.add_argument('--url', type=urlparse, required=True)
56
    parser.add_argument('--index', type=str, required=True)
57
    parser.add_argument('--metric', type=str, required=True)
58
    
59
    args = parser.parse_args()
60
    
61
    index = InspectIndex()
62
    index.get_index_metric(args.url, args.index, args.metric)
63

64

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.