|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
小知识:CentOS是一个基于RedHatLinux提供的可自由使用源代码的企业级Linux发行版本。
对体系日记的检讨和数据库日记的检讨很主要,涌现成绩实时的告诉体系治理员更加主要,本剧本用python写的监控剧本,重要是为zabbix监控自界说的key而预备的,固然人人也能够在前往值方面做修正,可以在写个发邮件的模块,做个准时,有成绩主动发邮件(在之前写过一个发邮件的类,人人可以做参考:http://wangwei007.blog.51cto.com/68019/978743)。在zabbix中自界说key来检测体系日记和数据库日记:
UnsafeUserParameters=1
UserParameter=check.sys_error,/usr/local/zabbix/bin/chk_err_log.pysyslog
UserParameter=check.mysql_error,/usr/local/zabbix/bin/chk_err_log.pymysqllog
本剧本合适一台办事器多实例的mysql毛病日记检测,也实用于单个示例的检测,依据本身的需求做修正。
- #!/usr/bin/envpython#encoding=utf-8importos,sysdefchk_err(log_file,tmp_file,type,print_list,port):cur_num=int(os.popen("sudogrep%s|wc-l"%log_file).read().strip())old_num=0ifos.path.exists(tmp_file):old_num=int(open(tmp_file).read().strip())ifcur_num<old_num:os.popen("echo0>%s"%tmp_file)old_num=0else:os.popen("echo0>%s"%tmp_file)err_log=os.popen("sudogrep-nierror%s"%log_file).readlines()iferr_log:err_list=[]forerrinerr_log:ifint(err.split(":")[0])>old_num:err_list.append(err[len(err.split(":")[0])+1:])iferr_list:os.popen("echo%s>%s"%(err_log[-1].split(":")[0],tmp_file))print_list.append(port)defchk_err_log(type):try:print_list=[]homedir="/home/zabbix"ifnotos.path.exists(homedir):os.mkdir(homedir)iftype=="syslog":log_file="/var/log/messages"tmp_file="%s/.syslog_num"%homedircur_num=int(os.popen("sudogrep%s|wc-l"%log_file).read().strip())old_num=0ifos.path.exists(tmp_file):old_num=int(open(tmp_file).read().strip())ifcur_num<old_num:os.popen("echo0>%s"%tmp_file)old_num=0else:os.popen("echo0>%s"%tmp_file)err_log=os.popen("sudogrep-nierror%s|grep-vsnmpd|grep-vsftp"%log_file).readlines()ifnoterr_log:return"0"err_list=[]forerrinerr_log:ifint(err.split(":")[0])>old_num:err_list.append(err[len(err.split(":")[0])+1:])ifnoterr_list:return"0"else:os.popen("echo%s>%s"%(err_log[-1].split(":")[0],tmp_file))return"1"eliftype=="mysqllog":psinfo=os.popen("psauxww|grepmysqld|grep-vroot|grep-vgrep").readlines()ifnotpsinfo:return"Nomysqldrunninginthisservernow"foriinpsinfo:port="0"forjini.split("--"):ifj.find("datadir")!=-1:datadir=j.split("=")[1].strip()elifj.find("port")!=-1:port=j.split("=")[1].strip()ifport=="0":continueifport=="3306":log_file="%s/$(hostname).err"%datadirelse:log_file="%s/mysql.err"%datadirtmp_file="%s/.mysqllog_%s"%(homedir,port)chk_err(log_file,tmp_file,type,print_list,port)iflen(print_list)==0:return"0"else:returnprint_listexceptException,e:returneif__name__=="__main__":printchk_err_log(sys.argv[1])
复制代码
小知识:退一万步讲,即使CentOS项目终结,正在运行它的企业也可以很轻松的转移到另一个企业Linux的克隆版。 |
|