监控ELK集群状态python脚本
[root@elk-s1 ~]# vim /etc/zabbix/zabbix_agentd.d/els_status.py
#!/usr/bin/env python
#coding:utf-8
#Author xuanlv
import subprocess
false="false"
obj = subprocess.Popen(("curl -sXGET http://10.20.3.128:9200/_cluster/health?
pretty=true"),shell=True, stdout=subprocess.PIPE)
data = obj.stdout.read()
data1 = eval(data)
status = data1.get("status")
if status == "green":
print "100"
else:
print "50"
授权
[root@elk-s1 ~]# chmod a+x /etc/zabbix/zabbix_agentd.d/els_status.py
监控Redis列表长度脚本
[root@redis ~]# cat /etc/zabbix/zabbix_agentd.d/redis_llen.py
#!/usr/bin/env python
#coding:utf-8
#Author xuanlv
import redis
def redis_conn():
pool=redis.ConnectionPool(host="10.20.0.252",port=6379,db=0)
conn = redis.Redis(connection_pool=pool)
data = conn.llen('api4-nginx-accesslog')
print(data)
redis_conn()
授权
[root@redis ~]# chmod a+x /etc/zabbix/zabbix_agentd.d/redis_llen.py
监控MongodbDB复制集状态
[root@redis ~]# cat /etc/zabbix/zabbix_agentd.d/mongodb_cluster_monitor.py
#!/bin/env python
#coding:utf-8
#Author: xuanlv
import subprocess
success_list = []
error_list= []
def get_mongodb_status():
obj = subprocess.Popen(("echo 'rs.status()' | /usr/local/mongodb/bin/mongo -u user -p wswd --authenticationDatabase admin
| grep health | awk -F':' '{print $2}' | awk -F',' '{print $1}'"),shell=True,
stdout=subprocess.PIPE)
restful = obj.stdout.read()
data = restful.split()
for i in data:
if i == "1":
success_list.append(i)
else:
error_list.append(i)
def count_status():
if len(error_list) > 0:
print 100
else:
print 50
def main():
get_mongodb_status()
count_status()
if __name__ == "__main__":
main()
授权
[root@redis ~]# chmod a+x /etc/zabbix/zabbix_agentd.d/redis_llen.py
kubernetes 集群状态监控脚本
[root@kubernetes-master1 ~]# cat /etc/zabbix/zabbix_agentd.d/k8s_monitor.py
#!/usr/bin/env python
#coding:utf-8
#Author xuanlv
import subprocess
success_list = []
error_list= []
def get_status():
obj = subprocess.Popen(("curl -sXGET http://10.20.15.209:8080/api/v1/nodes"),shell=True, stdout=subprocess.PIPE)
data = obj.stdout.read()
data1 = eval(data)
data2 = data1.get('items')
#print data2
for i in data2:
data3 = i.get('status')
for i in data3.get('conditions'):
if i.get('reason') == 'KubeletReady':
if i.get('type') == "Ready":
if i.get('status') == 'True':
success_list.append(i.get('status'))
elif i.get('status') == 'False':
error_list.append(i.get('status'))
else:
break
else:
error_list.append(i.get('status'))
#pass
else:
error_list.append(i.get('status'))
def count_status():
if len(error_list) == 0:
print 50
else:
print 100
def main():
get_status()
count_status()
if __name__ == "__main__":
main()
授权
[root@kubernetes-master1 ~]# chmod a+x /etc/zabbix/zabbix_agentd.d/k8s_monitor.py
监控RabbitMQ集群节点状态
python脚本
[root@zabbix-web02 ~]# cat /etc/zabbix/zabbix_agentd.d/rabbit_cluster_monitor.py
#!/bin/env python
#coding:utf-8
#Author: xuanlv
import subprocess
running_list = []
error_list = []
false="false"
true="true"
def get_status():
obj = subprocess.Popen(("curl -sXGET -u guest:guest http://10.20.3.171:15671/api/nodes"),shell=True, stdout=subprocess.PIPE)
data = obj.stdout.read()
data1 = eval(data)
for i in data1:
if i.get("running") == "true":
running_list.append(i.get("name"))
else:
error_list.append(i.get("name"))
def count_server():
if len(running_list) < 3: #可以判断错误列表大于0或者运行列表小于3,3未总计的节点数量
print 100 #100就是集群内有节点运行不正常了
else:
print 50 #50为所有节点全部运行正常
def main():
get_status()
count_server()
if __name__ == "__main__":
main()
授权
[root@zabbix-web02 ~]# chmoa a+x /etc/zabbix/zabbix_agentd.d/rabbit_cluster_monitor.py