设为首页 收藏本站
查看: 619|回复: 0

[经验分享] Python监控Apache,MySQL

[复制链接]

尚未签到

发表于 2015-8-3 09:21:43 | 显示全部楼层 |阅读模式
  基于上次的程序修改了,添加了检查Apache服务器的功能。
  import MySQLdb
import sys
import os
import time
import smtplib
import socket
#该程序用于检测MySQL数据库服务器、Apache服务器是否正常服务,服务器当机的话会往目的邮箱发送一封邮件
#使用说明:
#1:在服务器数据库上建立数据库test1(可以不含任何表)
#2:使用“python monitor.py 用户名 密码 Apache服务器IP地址 端口”调用该程序,如果用户名为root,密码为sa,IP为211.87.xxx.xxx,,端口8080。则为python monitor.py root sa 211.87.xxx.xxx 8080
#也可以使用python monitor.py 用户名 密码来调用,但是需要将程序末尾的默认IP地址和默认端口修改为要监听的服务器
#3:可通过修改sleep_time来改变监测周期,单位为秒
  sleep_time=60
ISOTIMEFORMAT='%Y-%m-%d %X'#时间格式
def conn(user,pwd):
     try:
         conn=MySQLdb.connect(host='localhost',user=user,passwd=pwd,db='test1')
         return 1
     except:
         return 0
def send(content):
     mail_server='smtp.gmail.com'     #邮件服务器,这里使用gmail
     try:
         s=smtplib.SMTP(mail_server)
         s.starttls()
         s.login('****','*****')#用户名和密码,如果test@gmail.com密码为111.则为s.login('test','111')
         s.sendmail('wangfabo1986@gmail.com','wangfabo1986@gmail.com',content)#参数为发送者,接受者,消息
         s.quit
         print "mail have sended!"
     except:
         print "mail send error!"
  def check_server(address,port,content):
     s=socket.socket()
     #print "attemping to connect to %s on port %s"%(address,port)
     try:
         s.connect((address,port))
s.send("GET Tomcat HTTP/1.1\r\nHost:211.87.233.233\r\n\r\n")#使用Tomcat服务器测试的,可能需要修改里面内容!!!!!!!!!!!!!
         s.recv(200)
         print "Apache Server connect successed!  "+ time.strftime( ISOTIMEFORMAT, time.localtime() )
         return content
     except socket.error,e:
         print "Apache Server connect failed!  "+ time.strftime( ISOTIMEFORMAT, time.localtime() )
         return content+"Apache server crashes! "
  
def check_DB(user,pwd,content):
     if conn(user,pwd)==1:
print 'DB Server is OK!  '+ time.strftime( ISOTIMEFORMAT, time.localtime() )
         return ''
     else:
print 'DB Server crashes!  '+ time.strftime( ISOTIMEFORMAT, time.localtime() )
return content+'DB server crashes! '
     
def monitor(user,pwd,address,port):
     havesend=0
     content=''
     while True:
time.sleep(sleep_time)
lastcontent=content
content=''
         content=check_DB(user,pwd,content)
         content=check_server(address,port,content)
contentChanged=(not content==lastcontent) and (not content=='')
         if not content=='':
             if havesend==0 or contentChanged:
                 send(content)
                 havesend=1
             else:
                 continue
         else:
             continue
         
      
if __name__=="__main__":
     if (not len(sys.argv)==3)&(not len(sys.argv)==5):
         print '''usage:DBusername DBpassword Apache_address Apache_port  or
         DBusername DBpassword(with default Apache address)
         '''
         sys.exit(1)
     user=sys.argv[1]
     pwd=sys.argv[2]
     if len(sys.argv)==5:
         address=sys.argv[3]
         port=sys.argv[4]
     else:
         address="211.87.***.***"#默认IP地址,可能需要修改
         port=8080                #默认端口地址,可能需要修改
     os.system('cls')
     print "开始监测.....!!!"
     monitor(user,pwd,address,port)

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-93532-1-1.html 上篇帖子: apache ci 的404设置 下篇帖子: php,mysql,apache整合
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表