Python如何实现对SQL Server数据文件大小的监控告警功能

  介绍

这篇文章将为大家详细讲解有关Python如何实现对SQL Server数据文件大小的监控告警功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

Python有哪些常用库

Python常用的库:1. requesuts; 2. scrapy; 3.枕头;4.扭曲;5. numpy; 6. matplotlib; 7. pygama; 8. ipyhton等。

1。需求背景

系统程序突然报错,报错信息如下:

数据库的事务日志& # 39;@dbname& # 39;已经满了。找出为什么空间日志中不能被重用,在系统看到log_reuse_wait_desc列。数据库

此时查看日志文件,已达2 t。

当时的紧急处理方案是,移除掉镜像,修改数据库恢复模式(由全修改为简单),收缩日志。

为了防止类似问题再次发生,需对日志文件的大小进行监控,当到达阈值后,触发告警。

2。主要基础组件(类)

配置文件qqmssqltest_db_server_conf。ini

同过此配置文件获取DB服务器信息,DB信息,UID信息,邮件服务器信息等。

[]状态"置疑"   db_user =XXXXXX   时间=db_pwd  XXXXXXX         (sqlserver_qq)   db_host =110.119.120.114   db_port =1433         (窗口)   时间=user    时间=pwd       (邮件)   host =zheshiceshidemail.qq.com   port =25   时间=user    时间=pwd    sender =, zhejiushiceshidebuyaodangzhen@qq.com

获取连接串的组件mssql_get_db_connect.py

#, - *安康;编码:utf-8  - * -         import 系统   import 操作系统   import  datetime   import  configparser   import  pymssql   #,pip3  install  pymssql-2.1.4-cp37-cp37m-win_amd64.whl   #,pip3  install  pymssql 小姐;https://pypi.doubanio.com/simple         #,获取连接串信息   def  mssql_get_db_connect (db_host, db_port):   ,,,db_host =db_host   ,,,db_port =db_port      ,,,db_ps_file =, os.path.join (sys.path [0],,“qqmssqltest_db_server_conf.ini")   ,,,config =, configparser.ConfigParser ()   ,,,config.read (db_ps_file,编码=皍tf-8")   ,,,db_user =, config.get (& # 39; sqlserver& # 39;,, & # 39; db_user& # 39;)   ,,,db_pwd =, config.get (& # 39; sqlserver& # 39;,, & # 39; db_pwd& # 39;)      ,,,conn =, pymssql.connect(主机=db_host,端口=db_port,用户=db_user,密码=db_pwd, charset=皍tf8",, login_timeout=5,,超时=600,,autocommit=True)      ,,,return 康涅狄格州

执行SQL语句的组件mysql_exec_sql。py

#, - *安康;编码:utf-8  - * -      import  mysql_get_db_connect         def  mysql_exec_dml_sql (db_host, db_port,, exec_sql):   ,,,conn =, mysql_get_db_connect.mysql_get_db_connect (db_host, db_port)   ,,,with  conn.cursor (), as  cursor_db:   ,,,,,,,cursor_db.execute (exec_sql)   ,,,,,,,conn.commit ()         def  mysql_exec_select_sql (db_host, db_port,, exec_sql):   ,,,conn =, mysql_get_db_connect.mysql_get_db_connect (db_host, db_port)   ,,,with  conn.cursor (), as  cursor_db:   ,,,,,,,cursor_db.execute (exec_sql)   ,,,,,,,sql_rst =, cursor_db.fetchall ()      ,,,return  sql_rst      def  mysql_exec_select_sql_include_colnames (db_host, db_port,, exec_sql):   ,,,conn =, mysql_get_db_connect.mysql_get_db_connect (db_host, db_port)   ,,,with  conn.cursor (), as  cursor_db:   ,,,,,,,cursor_db.execute (exec_sql)   ,,,,,,,sql_rst =, cursor_db.fetchall ()   ,,,,,,,col_names =cursor_db.description   ,,,return  sql_rst,, col_names

发邮件的功能send_monitor_mail。py

#, - *安康;编码:utf-8  - * -         #,pip3  install  PyEmail   import  smtplib   得到email.mime.text  import  MIMEText   import  configparser   import 操作系统   import 系统         #,发送告警邮件   def  send_monitor_mail (mail_subject, mail_body,, mail_receivers=皌estwukongbaigujing@qq.com"):   ,,,db_ps_file =, os.path.join (sys.path [0],,“qqmssqltest_db_server_conf.ini")   ,,,config =, configparser.ConfigParser ()   ,,,config.read (db_ps_file,编码=皍tf-8")   ,,,mail_host =, config.get(& # 39;邮件# 39;,,& # 39;主机# 39;)   ,,,mail_port =, config.get(& # 39;邮件# 39;,,& # 39;港口# 39;)   ,,,#,mail_user =, config.get(& # 39;邮件# 39;,,& # 39;用户# 39;)   ,,,#,mail_pwd =, config.get(& # 39;邮件# 39;,,& # 39;pwd # 39;)   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

Python如何实现对SQL Server数据文件大小的监控告警功能