博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
elasticsearch的监控脚本
阅读量:4615 次
发布时间:2019-06-09

本文共 3308 字,大约阅读时间需要 11 分钟。

监控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 = v11     return value12 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_data29 30 def send_data(sender_data):31 code = 032 if len(sender_data['data']) == 0:33 code = 334 return code35 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 = 25547 return code48 response_header = sock.recv(5)49 if not response_header == 'ZBXD\1':50 code = 25451 return code52 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 = 261 return code62 else:63 fails = int(match.group(1))64 if fails > 0:65 code = 166 return code67 return code68 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)

 

转载于:https://www.cnblogs.com/zhengyionline/p/10364450.html

你可能感兴趣的文章
在Spring下集成ActiveMQ
查看>>
OTS parsing error: invalid version tag woff和ttf文件被Filter拦截
查看>>
使用Kazoo操作ZooKeeper服务治理
查看>>
linux系统安装配置exim4(源码安装)
查看>>
EF 两种删除方式的比较
查看>>
bzoj 2152: 聪聪可可
查看>>
推迟幸福感
查看>>
Java框架之spring 项目 附加之noteresult(status msg data uuid MD5)
查看>>
图->定义
查看>>
animate.css
查看>>
《机电传动控制》学习笔记04
查看>>
数据库系统概念:数据库的修改
查看>>
python 多继承(新式类) 四
查看>>
JS写入Json到CSV并下载
查看>>
Python2.3-原理之语句和语法
查看>>
RecyclerView实现底部载入很多其它功能
查看>>
【大话设计模式】——简单工厂模式
查看>>
如何安全地关闭MySQL实例
查看>>
Redis Cluster 3.0搭建与使用
查看>>
python基础学习第一波
查看>>