elasticsearch的监控脚本
监控elasticsearch cluster 集群
通过主动模式将数据发送给zabbix server
import json
import struct
import socket
import re
from elasticsearch import Elasticsearch def get_dict_value(res):
for k, v in res.items():
value = v
return value def get_metric_trapper(hosts):
sending_data = {'request': 'sender data', 'data': []}
es = Elasticsearch(hosts=hosts)
res = es.nodes.stats(node_id='_local')['nodes']
v = get_dict_value(res)
host_name = v['name']
for key_info in monitor_key_info:
key_one = key_info['key_one']
key_two = key_info['key_two']
key_three = key_info['key_three']
sending_data['data'].append({
'host': host_name,
'value': v[key_one][key_two][key_three],
'key': 'es.{}.{}.{}'.format(key_one, key_two, key_three)
})
return sending_data def send_data(sender_data):
code =
if len(sender_data['data']) == :
code =
return code
mydata = json.dumps(sender_data)
data_length = len(mydata)
data_header = str(struct.pack('q', data_length))
data_to_send = 'ZBXD\1' + str(data_header) + str(mydata)
socket.setdefaulttimeout()
try:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(('zabbix-IP', ))
sock.send(data_to_send)
except Exception as e:
print(e)
code =
return code
response_header = sock.recv()
if not response_header == 'ZBXD\1':
code =
return code
response_data_header = sock.recv()
response_data_header = response_data_header[:]
response_len = struct.unpack('i', response_data_header)[]
response_raw = sock.recv(response_len)
sock.close()
response = json.loads(response_raw)
match = re.match('^.*failed.+?(\d+).*$', response['info'].lower() if 'info' in response else '')
if match is None:
code =
return code
else:
fails = int(match.group())
if fails > :
code =
return code
return code if __name__ == '__main__':
hosts = 'ip:9200'
monitor_key_info = [
{'key_one': 'jvm', 'key_two': 'mem', 'key_three': 'heap_used_percent'},
{'key_one': 'jvm', 'key_two': 'mem', 'key_three': 'heap_used_in_bytes'},
{'key_one': 'jvm', 'key_two': 'mem', 'key_three': 'heap_max_in_bytes'},
{'key_one': 'indices', 'key_two': 'store', 'key_three': 'size_in_bytes'},
{'key_one': 'indices', 'key_two': 'segments', 'key_three': 'count'},
{'key_one': 'indices', 'key_two': 'search', 'key_three': 'query_time_in_millis'},
{'key_one': 'indices', 'key_two': 'indexing', 'key_three': 'index_time_in_millis'},
{'key_one': 'indices', 'key_two': 'docs', 'key_three': 'count'},
{'key_one': 'indices', 'key_two': 'docs', 'key_three': 'deleted'},
{'key_one': 'os', 'key_two': 'cpu', 'key_three': 'percent'},
]
v = get_metric_trapper(hosts=hosts)
relust = send_data(v)
print(relust)
elasticsearch的监控脚本的更多相关文章
- nginx响应时间监控脚本
最近我们服务的使用方总是反应说我们接口超时,于是做了一个监控脚本,统计最近五分钟的响应情况,并对异常情况发送邮件报警. #!/bin/bash function define(){ ori_log_p ...
- Linux系统性能统计工具Sar和实时系统性能监控脚本
sar(System Activity Reporter系统活动情况报告)是目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况.系统调用的使用情 ...
- [工具开发] keepalived使用nagios监控脚本
最近在做开发和办公环境的高可用,采用的是keepalived:keepalived基于Linux内核支持的LVS,既能实现高可用,又能实现负载均衡,非常实用. keepalived监控服务状态时可以用 ...
- 关于mysql和Apache以及nginx的监控脚本怎么写会比较好的记录
最近,自己业务进行上线,上线后,需要考虑的是对各种服务进行监控,包括(httpd服务,mysqld服务等),现在想以mysqld服务为例总结下那种方式的脚本最为专业和合理: (1).根据mysql的端 ...
- MySQL慢日志监控脚本实例剖析
公司线上的 MySQL 慢日志,之前一直没有做好监控.趁着上周空闲,我就把监控脚本写了下,今天特地把代码发出来与51博友分享一下. 针对脚本的注解和整体构思,我会放到脚本之后为大家详解. 1 2 3 ...
- centos shell编程6一些工作中实践脚本 nagios监控脚本 自定义zabbix脚本 mysql备份脚本 zabbix错误日志 直接送给bc做计算 gzip innobackupex/Xtrabackup 第四十节课
centos shell编程6一些工作中实践脚本 nagios监控脚本 自定义zabbix脚本 mysql备份脚本 zabbix错误日志 直接送给bc做计算 gzip innobacku ...
- oracle监控脚本
简单命令 1.显示服务器上的可用实例:ps -ef | grep smon2.显示服务器上的可用监听器:ps -ef | grep -i listener | grep -v grep3.查看Orac ...
- linux服务监控脚本
配置需要监控的服务器 数组定义:host_ports=(host_name=host_port=uri_path)host_name为容易识别的服务器名称host_port为服务器ip和服务端口uri ...
- 【不积跬步,无以致千里】五个常用的Linux监控脚本代码
为大家提供五个常用Linux监控脚本(查看主机网卡流量.系统状况监控.监控主机的磁盘空间,当使用空间超过90%就通过发mail来发警告.监控CPU和内存的使用情况.全方位监控主机),有需要的朋友不妨看 ...
随机推荐
- js对象跟数组多层嵌套,检测没有此数据就添加有则不添加以及超过限制条件删除操作
例如你需要这样格式的数据: [{"name":"合肥市","arrey":[{"lat":"31.862323 ...
- (7)udp-socket
# upd 协议:(1)#client 端口:import socketsk = socket.socket(type=socket.SOCK_DGRAM)message = "我来了大哥& ...
- extract method
函数 简短,命名良好 函数名描述的是做什么 而不是怎么做 行数过高的代码中 将一大段做一个事的代码提取到独立的method 中 高层函数直接引用. 创建新函数 将提炼的代码平移到目标函数中 检查是否引 ...
- Flutter采坑之路 用真机跑起来的时候提示 initGradle失败,IO异常,downloading Gradle-4.6-all.zip失败
这个异常就是Gradle下载异常,进而下面会提示一行IO异常 我这里的原因就是Gradle对应的4.6-all版本下载不下来(一般情况下确实很难下载下来) 所以在正常AS工程呢,我们选择一下Gradl ...
- python实现单线程多任务非阻塞TCP服务端
代码 # coding:utf- from socket import * # .创建服务器socket sock = socket(AF_INET, SOCK_STREAM) # .绑定主机和端口 ...
- java8实战二------lambda表达式和函数式接口,简单就好
一.Lambda 可以把Lambda表达式理解为简洁地i表示可传递的匿名函数的一种方式:它没有名称,但它有参数列表.函数主体.返回类型,可能还是一个可以抛出的异常列表. 听上去,跟我们用的匿名类,匿名 ...
- 浏览器关闭,onunload和onbeforeunload的使用
系统描述:用户与管理员客服聊天,当用户在五分钟之内不说话,则客服会在5分钟后断开.当直接关闭浏览器页面时,后台管理员就无法检测到这种状态,此用户无法从管理员的服务列表里面清除 onunload和onb ...
- 模仿也是提高,纯css小技巧实现头部进度条
刚开始的时候我也觉得不可能,但是就是这么神奇,总有大神给你意想不到的惊喜. 快来感受一下把.(仔细看看头部黄色条的变化) 思考一下啊,怎么出现的那,其实作者使用了一点小技巧,那就是背景色渐变和遮挡产生 ...
- 【Monkey】Monkey稳定性测试常用命令
Monkey稳定性测试常用命令: 1.adb shell monkey n 2.adb shell monkey -p com.android.calculator2 1000 3.adb shel ...
- git切换用户踩坑
1)配置用户信息 git config --global user.name "username" git config --global user.email "**@ ...