仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 650|回复: 7
打印 上一主题 下一主题

[CentOS(社区)] 来一发python监控单台多实例数据库办事器的数据库端口

[复制链接]
小女巫 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-14 21:05:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
小知识:CentOS商业化干掉红帽才是出路?
比来公司做数据库的单台办事器多实例,须要对各个数据库的过程停止监控,由于我们的资产数据库中曾经有这个办事器跑若干个实例,端口是甚么,用来做甚么的,所以就拿资产数据库的端口和办事器当地运转的数据库端口停止比较,报出没有运转的mysql实例和他的用处。一种办法是依据"psauxww|grepmysqld|grep-vroot|grep-vgrep"这个敕令抓取当地运转的数据库端口,不外你也能够依据netstat敕令来获得当地数据库实例的一切端口;还有一种办法就是从资产中获得这个办事器应当运转的一切mysql端口,用python的socket模块来检测端口能否存活,这类办法比拟简略一些。我用第一种办法是由于我的这段代码我曾经写过用于其他用处,等于复用,图个省事。以下是代码内容:
  1. #!/bin/envpython#-*-coding:utf-8-*-importos,sys,MySQLdbdefcenter(sql):#衔接数据库try:center_ip=192.168.1.100center_user=rootcenter_passwd=xxxxxxconn=MySQLdb.connect(host=center_ip,user=center_user,passwd=center_passwd,charset=utf8,connect_timeout=20)cursor=conn.cursor()cursor.execute(sql)alldata=cursor.fetchall()cursor.close()conn.close()returnalldataexcept:return0classcheck_port():#走资产中获得当地IP中应当有若干个mysql实例端口def__init__(self):conn="ipa|grepglob|grep-v192.168|awk{print$2}"self.host=os.popen(conn).readlines()[0].split("/")[0]defremot(self):sql="SELECTPORTFROMcenter.host_infoWHEREflag=1ANDdel_info!=0ANDip=%sANDhost_nameIN(a,b,c)"%self.hostalldata=center(sql)cent_port=[]ifalldata!=0:foriinalldata:cent_port.append(str(i[0]))returncent_portelse:returncent_portdeflocal(self):#获得当地mysql有若干个实例运转psinfo=os.popen("psauxww|grepmysqld|grep-vroot|grep-vgrep").readlines()local_port=[]ifnotpsinfo:returnlocal_portforiinpsinfo:forjini.split("--"):ifj.find("port")!=-1:port=j.split("=")[1].strip()local_port.append(port)returnlocal_portdefmain(self):local_port=self.local()cent_port=self.remot()cent_port.sort()local_port.sort()iflocal_port==cent_portandlen(local_port)!=0andlen(cent_port)!=0:print0else:error=""diff_list=list(set(local_port)^set(cent_port))forportindiff_list:sql="SELECTCONCAT(a.main_name,_,b.sub_name,_,c.app_name,_,c.port)ASusedFROMcenter_app.main_categorya,center_app.sub_categoryb,center_app.app_infocWHEREa.id=b.main_idANDb.dist_id=c.dist_idANDb.main_id=c.main_idANDb.main_id=2ANDc.flag=1ANDc.del_info!=0ANDc.ip=%sandc.port=%s"%(self.host,port)alldata=center(sql)iferror=="":error=error+alldata[0][0]else:error=error+";"+alldata[0][0]printerrorif__name__=="__main__":boss=check_port()boss.main()
复制代码

假如用第二种办法的话,很简略,用上面的函数可以完成这个端口测试:
  1. ipmortsocketdeftest_port()s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)s.settimeout(2)address=127.0.0.1port=80try:s.connect((address,port))returnTrueexceptException,e:returnFalses.close()
复制代码

小知识:如果说Ubuntu是现今最受桌面用户欢迎的Linux操作系统,那么CentOS就是最受公司、企业、IDC喜爱的Linux发行版了。
山那边是海 该用户已被删除
沙发
发表于 2015-1-16 23:43:58 | 只看该作者

来一发python监控单台多实例数据库办事器的数据库端口

其次,Linux简单易学,因为我们初学者只是学的基础部分,Linux的结构体系非常清晰,再加上老师循序渐进的教学以及耐心的讲解,使我们理解起来很快,短期内就基本掌握了操作和运行模式。
飘飘悠悠 该用户已被删除
板凳
发表于 2015-1-24 14:43:22 | 只看该作者
熟悉并掌握安装Linux,安装是学习的前提。目前较常见的安装方法有二种:
精灵巫婆 该用户已被删除
地板
发表于 2015-2-1 18:14:50 | 只看该作者
硬盘安装及光盘安装,清楚了解安装Linux应注意的有关问题,如安装Linux应在最后一个分区内,至少分二个分区。
柔情似水 该用户已被删除
5#
发表于 2015-2-7 14:43:47 | 只看该作者
一定要学好命令,shell是命令语言,命令解释程序及程序设计语言的统称,shell也负责用户和操作系统之间的沟通。
海妖 该用户已被删除
6#
发表于 2015-2-22 20:10:58 | 只看该作者
如果你想深入学习Linux,看不懂因为文档实在是太难了。写的最好的、最全面的文档都是英语写的,最先发布的技术信息也都是用英语写的。
兰色精灵 该用户已被删除
7#
发表于 2015-3-7 05:39:54 | 只看该作者
学习Linux,应该怎样学,主要学些什么,一位Linux热心学习者,一段学习Linux的风云经验,历时十二个小时的思考总结,近十位网络Linux学习者权威肯定,为您学习Linux指明方向。
爱飞 该用户已被删除
8#
发表于 2015-3-14 15:21:34 | 只看该作者
一些显而易见的小错误还是用vi改正比较方便。以后的大一点的程序就得在Linux下调试了,因为有的头文件在VC里面说找不到。?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-14 14:30

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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