码迷,mamicode.com
首页 > 其他好文 > 详细

elasticsearch的监控脚本

时间:2019-02-12 11:42:46      阅读:128      评论:0      收藏:0      [点我收藏+]

标签:format   tde   hosts   query   ict   rom   led   nec   pen   

监控elasticsearch cluster 集群

通过主动模式将数据发送给zabbix server

 1 import json
 2 import struct
 3 import socket
 4 import re
 5 from elasticsearch import Elasticsearch
 6 
 7 
 8 def get_dict_value(res):
 9     for k, v in res.items():
10         value = v
11     return value
12 
13 def get_metric_trapper(hosts):
14     sending_data = {request: sender data, data: []}
15     es = Elasticsearch(hosts=hosts)
16     res = es.nodes.stats(node_id=_local)[nodes]
17     v = get_dict_value(res)
18     host_name = v[name]
19     for key_info in monitor_key_info:
20         key_one = key_info[key_one]
21         key_two = key_info[key_two]
22         key_three = key_info[key_three]
23         sending_data[data].append({
24             host: host_name,
25             value: v[key_one][key_two][key_three],
26             key: es.{}.{}.{}.format(key_one, key_two, key_three)
27         })
28     return sending_data
29 
30 def send_data(sender_data):
31     code = 0
32     if len(sender_data[data]) == 0:
33         code = 3
34         return code
35     mydata = json.dumps(sender_data)
36     data_length = len(mydata)
37     data_header = str(struct.pack(q, data_length))
38     data_to_send = ZBXD\1 + str(data_header) + str(mydata)
39     socket.setdefaulttimeout(30)
40     try:
41         sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
42         sock.connect((‘zabbix-IP, 10051))
43         sock.send(data_to_send)
44     except Exception as e:
45         print(e)
46         code = 255
47         return code
48     response_header = sock.recv(5)
49     if not response_header == ZBXD\1:
50         code = 254
51         return code
52     response_data_header = sock.recv(8)
53     response_data_header = response_data_header[:4]
54     response_len = struct.unpack(i, response_data_header)[0]
55     response_raw = sock.recv(response_len)
56     sock.close()
57     response = json.loads(response_raw)
58     match = re.match(^.*failed.+?(\d+).*$, response[info].lower() if info in response else ‘‘)
59     if match is None:
60         code = 2
61         return code
62     else:
63         fails = int(match.group(1))
64         if fails > 0:
65             code = 1
66             return code
67     return code
68 
69 
70 if __name__ == __main__:
71     hosts = ‘ip:9200
72     monitor_key_info = [
73         {key_one: jvm, key_two: mem, key_three: heap_used_percent},
74         {key_one: jvm, key_two: mem, key_three: heap_used_in_bytes},
75         {key_one: jvm, key_two: mem, key_three: heap_max_in_bytes},
76         {key_one: indices, key_two: store, key_three: size_in_bytes},
77         {key_one: indices, key_two: segments, key_three: count},
78         {key_one: indices, key_two: search, key_three: query_time_in_millis},
79         {key_one: indices, key_two: indexing, key_three: index_time_in_millis},
80         {key_one: indices, key_two: docs, key_three: count},
81         {key_one: indices, key_two: docs, key_three: deleted},
82         {key_one: os, key_two: cpu, key_three: percent},
83     ]
84     v = get_metric_trapper(hosts=hosts) 
85     relust = send_data(v)
86     print(relust)

 

elasticsearch的监控脚本

标签:format   tde   hosts   query   ict   rom   led   nec   pen   

原文地址:https://www.cnblogs.com/zhengyionline/p/10364450.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!