通过python脚本和zabbix配合监控zookeeper的节点数
通过python脚本和zabbix配合监控zookeeper的节点数 需求描述:
在日常zabbix监控zookeeper的时候,无法通过shell来获取zookeeper的具体节点信息,没有开放具体的接口,只能通过交互式的shell获取
python提供了操作zookeeper的api,我们可以使用python脚本结合zabbix来监控zookeeper的服务端是否上线 .安装相关的依赖
由于python客户端依赖c的客户端所以要先安装c版本的客户端
cd /usr/local/src
wget http://archive.apache.org/dist/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz
tar -zxvf zookeeper-3.4..tar.gz
cd /usr/local/src/zookeeper-3.4./src/c
./configure
make
make install # 验证是否成功,测试是否能够连上zookeeper
[root@localhost c]# ./cli_mt 1.1.1.1:
Watcher SESSION_EVENT state = CONNECTED_STATE
Got a new session id: 0x35f2e9cf58103e6 .下载安装zkpython
wget https://pypi.python.org/packages/source/z/zkpython/zkpython-0.4.2.tar.gz
tar -zxf zkpython-0.4..tar.gz
cd zkpython-0.4.
python setup.py build
python setup.py install # 加入环境变量
# vim /etc/profile
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib source /etc/profile
或者 # echo "/usr/local/lib" >> /etc/ld.so.conf
# /sbin/ldconfig .测试
使用ipython访问zookeeper [root@localhost zkpython-0.4.]# ipython
Python 2.7. (default, Aug , ::)
Type "copyright", "credits" or "license" for more information. IPython 5.5. -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object', use 'object??' for extra details. import zookeeper as zoo
# 初始化连接到集群
zk = zoo.init("1.1.1.1:2181") # 获取所有节点
zoo.get_children(zk, "/", None)
# 获取voice-server所有节点
nodes = zoo.get_children(zk, "/sdk/voice/server/info", None)
# 获取zookeeper节点中voice-server的个数
print len(nodes) # 具体代码 #!/usr/bin/python
#encoding:utf- import zookeeper as zoo
import sys # 设置zookeeper的日志等级,避免python输出大量无用信息
zoo.set_debug_level(zoo.LOG_LEVEL_ERROR) DEFAULT_TIMEOUT = class zookServer():
def __init__(self, timeout=DEFAULT_TIMEOUT):
# 初始化连接到集群
self.timeout = timeout
self.zk = zoo.init("ip1:2181,ip2:2181,ip3:2181") # 获取zookeeper所有的节点长度
def get_children_len(self, _path, watcher = None):
self.connected = True
# 获取voice-server所有节点
nodes = zoo.get_children(self.zk, _path, watcher)
# 获取zookeeper节点中voice-server的个数
return len(nodes) if __name__ == "__main__":
z = zookServer()
print z.get_children_len('/sdk/voice/server/info')
通过python脚本和zabbix配合监控zookeeper的节点数的更多相关文章
- python自动统计zabbix系统监控覆盖率
脚本主要功能: 1)通过zabbix api接口采集所有监控主机ip地址: 2)通过cmdb系统(蓝鲸)接口采集所有生产主机IP地址.主机名.操作系统.电源状态: 3)以上2步返回数据对比,找出未监控 ...
- 使用python脚本配置zabbix发送报警邮件
#前提得在zabbix_server配置文件中配置触发脚本的目录,例如,我配置的在/usr/local/zabbix/server/scripts目录下 编写python脚本如下 因为我的服务器在腾讯 ...
- Python抓取zabbix性能监控图
一.通过查询zabbix db的方式通过主机IP获取到所需要的graphid(比如CPU监控图.内存监控图等,每个图对应一个graphid),最后将图片保存到本地 注:该graph必须要在 scree ...
- zabbix 调用python脚本监控 磁盘剩余空间(创建模版,创建监控项,创建触发器)
主要 记录一下 使用zabbix 自己创建模版.监控项.触发器,并调用python脚本. 需求: 监控备份机磁盘剩余空间(windows系统) 一.安装zabbix_agent 比较简单 修改配置文 ...
- Zabbix 微信监控报警
Zabbix-Server 设置 # 使脚本目录生效 [root@zabbix ~]# grep 'script' /etc/zabbix/zabbix_server.conf # AlertScri ...
- zabbix增加手机短信、邮件监控的注意要点,SSL邮件发送python脚本
1.短信接口文档: URL http://xxx.com/interfaces/sendMsg.htm Method POST Description 文字短信调用接口 Request Param L ...
- 使用python脚本+zabbix前端监控云联网底层TCP数据流所负载的链路质量,并在丢包时联动保存MTR记录
背景 目前国内各家云联网跨区域数据传输,会将数据流通过哈希运算负载到不同的底层链路上,而底层链路质量差异较大,这种情况导致的现象就是,使用传统的icmp监控线路正常,但是业务一直不稳定,所以才有了使用 ...
- zabbix系列(十)zabbix添加对zookeeper集群的监控
1.应用场景描述 在目前公司的业务中,有部分ESB架构用ZooKeeper作为协同服务的场景,做好ZooKeeper的监控很重要. 2.ZooKeeper监控要点 系统监控 内存使用量 ZooK ...
- 使用Zabbix监控ZooKeeper服务的健康状态
一 应用场景描述 在目前公司的业务中,没有太多使用ZooKeeper作为协同服务的场景.但是我们将使用Codis作为Redis的集群部署方案,Codis依赖ZooKeeper来存储配置信息.所以做好Z ...
随机推荐
- ES6 In Depth: Arrow functions
Arrows <script language="javascript"> <!-- document.bgColor = "brown"; ...
- java NIO入门【原】
server package com.server; import java.net.InetSocketAddress; import java.nio.ByteBuffer; import jav ...
- nginx 前端POST请求405问题解决与排查过程
问题描述 在请求时,f12提示POST请求报错405 环境描述 nginx转发至后端nginx,后端nginx转发至后端golang api接口 解决步骤 根据网上方法排查,发现80%以上无非就是以下 ...
- I/O exception (java.net.SocketException) caught when processing request: Connect
Exception [一个故障引发的话题] 最近,项目中的短信模块收到一个故障日志,要求我协助调查一下: 2010-05-07 09:22:07,221 [?:?] INFO httpclient. ...
- Part-Nine
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
- mysql表基本查询
第一节 -- or # 单行注释/***多行注释*/ -- c创建数据库examCREATE DATABASE exam; USE exam; /*创建部门表*/CREATE TABLE dept( ...
- es6模块化导入导出
模块化指的就是将一个大程序拆分成若干个互相依赖的小文件,然后在用简单的方法拼装起来. 在 ES6 之前,JS没有模块化系统,社区制定了一些模块加载方案 最主要的有 CommonJS(Asynchron ...
- WEBGIS网页崩溃问题分析
加载某一地区的系统页面时,过了几十秒,页面空白.曾经捕获到是WMTS服务异常的问题.本人推测可能是底图服务停止,使得WMTS服务无法进行而抛出的异常. 为了证实自己的猜想,鄙人对一个正常的系统,修改为 ...
- 添加Glide图片加载框架依赖
1.添加依赖implementation 'com.github.bumptech.glide:glide:4.7.1' 2.放置一个ImageView.3.加载,ivGif是ImageView实例 ...
- excel数据 入库mysql 和 mysql数据 导入excel文件
1.excel数据入库mysql 首先准备excel文件, 标红的地方需要留意,一个是字段名所在行,一个表名对应页: 然后私用mysql工具 navicat, 选择数据库,然后导入文件, 选中相应ex ...