python監控mysql主從指令碼
閒來無事寫了個python監控mysql主從的指令碼,算是記錄學習python階段性的一個實戰吧!
#coding=utf-8
import MySQLdb
import smtplib
from email.mime.text import MIMEText
#定義一個發郵件函式
def mail(sub,content):
mailto_list=["hzwuj@tairanchina.com"]
mail_host="smtp.tairanchina.com"
mail_uer="trcloud@tairanchina.com"
mail_pass="123456"
message = MIMEText(content,_charset='utf-8')
message['Subject'] = sub
message['From']=mail_uer
message['To'] = ";".join(mailto_list)
try:
s = smtplib.SMTP()
s.connect(mail_host)
s.login(mail_uer,mail_pass)
s.sendmail(mail_uer, mailto_list, message.as_string())
s.close()
return True
except Exception:
print 'filed'
return False
#連線mysql資料庫
conn=MySQLdb.connect(host='172.30.249.57',port=3306,user='root',passwd='Welcome1>')
cursor1=conn.cursor()
cursor1.execute("show slave status")
rows=cursor1.fetchall()
#獲取主從同步資訊
try:
for list in rows:
Master_Host=list[1]
Master_Log_File=list[5]
Read_Master_Log_Pos=list[6]
Relay_Master_Log_File=list[9]
Exec_Master_Log_Pos=list[21]
Slave_IO_Running=list[10]
Slave_SQL_Running=list[11]
Seconds_Behind_Master=list[32]
Last_IO_Errno=list[34]
Last_IO_Error=list[35]
Last_SQL_Errno=list[36]
Last_SQL_Error=list[37]
#判斷主從複製資訊,對出現異常的資訊發郵件告警
if Slave_IO_Running=='No' or Slave_SQL_Running=='No' :
mail('主從故障',"Master_Host:'%s' Last_IO_Errno:'%s' Last_IO_Error:'%s' Last_SQL_Errno:'%s' Last_SQL_Error:'%s'" %(Master_Host,Last_IO_Errno,Last_IO_Error,Last_SQL_Errno,Last_SQL_Error))
elif Seconds_Behind_Master>600:
mail('主從延遲',"Master_Host:'%s' Master_Log_File:'%s' Read_Master_Log_Pos:'%s' Relay_Master_Log_File:'%s'"
" Exec_Master_Log_Pos:'%s' Seconds_Behind_Master:'%s'" %(Master_Host,Master_Log_File,Read_Master_Log_Pos,Relay_Master_Log_File,Exec_Master_Log_Pos,Seconds_Behind_Master))
else:
print '從庫正常'
except:
mail('連線異常','連線不上資料庫')
#coding=utf-8
import MySQLdb
import smtplib
from email.mime.text import MIMEText
#定義一個發郵件函式
def mail(sub,content):
mailto_list=["hzwuj@tairanchina.com"]
mail_host="smtp.tairanchina.com"
mail_uer="trcloud@tairanchina.com"
mail_pass="123456"
message = MIMEText(content,_charset='utf-8')
message['Subject'] = sub
message['From']=mail_uer
message['To'] = ";".join(mailto_list)
try:
s = smtplib.SMTP()
s.connect(mail_host)
s.login(mail_uer,mail_pass)
s.sendmail(mail_uer, mailto_list, message.as_string())
s.close()
return True
except Exception:
print 'filed'
return False
#連線mysql資料庫
conn=MySQLdb.connect(host='172.30.249.57',port=3306,user='root',passwd='Welcome1>')
cursor1=conn.cursor()
cursor1.execute("show slave status")
rows=cursor1.fetchall()
#獲取主從同步資訊
try:
for list in rows:
Master_Host=list[1]
Master_Log_File=list[5]
Read_Master_Log_Pos=list[6]
Relay_Master_Log_File=list[9]
Exec_Master_Log_Pos=list[21]
Slave_IO_Running=list[10]
Slave_SQL_Running=list[11]
Seconds_Behind_Master=list[32]
Last_IO_Errno=list[34]
Last_IO_Error=list[35]
Last_SQL_Errno=list[36]
Last_SQL_Error=list[37]
#判斷主從複製資訊,對出現異常的資訊發郵件告警
if Slave_IO_Running=='No' or Slave_SQL_Running=='No' :
mail('主從故障',"Master_Host:'%s' Last_IO_Errno:'%s' Last_IO_Error:'%s' Last_SQL_Errno:'%s' Last_SQL_Error:'%s'" %(Master_Host,Last_IO_Errno,Last_IO_Error,Last_SQL_Errno,Last_SQL_Error))
elif Seconds_Behind_Master>600:
mail('主從延遲',"Master_Host:'%s' Master_Log_File:'%s' Read_Master_Log_Pos:'%s' Relay_Master_Log_File:'%s'"
" Exec_Master_Log_Pos:'%s' Seconds_Behind_Master:'%s'" %(Master_Host,Master_Log_File,Read_Master_Log_Pos,Relay_Master_Log_File,Exec_Master_Log_Pos,Seconds_Behind_Master))
else:
print '從庫正常'
except:
mail('連線異常','連線不上資料庫')
注:Seconds_Behind_Master是理論上顯示了備庫的延遲,但由於某些原因,並不總是準確的值。這裡暫且用這個列資料!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29989552/viewspace-2130147/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Shell指令碼監控MySQL主從狀態指令碼MySql
- 轉:MySQL主從、字典死鎖、連線數的Python監控指令碼MySqlPython指令碼
- mysql監控指令碼MySql指令碼
- Mysql 主從延時監控MySql
- LINUX主機監控指令碼Linux指令碼
- mysql 主從錯誤以及監控MySql
- mysql 的一個監控指令碼,監控heartbeatMySql指令碼
- mysql mon 的一個監控指令碼,監控heartbeatMySql指令碼
- 常用的主機監控shell指令碼指令碼
- 7. 監控MySQL主從狀態MySql
- 指令碼監控MySQL伺服器指令碼MySql伺服器
- nagios監控linux主機監控記憶體指令碼iOSLinux記憶體指令碼
- 我常用的主機監控Shell指令碼指令碼
- 用zabbix監控mysql的主從複製MySql
- 監控mysql索引使用效率的指令碼MySql索引指令碼
- 監控指令碼指令碼
- zabbix應用-監控mysql slave 主從狀態MySql
- shell指令碼:監控MySQL服務是否正常指令碼MySql
- MySQL 5.6大查詢和大事務監控指令碼(Python 2)MySql指令碼Python
- DBA監控指令碼指令碼
- session指令碼監控Session指令碼
- 埠監控指令碼指令碼
- oracle 監控指令碼Oracle指令碼
- 用python指令碼監控併發量Python指令碼
- listener監聽監控指令碼指令碼
- Mysql 主從延時監控(pt-heartbeat)詳解MySql
- mysql主從同步(4)-Slave延遲狀態監控MySql主從同步
- 【SQL監控】SQL完全監控的指令碼SQL指令碼
- shell指令碼:監控MySQL服務是否正常薦指令碼MySql
- 5.6 MySql主從自動切換指令碼MySql指令碼
- 網路卡流量監控指令碼,python實現指令碼Python
- ogg監控指令碼指令碼
- stap監控IO指令碼指令碼
- 【shell】磁碟監控指令碼指令碼
- Docker 快速搭建主從 + 哨兵監控Docker
- PostgreSQL之鎖監控指令碼SQL指令碼
- Oracle DBA常用監控指令碼Oracle指令碼
- memcached程式埠監控指令碼指令碼