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和内存的使用情况.全方位监控主机),有需要的朋友不妨看 ...
随机推荐
- java代理通俗简单解析
1 代理 1.1 代理的概念和作用 代理的概念很好理解,就像黄牛代替票务公司给你提供票,经纪人代理艺人和别人谈合作.Java的代理是指实现类作为代理类的属性对象, ...
- LineRenderer实现一个画线组件
using System; using UnityEngine; class UILine { GameObject targetObj; LineRenderer lineRenderer; //L ...
- GT sport赛道详解 - Dragon Trail | 龙之径
参考:GT sport所有赛道简介 今天的心情变化挺大,从绝望放弃到豁然开朗. 前言:GT sport有个排位赛,是每位sim赛车手提升自己等级的唯一途径,其中一个排位赛就是龙之径II(逆时针跑),我 ...
- linux指令(2)
1)获取历史操作命令: "!<history指令编号>”即可运行相应命令 [root@server1 ~]# history.............. 1011 uname - ...
- Ketlle
public class Kettle { private int volume; public Kettle(int water) { volume =water; System.out.pri ...
- Spring boot 2.1.x 造成的问题
1. mysql-conector-java 版本默认使用了 8.0.1.5 导致:项目启动时的警告:Loading class `com.mysql.jdbc.Driver'. This is de ...
- pyqt多线程进度条
ui.py # -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'ui.ui' # # Creat ...
- C++(实验二)
实验结论 1.函数重载编程练习: 编写重载函数add(),实现对int型,double型,Complex型数据的加法.在main( )函数中定义不同类型 数据,调用测试. #include <i ...
- Vue打包npm run build 打包后空白怎么解决?
问题一:路径报错并且页面空白 解决:buld/index.js assetsPublicPath: '/'修改为 assetsPublicPath: './' 问题二:没报错页面空白 ro ...
- Oracle扩展的统计信息
我们在收集列的统计信息与直方图时,往往都是对某一列的收集.当谓词使用多个相关列时,会导致约束条件的冗余.这几个相关的列也被称作关联列.出现这种情况时,查询优化器也会做出不准确的判断.所以我们必须对这些 ...