本文共 4272 字,大约阅读时间需要 14 分钟。
参考 https://www.cnblogs.com/yxy-linux/p/8023660.html
环境
centos 7.3 zabbix-3.4.2 python2.7###############################################################安装配置zabbix agent端###########################################################################
1、安装zabbix agent安装依赖包
yum -y install gcc gcc-c++ nc autoconf automake zlib zlib-devel openssl openssl-devel pcre* make gd-devel libjpeg-devel libpng-devel libxml2-devel bzip2-devel libcurl-devel
创建 用户
groupadd zabbix useradd zabbix -s /sbin/nologin -M -g zabbix安装zabbix
tar -zxvf zabbix-3.4.2.tar.gz cd zabbix-3.4.2/./configure --prefix=/usr/local/zabbix-3.4.2/ --enable-agent
make install 2、修改配置文件 vim /usr/local/zabbix-3.4.2/etc/zabbix_agentd.conf[root@localhost zabbix-3.4.2]# grep '^[a-Z]' etc/zabbix_agentd.conf
LogFile=/tmp/zabbix_agentd.log StartAgents=0 ServerActive=10.10.134.117 Hostname=10.2.11.50 RefreshActiveChecks=120 Include=/usr/local/zabbix-3.4.2/etc/zabbix_agentd.conf.d/*.conf 其他默认即可3、拷贝脚本到zabbix agent端 用户采集zookeeper状态信息
创建脚本目录用户存放各种脚本 方便以后管理 mkdir -p /usr/local/zabbix-3.4.2/script 把imok.py mntr.py roles.py 拷贝到/usr/local/zabbix-3.4.2/scripts 并赋予执行权限 chmod +x imok.py mntr.py roles.py 4、添加一个新的配置文件 cd /usr/local/zabbix-3.4.2/etc/zabbix_agentd.conf.d/ vim zookeeper.confUerParameter=zookeeper.mntr[*],/usr/local/zabbix-3.4.2/scirpt/mntr.py $1
UerParameter=zookeeper.imok,/usr/local/zabbix-3.4.2/scirpt/imok.py UerParameter=zookeeper.roles,/usr/local/zabbix-3.4.2/scirpt/roles.py5、启动zabbix agent
/usr/local/zabbix-3.4.2/sbin/zabbix_agentd -c /usr/local/zabbix-3.4.2/etc/zabbix_agentd.conf 测试: 到zabbix server端 ./zabbix_get -s 10.2.11.50 -k zookeeper.status[all] 查看是否已有字典形式的数据 {'zk_followers': 0, 'zk_outstanding_requests': 0, 'zk_approximate_data_size': 3017854, 'zk_packets_sent': 49844628, 'zk_pending_syncs': 0, 'zk_avg_latency': 0, 'zk_version': '3.4.8--1, built on 02/06/2016 03:18 GMT', 'zk_watch_count': 7036, 'zk_packets_received': 44019531, 'zk_open_file_descriptor_count': 79, 'zk_server_ruok': 'imok', 'zk_server_state': 'follower', 'zk_synced_followers': 0, 'zk_max_latency': 1549, 'zk_num_alive_connections': 53, 'zk_min_latency': 0, 'zk_ephemerals_count': 3288, 'zk_znode_count': 7442, 'zk_max_file_descriptor_count': 65535} #################zabbix server端配置#######################################登录到web界面
########## 把当前目录下的zabbix_zookeeper_model.xml文件导入到zabbix server ########## 配置------模板-----导入------选择 abbix_zookeeper_model.xml至此zabbix监控zookeeper完成
#################imok.py################
#!/usr/bin/python
import socket from cStringIO import StringIO def run(): try: s=socket.socket() s.connect(('localhost',2181)) s.send('ruok') data_mntr=s.recv(2048) s.close() except socket.error as e: return 10 else: h = StringIO(data_mntr) if h: if h.readline() == "imok": return 0 else: return 10 else: return 10if __name__ == "__main__":
print run()#################mntr.py#############################
#!/usr/bin/python
import socket from cStringIO import StringIO import sysdef run(param):
try: s=socket.socket() s.connect(('localhost',2181)) s.send('mntr') data_mntr=s.recv(2048) s.close() except socket.error as e: return -10 else: h=StringIO(data_mntr) if h: for line in h.readlines(): key,value=map(str.strip,line.split('\t')) if key == param: return value else: return -10 return -10if __name__ == "__main__":
params = sys.argv[1] print run(params)
#################roles.py#########################
#!/usr/bin/python
import socket #from StringIO import StringIO from cStringIO import StringIO def run(): try: s=socket.socket() s.connect(('localhost',2181)) s.send('mntr') data_mntr=s.recv(2048) s.close() except socket.error as e: return 10 else: h=StringIO(data_mntr) if h: for line in h.readlines(): key,value=map(str.strip,line.split('\t')) if key == "zk_server_state": if value == "leader": return 2 elif value == "follower": return 1 else: return 10 else: return 10 if __name__ == "__main__": print run()#################脚本说明#########################33
测脚本 参考 http://blog.51cto.com/john88wang/1745339
环境 centos 7 python 2.7zabbix监控zookeeper脚本
1、imok 判断zookeeper服务是否正常 ./imok 返回1则为正常 返回10则不正常2、mntr 传单个的参数能获取到对应值
举例:
响应一个客户端请求的时间,建议这个时间大于10个Tick就报警 ./mntr zk_avg_latency 3、roles 判断当前zookeeper的角色 follower或 leader ./roles 如果leader 返回 2 如果 follower 返回1 这样方便显示在 zabbix图形界面