python监控MongoDB服务进程,故障钉钉告警
2024-04-22 17:01 ndzj 阅读(6) 评论(0) 编辑 收藏 举报
服务器1 xx.168.8x.77
#!/usr/bin/python
#! _*_ coding:utf-8 _*_
import os
import sys
import time
mongo_ip = '192.168.xx.77'
ports = ['x001','x002']
def port(ip,port):
response = os.popen("tcping %s %s|grep open|awk -F' ' '{print $4}'|cut -d'.' -f1" %(ip,port)).read().strip()
if response == 'open':
return response
else:
return 'port_fail'
def write_f(st):
with open('mongo_pd.txt', 'a') as file:
file.write(st)
file.close()
pdlist = []
for p in ports:
jg = port(mongo_ip,p)
pdlist.append(mongo_ip+':'+p+'-->'+jg+'\n')
unique_list = list(set(pdlist))
if os.path.exists('mongo_pd.txt'):
os.remove('mongo_pd.txt')
for din in unique_list:
if 'port_fail' in din:
write_f(din)
else:
write_f(din)
服务器2 x92.168.8x.83
#!/usr/bin/python
#! _*_ coding:utf-8 _*_
import os
import sys
import time
sshuser = 'root'
sshpassword = '12xxxxx'
ip = '1xx.168.x4.77'
pd_str = 'port_fail'
def dingding(ding_msg):
os.system("/usr/bin/curl https://oapi.dingtalk.com/robot/send?access_token=xb5ccxxxxxxxbbf1d7xxxx084xxxxxxe9b9ff968xxxxxxxxxx -H \"Content-Type: application/json\" -d \"{'msgtype': 'text', 'at': {'atMobiles': ['13xxx20xxx'], 'isAtAll': false}, 'text': {'content': \'%s\'}}\" " %(ding_msg))
#pd_str = 'open'
mongo_8x77_2port_status = os.popen('sshpass -p %s ssh %s@%s -o StrictHostKeyChecking=no "cat /data/jk_mongodb/8483_jk_8477mongodb/mongo_pd.txt" |grep %s'%(sshpassword,sshuser,ip,pd_str)).read().strip()
#print(mongo_8x77_2port_status)
if 'port_fail' in mongo_8x77_2port_status:
ding_msg = 'Yearning-pro_xx项目mongodb服务进程端口%s已经故障,请注意查看!!!'%(mongo_8x77_2port_status)
dingding(ding_msg)