介绍
这篇文章将为大家详细讲解有关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 nullPython如何实现对SQL Server数据文件大小的监控告警功能